ltspice-mcp
저장소 출처: 이 공개 통합 포크는 업스트림
cognitohazard/ltspice-mcp태그v0.5.0(커밋4dc456000e1a436ef37a585c23ab35954a8caf04e)을 기반으로 합니다. 이 브랜치의 추가 사항은 설치와 무관한 배포 예제와 문서를 제공합니다. 업스트림 서버 소스는 수정되지 않았습니다.
ltspice-mcp
작업 진행 중. 핵심 기능은 사용할 수 있지만 미숙한 부분과 호환성이 깨지는 변경이 있을 수 있습니다.
LLM 어시스턴트(Claude 및 기타 모든 MCP 클라이언트)를 실제 회로 시뮬레이션에 연결하는 MCP 서버입니다: LTspice와 ngspice, 그리고 LTspice .asc 스키매틱의 직접 편집을 지원합니다. 시뮬레이션 결과는 구조화된 숫자로 반환됩니다 — 차단 주파수, 오버슈트, 위상 여유, 상승 시간, 그리고 이름으로 읽어오는 소자별 소신호 동작점 파라미터(gm, gds, vth, …) — 따라서 어시스턴트는 rawfile을 직접 파싱할 필요 없이 LTspice에서 여는 것과 동일한 파일에서 회로를 설계, 검증, 반복할 수 있습니다. spicelib 기반으로 구축되었습니다.
빠른 시작
Claude Code에서 플러그인을 설치합니다:
/plugin marketplace add cognitohazard/ltspice-mcp
/plugin install ltspice-mcp또한 호스트에 LTspice 또는 ngspice가 필요합니다(Windows, Linux, macOS에서 자동 감지됨; WSL에서는 LTspice 경로를 명시적으로 설정 — WSL 참고). 회로 편집은 시뮬레이터 없이도 작동합니다. uv가 필요하며, 서버 자체는 첫 사용 시 PyPI에서 가져옵니다.
수동 설치(모든 MCP 클라이언트)
서버를 설치한 다음 클라이언트가 이를 가리키도록 설정합니다:
uv tool install ltspice-mcp # or: pip install ltspice-mcp / pipx install ltspice-mcpClaude Code — 한 줄 명령(-s project를 빼면 전역으로 설치):
claude mcp add -s project ltspice -- ltspice-mcp기타 클라이언트 — Claude Desktop, Cursor, Windsurf, Gemini CLI, Continue, Cline, Zed 등 — 클라이언트의 MCP 구성 파일에 다음 mcpServers 스탠자를 추가합니다(각 클라이언트가 자체 경로를 문서화함):
{
"mcpServers": {
"ltspice": { "command": "ltspice-mcp", "args": [] }
}
}Python 3.11+ 필요. ltspice-mcp --help로 확인하세요. 동일한 서버는 circuit-mcp 및 ngspice-mcp라는 두 개의 별칭 이름으로도 게시되므로, uvx circuit-mcp / uvx ngspice-mcp는 uvx ltspice-mcp의 대체 명령으로 사용할 수 있습니다. 더 알아보기 쉬운 이름이 있다면 그 중 하나를 사용하세요.
웹 클라이언트(claude.ai, ChatGPT)는 mcp-proxy와 같은 stdio→HTTP 브리지가 필요합니다 — 이 서버는 allowed_paths 내에서 파일을 쓰고 프로세스를 생성하므로 완전히 통제하는 네트워크에서만 노출하세요.
Claude Desktop 확장도 제공됩니다: packaging/mcpb/에서 .mcpb를 빌드하여 Claude Desktop에 끌어다 놓으면 회로 디렉토리를 선택하는 기본 폴더 선택기와 함께 원클릭 설치가 가능합니다. 플러그인과 마찬가지로 PyPI 패키지를 래핑하며 호스트에 uv와 시뮬레이터가 필요합니다(LTspice나 ngspice를 번들하지 않음).
Related MCP server: ltspice-mcp
사용 방법
연결되면 일반 언어로 회로 작업을 요청합니다. 어시스턴트가 회로를 설계하고 측정할 항목을 결정합니다; 서버는 시뮬레이터를 실행하고, 바이너리 출력을 파싱하여 숫자를 반환합니다. 실행 결과와 시뮬레이터 자체의 경고를 보고하며, 결과가 좋은지 여부에 대한 판단은 사용자와 어시스턴트에게 맡깁니다.
"이 NMOS 공통 소스 단을 목표 드레인 전류에서 포화 영역으로 바이어스하고 gm/ID를 보고하세요."
어시스턴트는 넷리스트를 작성하고, LTspice에서 바이어스 포인트를 해석하고, 소자의 동작점을 이름으로 읽어옵니다 — 드레인 전류, gm, gds, 포화 여부를 확인하기 위한 VDS 대 VDSAT, 그리고 아날로그 설계자가 크기를 정할 때 사용하는 gm/ID. 바이어스가 맞지 않으면 게이트 기준 전압이나 W/L을 조정하고 다시 실행하며, 패스당 몇 초가 걸립니다.
같은 방식으로 작동하는 다른 요청:
"이 레귤레이터의 스텝 응답에서 오버슈트와 정착 시간은 얼마인가요?" — 과도 해석을 실행하고 파형에서 둘 다 측정하며, 상승 시간, 링잉 주파수, 최종 값도 측정합니다.
"5% 저항으로 200회 몬테카를로를 실행하고 출력 분포를 알려주세요." — 실행마다 부품을 변동시키고, 배치를 시뮬레이션하고, 측정값별 평균, 시그마, 최악의 경우 값을 보고합니다.
"부하를 100 Ω에서 10 kΩ으로 스윕하고 효율이 떨어지는 지점을 찾으세요." — 실행별 결과가 포함된 파라미터 스윕.
"이 NMOS를 특성화하세요: VGS에 따른 gm과 gm/ID." —
.save @m1[gm] @m1[id]가 포함된.dc Vgs덱을 작성하고, ngspice에서 실행하고, gm/ID 테이블을 단일 CSV로 반환합니다(.control블록이나 rawfile 파싱 없음)."로우사이드 스위치용 N채널 파워 MOSFET을 찾고 온 상태 전압 강하를 측정하세요." — 로드된 라이브러리에서 부품을 검색하고(
find_model), 펄스 게이트 과도 해석에 넣고,.meas결과에서 Vds(on)과 부하 전류를 읽어옵니다."이 차동 쌍을 LTspice에서 열 수 있는 스키매틱으로 만들어 주세요." — 직교 라우팅과 핀 충돌 검사로 실제
.asc에 부품을 배치하고 배선합니다."이 루프는 안정적인가요?" — 루프 이득의 AC 해석; 첫 번째 크로스오버뿐만 아니라 모든 크로스오버에서 위상 및 이득 여유를 보고합니다.
"이 직렬 RLC의 공진 주파수와 Q는 얼마인가요?" — AC 스윕을 실행하고 각 피크의 중심 주파수, Q, −3 dB 대역폭을 보고합니다.
경고는 영향을 주는 숫자와 함께 전달됩니다. ngspice와 같은 시뮬레이터는 열어보지 않을 로그 깊숙한 곳에 "singular matrix"를 한 번 출력한 다음, 실행을 마치고 그럴듯한 숫자를 그대로 쓸 수 있습니다 — 직접 읽어보면 아무 문제가 없어 보입니다. 서버에 그 숫자 중 하나를 요청하면 묻혀 있던 줄이 값 바로 옆의 observations 필드에 첨부되어 반환되므로, 실패는 지나치기 쉬운 곳이 아니라 이미 보고 있는 곳에서 드러납니다.
동일한 파일에서의 공동 설계
모든 작업은 일반 LTspice 및 SPICE 파일에서 이루어지므로, 작업이 채팅 안에 갇히지 않고 사용자와 어시스턴트 사이를 오갑니다:
LTspice에서 스키매틱을 스케치한 다음 넘겨주세요: "바이어스 포인트가 어떻게 되나요?", "출력이 왜 움직이지 않나요?", "보상을 추가하고 위상 여유를 확인해 주세요."
또는 반대로: 어시스턴트가 회로를 설계하고 검증한 다음
.asc를 작성합니다; 사용자는 LTspice에서 열어 검사하고 직접 수정합니다. 수동 편집은 단순히 파일의 새 상태가 되며, 어시스턴트는 다음 요청에서 그 상태부터 이어갑니다.설계 중간에 변경 사항이 어느 방향으로든 흐를 수 있습니다: GUI에서 값을 조정하고 재검증을 요청하거나, 확정하기 전에 고려 중인 변경 사항을 어시스턴트가 스윕하도록 할 수 있습니다.
기능
시뮬레이션 및 측정. LTspice 또는 ngspice를 실행하고 바이너리 출력을 직접 파싱합니다. 측정값은 서버 측에서 계산되어 숫자로 반환됩니다: 시간 영역(상승/하강, 오버슈트, 정착, 지연, 주기/듀티/지터, RMS, THD), 주파수 영역(필터 차단 주파수와 롤오프, 임의 주파수에서의 이득과 위상, 안정성 여유, Q를 포함한 공진 피크, 통합 노이즈), DC 동작점, 그리고 실패한 것을 포함한 .MEAS 지시문 결과. 소자별 소신호 동작점 파라미터(gm, gds, vth, …)는 두 시뮬레이터 모두에서 이름으로 반환됩니다 — LTspice는 로그에 자동 추가된 .options logopinfo 블록을 통해, ngspice는 .save @dev[param] 트레이스를 통해. .dc 스윕 전체에서 export_waveform으로 gm/ID 테이블로 읽거나, operating_point로 단일 바이어스 포인트를 읽을 수 있습니다(m1.gm / @m1[gm]으로 지정, rawfile 파싱 없음).
스키매틱 및 넷리스트 편집. 실제 LTspice .asc 파일을 생성하고 편집합니다 — 부품 배치, 핀 배선, 넷 레이블 — 쓰기 전에 검증이 수행됩니다: 핀과 충돌하거나, 접합과 겹치거나, 대각선으로 흐르는 배선은 거부되며, 모든 편집은 플로팅 핀이나 매달린 레이블에 대한 경고를 반환합니다. 세션의 편집 내용은 되돌릴 수 있습니다. 일반 넷리스트(.cir/.net)도 텍스트 수준에서 동일한 작업을 지원하며, 시뮬레이션을 소모하기 전에 잘못된 카드를 잡아내는 정적 검증 패스를 추가로 제공합니다.
스윕 및 몬테카를로. 다차원 파라미터 스윕과 부품별 공차, .MODEL 공정 변동, Pelgrom W·L 소자 불일치를 포함한 몬테카를로. 측정별 통계가 실행 전체에서 집계되며, 개별 실행을 꺼내 독립 실행 시뮬레이션처럼 분석할 수 있습니다.
작업 및 신뢰. 시뮬레이션은 타임아웃과 동시성 상한이 있는 취소 가능한 작업으로 실행됩니다; 긴 실행은 즉시 작업 ID를 반환하며 작업 상태는 서버 재시작 후에도 유지됩니다. 결과는 사실을 보고하지 판단을 내리지 않습니다: 완료된 실행에는 시뮬레이터 자체의 경고, 결과를 생성하지 못한 측정값, 극단적인 노드 값이 구조화된 관찰로 포함됩니다. 결과의 신뢰성 판단은 이를 읽는 모델에게 맡겨집니다.
지원되는 시뮬레이터
시뮬레이터 | 상태 |
LTspice | 기본. Windows 네이티브, WSL2(interop을 통한 Windows LTspice.exe), Wine을 통한 Linux. |
ngspice | 일급 지원: 시뮬레이션, 파싱, 진단, 분석. LTspice 설치가 필요 없는 오픈소스 경로. |
QSPICE, Xyce | 지원되지만 보조적. |
구성
기본값으로 바로 작동합니다. 사용자 지정하려면 ltspice-mcp.example.toml을 ltspice-mcp.toml로 복사하세요; 모든 설정은 LTSPICE_MCP_ 접두사가 붙은 환경 변수로 재정의할 수 있으며, --config PATH 또는 LTSPICE_MCP_CONFIG로 파일을 선택합니다. 주요 옵션:
[simulator]
default = "ltspice" # ltspice, ngspice, qspice, xyce (null = auto-detect)
path = "" # explicit executable path (required on WSL)
ngbehavior = "hsa" # ngspice compat mode; unset = spicelib default, "hsa" fixes sectioned .lib corner select
[security]
allowed_paths = ["."] # sandbox: only these directories are accessible
[simulation]
max_parallel = 4
timeout = 300.0 # seconds
[tools]
profile = "full" # or "agentic"
[state]
persist_jobs = true전체 옵션 목록은 src/ltspice_mcp/config.py를 참조하세요([analysis], [schematic], [logging], ...).
WSL에서 LTspice.exe는 Windows interop을 통해 실행되며(Wine 아님), spicelib는 WSL 경계를 넘어 자동 감지할 수 없습니다. Windows 쪽 경로를 명시적으로 설정하세요:
[simulator]
path = "/mnt/c/Program Files/ADI/LTspice/LTspice.exe"시뮬레이션 출력은 자동으로 Windows 임시 디렉토리로 리디렉션됩니다: LTspice의 .MEAS 결과는 UNC 경로(\\wsl.localhost\...)에서 실패하는 SQLite .db 파일을 거치며, 리디렉션이 없으면 측정 데이터가 로그에서 조용히 사라집니다.
.asc 편집용 .asy 심볼 경로는 Windows와 WSL에서 자동 감지됩니다; [schematic] symbol_paths 또는 LTSPICE_MCP_SYMBOL_PATHS로 재정의하세요.
도구 프로필
프로필 | 도구 | 사용 사례 |
| 49 | 모든 MCP 클라이언트, 자동화, 비에이전트 LLM |
| 41 | 네이티브 파일 액세스(읽기/편집/쓰기)가 있는 LLM 에이전트 |
agentic 프로필은 넷리스트 편집 래퍼와 라이브러리 세션 관리를 제거합니다 — 유능한 에이전트가 직접 파일 편집으로 수행하는 작업 — 그리고 시뮬레이션 수명 주기, 바이너리 .raw 파싱, 배치 오케스트레이션, .asc 지오메트리 도구를 유지합니다. skills/ 디렉토리(skills/ltspice/SKILL.md, skills/ngspice/SKILL.md)에는 이와 함께 사용되는 도메인 지식이 포함되어 있습니다: 해당 스킬을 클라이언트의 영구 지시사항 위치에 복사하세요.
실행 위치. 서버는 로컬 LTspice/ngspice를 호출하고 디스크에서 회로 파일을 읽으므로, 시뮬레이터와 파일이 있는 곳에서 실행되어야 합니다. 두 가지 구성이 가능합니다: 자신의 머신에서 실행되는 로컬 MCP 호스트(Claude Desktop, Claude Code, Cursor, Gemini CLI, Codex 등), 또는 샌드박스에 ngspice를 설치하고 서버를 등록할 수 있는 브라우저 기반 클라우드 에이전트(Claude로 검증됨)입니다. LTspice는 로컬 전용(Windows 앱)이며, ngspice는 오픈소스로 두 환경 모두에서 작동합니다. 샌드박스가 없는 일반 웹 채팅에는 시뮬레이터도 파일 접근도 없으므로 이 서버를 직접 실행할 수 없습니다. 해당 UI를 사용하려면 직접 제어하는 머신에 연결(예: mcp-proxy)하세요.
내부 동작: 도구 수준 루프
어시스턴트가 "1 kHz RC 저역 통과 필터를 설계하고 검증"하기 위해 실제로 수행하는 작업입니다. 넷리스트를 작성합니다(R=1k, C=159.155n → fc = 1 kHz):
* rc.cir — RC low-pass
V1 in 0 AC 1
R1 in out 1k
C1 out 0 159.155n
.ac dec 50 1 1Meg
.end그런 다음 세 가지 도구를 구동합니다:
validate_netlist(path="rc.cir")
→ OK: directives valid, element arities check out — safe to simulate
run_simulation(netlist="rc.cir")
→ {"job_id": "sim_a3f1", "status": "completed", "raw_file": ".../rc.raw", ...}
bode_metrics(raw_file=".../rc.raw", signal="V(out)", mode="filter")그리고 플롯이 아닌 스칼라 값을 반환받습니다:
{
"signal": "V(out)",
"filter_type": "lowpass",
"passband_gain_db": 0.0,
"passband_ripple_db": 0.02,
"cutoff_low_hz": null,
"cutoff_high_hz": 1000.4,
"stopband_rejection_db": 59.97,
"rolloff_slope_db_per_decade": -19.9,
"estimated_order": 1,
"warnings": []
}(요약본 — 전체 응답에는 통과 대역 경계와 천이 대역폭도 포함됩니다)
목표에서 벗어나면 → set_component_value, 재실행, 재측정. 긴 시뮬레이션은 차단 대신 작업 ID를 반환하며, check_job/cancel_job이 이를 관리합니다. 작업 메타데이터는 회로별 사이드카({dir}/.ltspice-mcp/jobs/ — .gitignore에 .ltspice-mcp/를 추가하세요)에 유지되며, MCP 리소스(spice://results/..., spice://netlists/..., spice://config)는 작업, 신호, 측정값, 구성을 탐색할 수 있게 노출합니다.
모든 도구는 MCP 어노테이션(readOnlyHint, destructiveHint, idempotentHint, openWorldHint)을 선언하며, 데이터를 반환하는 도구는 structuredContent 인트로스펙션을 위한 outputSchema를 선언합니다.
Tool | 설명 |
| 콘텐츠 문자열에서 새 넷리스트 생성 |
| 증분 편집에 사용할 빈 |
| 회로 파일 읽기( |
| 컴포넌트 나열(선택적 접두사 필터) 또는 참조로 하나 조회 |
| 컴포넌트 값 하나 설정 또는 |
| 모든 |
| SPICE 지시문 추가/제거( |
| 컴포넌트 추가; 핀 위치, 경계 상자, 겹침 경고 반환 |
| 웨이포인트 라우팅으로 두 핀을 참조로 연결; 핀 충돌, 접합, 대각선 검증 |
| 심볼 핀 위치, 방향, 경계 상자, 설명 |
| 배치된 컴포넌트 핀 위치, 경계 상자, 속성 |
| LTspice를 통해 |
| 시뮬레이션 전 넷리스트 또는 회로도에 대한 정적 사전 점검 |
| 핀/라벨/와이어가 있는 모든 핀/ |
|
|
| 두 회로 파일 간 구조적 diff |
| 한 트랜잭션에서 많은 |
| 시뮬레이션 실행 — 짧은 실행은 동기, 긴 실행은 비동기(작업 ID); 배치 플래그 설정, ngspice 헤더리스-raw 방언 처리, raw/로그 아티팩트 라우팅, 수렴/시간 초과 오류 표면화(rawfile 수동 파싱 없음) |
| ID로 작업 상태 확인 또는 모든 작업 나열 |
| 실행 중인 시뮬레이션 또는 배치 취소; 시뮬레이터 프로세스 종료 |
| 최소, 최대, 평균, RMS, 피크-투-피크(AC의 경우 dB/위상) |
| 창에 걸친 신호의 데시메이션된 최소/최대 통계 엔벨로프 — 형태를 본 다음 더 좁은 창을 다시 요청하여 확대 |
| 하나 이상의 신호를 디스크로 전체 정밀도 CSV 내보내기(모든 분석 유형; |
| 대화형 HTML 차트(과도 / DC / Bode 이중 패널 |
| 특정 시간/주파수에서의 신호 값(또는 장치 동작점 매개변수, |
| DC 동작점: 모든 노드 전압, 분기 전류, 장치별 동작점 매개변수(gm/gds/vth/…) LTspice(자동 |
| 전체 요약: 시뮬레이션 유형, 신호, 측정, 경고 |
| 하나의 과도 엣지에 대한 상승/하강 시간 및 슬루율 |
| 스텝 응답에 대한 오버슈트, 언더슈트, 정착 시간 |
| 두 과도 신호 사이의 전파 지연 |
| 진동 신호의 주기, 주파수, 듀티 사이클, 지터 |
| FFT를 통한 주기적 과도 신호의 총 고조파 왜곡(THD/THD+N); 정확한 결과를 위한 코히어런트 샘플링; 모든 조건 표면화 |
| 스윕 또는 몬테카를로 실행에 걸친 집계 |
|
|
| 루프 이득 안정성: 모든 단위 이득 / -180° 교차점과 교차별 마진 |
| AC 피크와 Q 계수 및 피크당 -3 dB 대역폭 |
| AC 응답의 극/영점 구조: 순차, 코너 범위 + Q, 비최소위상 / RHP-영점, 전송 지연(인간 검토용 사실) |
|
|
| 다중 매개변수 스윕(선형 또는 로그) 구성 |
| 구성된 스윕 실행(비동기, 작업 ID 반환) |
| 몬테카를로 구성: 허용 오차, |
| 구성된 몬테카를로 분석 실행(비동기, 작업 ID 반환) |
| 스윕/MC 작업 진행, 신호별 통계 또는 실행별 데이터 |
| 이름으로 모델 후보 찾기(기본 퍼지, |
|
|
| 이전에 로드된 라이브러리 언로드 |
| 로드된 라이브러리 나열, 선택적으로 모델 이름 포함 |
| 감지된 시뮬레이터, 구성, 샌드박스 경로, 런타임 상태 |
| 영구 인덱스에서 최근 사용된 회로 및 작업 |
개발
uv sync # install runtime + dev dependencies
uv run pytest tests/ -v # tests
uv run pyright # type checking
uv run ruff check src/ tests/ # lint
uv run ltspice-mcp # run the server (stdio)더 보기: docs/DESIGN.md (범위, 아키텍처, 비목표) 및 docs/spice_lex.md (SPICE 파서 내부).
라이선스
GPL-3.0
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceAI-powered circuit design through simulation — an MCP server that gives language models direct access to SPICE circuit simulation via ngspice, enabling natural language circuit description and automated netlist generation, simulation, measurement, and spec verification.2828GPL 3.0
- FlicenseCqualityDmaintenanceMCP server for automating LTspice on macOS, enabling simulation, schematic generation, data extraction, verification, and rendering via natural language or agents.7115
- AlicenseNot gradedqualityBmaintenanceThis MCP server enables agents to control LTspice on macOS for running simulations, generating schematics, extracting data, and automating verification workflows.MIT
- AlicenseAqualityBmaintenanceAn MCP server that connects LLM assistants to real circuit simulation: LTspice and ngspice, plus direct editing of LTspice .asc schematics. Simulation results come back as structured numbers so the assistant can design, verify, and iterate on circuits.4826GPL 3.0
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ossenna-hq/MCP_LTSpice'
If you have feedback or need assistance with the MCP directory API, please join our Discord server