https://github.com/gtnoble/ngspice-mcp
An MCP server for interfacing with the ngspice circuit simulator
https://github.com/gtnoble/ngspice-mcp
Last synced: 2 months ago
JSON representation
An MCP server for interfacing with the ngspice circuit simulator
- Host: GitHub
- URL: https://github.com/gtnoble/ngspice-mcp
- Owner: gtnoble
- Created: 2025-04-06T16:51:43.000Z (7 months ago)
- Default Branch: master
- Last Pushed: 2025-04-13T18:55:14.000Z (7 months ago)
- Last Synced: 2025-04-13T19:46:46.526Z (7 months ago)
- Language: D
- Size: 66.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-mcp-servers - **ngspice-mcp** - An MCP server for interfacing with the ngspice circuit simulator `d` `mcp` `server` `git clone https://github.com/gtnoble/ngspice-mcp` (📦 Other)
- awesome-mcp-servers - **ngspice-mcp** - An MCP server for interfacing with the ngspice circuit simulator `d` `mcp` `server` `git clone https://github.com/gtnoble/ngspice-mcp` (Other)
README
# ngspice-mcp
A Model Context Protocol (MCP) server that provides access to ngspice circuit simulation functionality through a standardized protocol interface. This server enables AI language models to interact with ngspice in a controlled and structured way.
## Features
- Integration with ngspice's shared library interface
- Standardized MCP protocol implementation
- Synchronous operation with structured data access
- Comprehensive output capture and redirection
- Vector data handling with multiple representation formats
- Support for both server and library usage modes
- Built-in test suite
## Requirements
- D compiler (DMD/LDC)
- ngspice shared library
- MCP server library (d-mcp-server)
- D build system (dub)
## Installation
1. Ensure system requirements are installed
2. Clone the repository
3. Build using dub:
```bash
dub build --config=server
```
## Usage
The server can be started with:
```bash
./ngspice-mcp [options]
```
### Command Line Options
- `--working-dir`, `-d`: Set the working directory for circuit files (default: current directory)
### Available Tools
#### Circuit Loading
- `loadCircuit`: Load circuit netlists directly
- `loadNetlistFromFile`: Load netlists from files
Example netlist:
```spice
RC Circuit
R1 in out 1k
C1 out 0 1u
.end
```
#### Simulation
- `runSimulation`: Execute simulation commands
Common commands:
- `op`: DC operating point
- `dc source start stop step`
- `ac dec points fstart fend`
- `tran step tstop`
#### Data Access
- `getPlotNames`: List available simulation plots
- `getVectorNames`: List vectors in a specific plot
- `getVectorData`: Retrieve vector data with options for:
- Magnitude-phase representation
- Rectangular (real-imaginary) representation
- Both representations
- Optional interval selection
### Resources
- `stdout://`: Standard output stream from ngspice
- `stderr://`: Error output stream from ngspice
- `usage://`: Comprehensive usage guide
## Development
### Project Structure
```
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
```
### Build Configurations
1. **Server Mode**
```bash
dub build --config=server
```
2. **Library Mode**
```bash
dub build --config=library
```
3. **Unit Tests**
```bash
dub test --config=unittest
```
### Testing
Run the test suite:
```bash
dub test
```
Tests cover:
- ngspice bindings
- Server functionality
- Tool validation
- Resource handling
- Error cases
## Technical Details
### Architecture
The server implements several key components:
1. **NgspiceServer**: Core server implementation
- Tool registration and handling
- Resource management
- Output stream capture
- Vector data processing
2. **Output System**
- Stdout/stderr capture
- Stream buffering
- Resource notification
3. **Vector Processing**
- Complex number handling
- Scientific notation formatting
- Interval selection
- Multiple representation formats
### Database System
- Model parameter storage
- Efficient indexing and querying
- Transaction support
- Concurrent access handling
## License
MIT License - see [dub.json](dub.json) for details.
Copyright © 2024, Garret Noble
## Contributing
Contributions are welcome! Please ensure:
1. Code follows project style and standards
2. Tests are included for new functionality
3. Documentation is updated as needed
4. Commit messages are clear and descriptive