电路仿真协议服务

一个通过标准化协议接口提供ngspice电路仿真功能的MCP服务器,使AI语言模型能够以受控和结构化的方式与ngspice交互。

  • by gtnoble
  • D
  • 本地部署
  • 19 星标
  • 更新于
在 GitHub 查看 gtnoble/ngspice-mcp

使用说明

新香料mcp

一种模型上下文协议(MCP)服务器,通过标准化的协议接口提供对ngspice电路仿真功能的访问。该服务器使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 Circuit
R1 in out 1k
C1 out 0 1u
.end

模拟

  • runSimulation:执行模拟命令

常用命令:

  • op:直流工作点
  • 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           # Main application
│   ├── bindings/       # ngspice C API bindings
│   ├── database/       # SQLite database handling
│   ├── parser/         # Netlist parsing
│   └── server/         # MCP server implementation
├── resources/          # Resource files
└── bin/               # Build outputs

生成配置

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

测试

运行测试套件:

dub test

测试包括:

  • ngspice绑定
  • 服务器功能
  • 工具验证
  • 资源处理
  • 错误案例

技术细节

建筑

服务器实现了几个关键组件:

  1. NgspiceServer:核心服务器实施

    • 工具登记和处理
    • 资源管理
    • 输出流捕获
    • 矢量数据处理
  2. 输出系统

    • Stout/stderr捕获
    • 流缓冲
    • 资源通知
  3. 矢量处理

    • 复数处理
    • 科学符号格式
    • 间隔选择
    • 多种表示格式

数据库系统

  • 模型参数存储
  • 高效的索引和查询
  • 交易支持
  • 并发访问处理

许可证

MIT许可证-请参阅 翻译.json 了解详情。

版权所有©2024,加勒特·诺布尔

贡献

欢迎投稿!请确保:

  1. 代码遵循项目风格和标准
  2. 包括新功能的测试
  3. 根据需要更新文档
  4. 提交消息清晰且具有描述性