article
README
🚀 ngspice-mcp 服务器
ngspice-mcp 服务器是一个提供访问 ngspice 电路仿真功能的模型上下文协议 (MCP) 服务器。它通过标准化协议接口实现 AI 语言模型与 ngspice 的交互,让交互过程更加结构化和受控。
✨ 主要特性
- 接口集成:集成 ngspice 共享库接口。
- 协议实现:实现 MCP 协议标准版本。
- 同步操作:同步操作,数据访问结构化。
- 输出捕获:全面捕获输出及重定向。
- 向量处理:处理向量数据,支持多种表示格式。
- 模式支持:支持服务器模式和库模式使用。
- 测试套件:内置测试套件。
📦 安装指南
系统要求
- D 编译器 (DMD/LDC)
- ngspice 共享库文件
- MCP 服务器库 (d-mcp-server)
- D 构建系统 (dub)
安装步骤
- 安装系统必备组件。
- 克隆代码仓库。
- 使用 dub 进行构建:
dub build --config=server
💻 使用示例
基础用法
服务器启动命令:
./ngspice-mcp [options]
命令行选项
--working-dir,-d: 设置电路文件的工作目录(默认:当前目录)
可用工具
电路加载
loadCircuit: 直接加载电路网表。loadNetlistFromFile: 从文件中加载网表。
示例网表:
RC 回路
R1 in out 1k
C1 out 0 1u
.end
模拟运行
runSimulation: 执行仿真命令。
常见命令包括:
op: DC 工作点dc source start stop stepac dec points fstart fendtran step tstop
数据访问
getPlotNames: 列出可用的仿真图形。getVectorNames: 获取特定图形中的向量名称。getVectorData: 检索向量数据,支持:- 幅度 - 相位表示
- 实部 - 虚部表示
- 同时显示两种表示方式
- 可选区间选择
资源访问
stdout://: 标准输出流来自 ngspice。stderr://: 错误输出流来自 ngspice。usage://: 全面的使用指南。
📚 详细文档
开发细节
项目结构
ngspice-mcp/
├── source/
│ ├── app.d # 主程序文件
│ ├── bindings/ # ngspice C API 绑定
│ ├── database/ # SQLite 数据库处理
│ ├── parser/ # 网表解析器
│ └── server/ # MCP 服务器实现
├── resources/ # 资源文件
└── bin/ # 构建输出目录
构建配置
- 服务器模式
dub build --config=server
- 库模式
dub build --config=library
- 单元测试
dub test --config=unittest
测试方法
运行测试套件:
dub test
测试覆盖范围包括:
- ngspice 绑定验证
- 服务器功能测试
- 工具可用性测试
- 数据处理正确性评估
技术细节
系统架构
该系统主要由以下几个关键组件构成:
- 主程序 (app.d)
- 负责接收和解析用户输入命令。
- 初始化相关服务模块。
- 协调各组件间的通信。
- ngspice 绑定 (bindings/)
- 封装 ngspice 动态库接口。
- 提供高阶函数方便调用仿真功能。
- 处理与原生代码的交互。
- 数据库处理 (database/)
- 管理仿真的输入输出数据。
- 保存和检索历史结果。
- 执行复杂的数据查询操作。
- 网表解析器 (parser/)
- 解析电路网表文件格式。
- 验证语法正确性。
- 提供抽象的电路表示模型。
- 服务器实现 (server/)
- 实现 MCP 协议接口。
- 处理客户端连接和请求。
- 提供远程调用服务支持。
数据库系统
数据库模块负责管理仿真过程中的数据,主要功能包括:
- 数据存储
- 将电路配置、参数及结果持久化到 SQLite 数据库。
- 支持事务处理确保数据一致性。
- 数据查询
- 提供灵活的查询条件组合。
- 支持复杂的数据关联分析。
- 优化常用查询路径性能。
- 数据处理
- 执行必要的数据转换和计算。
- 管理数据的有效期和版本控制。
- 处理历史数据的归档和清理。
使用说明
- 安装依赖
dub fetch d-mcp-server ngspice
- 构建项目
dub build --config=server
- 运行示例
./ngspice-mcp --working-dir examples/
- 访问接口
- HTTP 接口:
http://localhost:8080 - gRPC 接口:
localhost:50051
- HTTP 接口:
🤝 贡献指南
欢迎贡献代码和文档!
- 提交 bug 修复。
- 增加新功能。
- 完善测试用例。
- 改进文档说明。
请按照以下步骤进行贡献:
- Fork 项目仓库。
- 创建新的功能分支。
- 提交代码更改。
- 提交 Pull Request。
📄 许可证
本项目遵循 MIT License。
📞 联系方式
有问题或建议请联系:
- 邮件:contact@ngspice-mcp.com
- GitHub:https://github.com/yourusername/ngspice-mcp
感谢使用 ngspice-mcp 服务器!
Scan to contact