返回 MCP 目录
public公开dns本地运行

ngspice-mcp

ngspice-mcp是一个基于MCP协议的服务器,为AI语言模型提供标准化接口访问ngspice电路仿真功能,支持电路加载、仿真执行和数据获取等操作。

article

README

🚀 ngspice-mcp 服务器

ngspice-mcp 服务器是一个提供访问 ngspice 电路仿真功能的模型上下文协议 (MCP) 服务器。它通过标准化协议接口实现 AI 语言模型与 ngspice 的交互,让交互过程更加结构化和受控。

✨ 主要特性

  • 接口集成:集成 ngspice 共享库接口。
  • 协议实现:实现 MCP 协议标准版本。
  • 同步操作:同步操作,数据访问结构化。
  • 输出捕获:全面捕获输出及重定向。
  • 向量处理:处理向量数据,支持多种表示格式。
  • 模式支持:支持服务器模式和库模式使用。
  • 测试套件:内置测试套件。

📦 安装指南

系统要求

  • D 编译器 (DMD/LDC)
  • ngspice 共享库文件
  • MCP 服务器库 (d-mcp-server)
  • D 构建系统 (dub)

安装步骤

  1. 安装系统必备组件。
  2. 克隆代码仓库。
  3. 使用 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 step
  • ac dec points fstart fend
  • tran 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/               # 构建输出目录

构建配置

  1. 服务器模式
dub build --config=server
  1. 库模式
dub build --config=library
  1. 单元测试
dub test --config=unittest

测试方法

运行测试套件:

dub test

测试覆盖范围包括:

  • ngspice 绑定验证
  • 服务器功能测试
  • 工具可用性测试
  • 数据处理正确性评估

技术细节

系统架构

该系统主要由以下几个关键组件构成:

  1. 主程序 (app.d)
    • 负责接收和解析用户输入命令。
    • 初始化相关服务模块。
    • 协调各组件间的通信。
  2. ngspice 绑定 (bindings/)
    • 封装 ngspice 动态库接口。
    • 提供高阶函数方便调用仿真功能。
    • 处理与原生代码的交互。
  3. 数据库处理 (database/)
    • 管理仿真的输入输出数据。
    • 保存和检索历史结果。
    • 执行复杂的数据查询操作。
  4. 网表解析器 (parser/)
    • 解析电路网表文件格式。
    • 验证语法正确性。
    • 提供抽象的电路表示模型。
  5. 服务器实现 (server/)
    • 实现 MCP 协议接口。
    • 处理客户端连接和请求。
    • 提供远程调用服务支持。

数据库系统

数据库模块负责管理仿真过程中的数据,主要功能包括:

  1. 数据存储
    • 将电路配置、参数及结果持久化到 SQLite 数据库。
    • 支持事务处理确保数据一致性。
  2. 数据查询
    • 提供灵活的查询条件组合。
    • 支持复杂的数据关联分析。
    • 优化常用查询路径性能。
  3. 数据处理
    • 执行必要的数据转换和计算。
    • 管理数据的有效期和版本控制。
    • 处理历史数据的归档和清理。

使用说明

  1. 安装依赖
dub fetch d-mcp-server ngspice
  1. 构建项目
dub build --config=server
  1. 运行示例
./ngspice-mcp --working-dir examples/
  1. 访问接口
    • HTTP 接口:http://localhost:8080
    • gRPC 接口:localhost:50051

🤝 贡献指南

欢迎贡献代码和文档!

  • 提交 bug 修复。
  • 增加新功能。
  • 完善测试用例。
  • 改进文档说明。

请按照以下步骤进行贡献:

  1. Fork 项目仓库。
  2. 创建新的功能分支。
  3. 提交代码更改。
  4. 提交 Pull Request。

📄 许可证

本项目遵循 MIT License

📞 联系方式

有问题或建议请联系:


感谢使用 ngspice-mcp 服务器!

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端