neuron-explorer
Qwen3.5‑4B 전용 조향형 뉴런 탐색기, 모든 MLP 뉴런을 밀어 결과를 보관·탐색
AI 지원 CAD 설계를 위한 Solid Edge MCP 서버, 모델 생성·분석·수정·내보내기
Solid Edge MCP server for AI-assisted CAD design - create, analyze, modify, and export models
개발 도구PythonGitHub @tylerwagler직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
설치형 프로젝트는 배포 도메인 없이도 확인할 수 있습니다. 개인 저장소는 GitHub 로그인으로, 조직 저장소는 위의 저장소 확인 파일로 직접 확인해 주세요.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
AI-assisted CAD through the Model Context Protocol. Create, analyze, modify, and export Solid Edge models from Claude or any MCP client.
119 tools · 53 resources + 2 guides · 4 prompts · Windows only (COM automation) · MITREADME 전문 보기 ↗AI-assisted CAD through the Model Context Protocol. Create, analyze, modify, and export Solid Edge models from Claude or any MCP client.
119 tools · 53 resources + 2 guides · 4 prompts · Windows only (COM automation) · MIT
Every number here is measured, and reference/VERIFICATION_STATUS.md carries the commands that regenerate it.
create_* backend methods verify their own result. The body's face count and volume, or the COM collection the feature lands in, must change; otherwise the call reports an error instead of status: "created". A call that succeeds and builds nothing was this server's defining bug, and it can no longer pass silently.unsupported: True with the evidence: a Solid Edge defect, a call that crashes the process, or an object only the UI can select. Each is listed with its evidence in the status document. The largest groups are swept and lofted surfaces, threads on an existing cylinder, ordered flanges and louvers, contour flanges, blends, wires, and assembly patterns and mirrors.scripts/live_sweep.py records the outcome of all 119 in reference/LIVE_SWEEP.md: 116 OK, 16 honest refusals and 2 deliberate error probes across 134 cases on Solid Edge 2026.git clone https://github.com/tylerwagler/SolidEdge-MCP
cd SolidEdge-MCP
uv sync --all-extras
Claude Code: copy examples/claude_code.mcp.json to .mcp.json in your project (or run claude mcp add solidedge -- uv --directory C:/path/to/SolidEdge-MCP run solidedge-mcp).
Claude Desktop: merge examples/claude_desktop_config.json into your claude_desktop_config.json.
Both examples use:
{
"mcpServers": {
"solidedge": {
"command": "uv",
"args": ["--directory", "C:/path/to/SolidEdge-MCP", "run", "solidedge-mcp"]
}
}
}
Restart the client, then ask it to connect to Solid Edge.
| Variable | Effect |
|---|---|
SOLIDEDGE_MCP_LOG_LEVEL | DEBUG, INFO, WARNING (default), ERROR. Logs go to stderr. |
SOLIDEDGE_MCP_DEBUG | 1 forces DEBUG logging and includes Python tracebacks in error results. |
uv --directory C:/path/to/SolidEdge-MCP run solidedge-mcp in a terminal and read stderr.manage_connection(action="connect") first. If Solid Edge was restarted, call it again; the server drops the dead connection and reattaches.The server publishes these in its MCP instructions and in two resources, solidedge://guide/workflows and solidedge://guide/conventions:
{"error": ...} means failure. COM failures carry hresult.create_sketch → draw_* → close_sketch → create_extrudeTools carry MCP annotations (readOnlyHint, destructiveHint) and tags (part, assembly, draft, sheet_metal, query, export, app, document, sketch, diagnostics) so clients can filter the manifest.
src/solidedge_mcp/
├── server.py # FastMCP instance: instructions, registration
├── managers.py # Global backend manager instances
├── prompts/ # Server instructions, guides, prompt templates
├── tools/ # MCP surface: one module per area, register() each
│ ├── _registry.py # register_tool/register_resource: COM thread + annotations
│ ├── features/ # 50 feature tools split by family
│ ├── resources.py # 53 read-only solidedge:// resources
│ └── guide.py # solidedge://guide/* resources
└── backends/ # pywin32 COM automation
├── connection.py # attach/start Solid Edge, liveness + reconnect
├── com_thread.py # single STA worker thread all COM calls run on
├── errors.py # com_error -> readable error dicts
├── documents.py # create/open/save; tracks document switches
├── sketching.py # 2D profiles
├── features/ # 3D features (mixin package)
├── assembly/ # assembly operations (mixin package)
├── query/ # interrogation (mixin package)
├── export/ # export, drafting, views (mixin package)
└── constants.py # Solid Edge enum values
Every tool and resource is marshalled onto one COM worker thread (CoInitializeEx STA), because FastMCP otherwise runs synchronous tools on a thread pool and COM proxies are apartment-bound.
uv sync --all-extras
uv run pytest # unit tests (mocked COM); integration tests deselected
uv run pytest -m integration # needs a running, licensed Solid Edge
uv run pytest --cov # coverage
uv run ruff check . && uv run ruff format --check .
uv run mypy src/
CI runs lint, format, type check, and unit tests on windows-latest for pushes to master and every pull request. That is a weak gate: the COM audits skip when the gitignored type-library dump is absent, and no runner has Solid Edge, so the audits, pytest -m integration and scripts/live_sweep.py run only on a machine that does. Run them before tagging a release.
Unit tests mock COM with objects that answer to any attribute, so a misspelled member or a wrong argument count passes them and only fails against real Solid Edge. Six checks close that gap using the scraped type libraries, and four more need none:
uv run python scripts/audit_com_signatures.py --by-file
uv run python scripts/audit_com_signatures.py --filter backends/features/_holes.py
uv run python scripts/audit_com_receivers.py
uv run python scripts/audit_com_writes.py
uv run python scripts/audit_com_hasattr.py
uv run python scripts/audit_reported_writes.py
uv run python scripts/audit_com_enum_args.py
uv run python scripts/audit_dead_params.py
tests/unit/test_constants_typelib.py verifies every COM enum value in constants.py. tests/unit/test_com_members.py fails on any COM member name absent from the type libraries. tests/unit/test_com_receivers.py goes further: it infers what each receiver is by following declared types and fails when a member is read off an interface that does not have it, which is invisible to a name check when the name is real somewhere else. tests/unit/test_com_writes.py covers the other direction: a write to a member that is a method, or to a property the type library marks read-only. Solid Edge answers "Property 'Item.X' can not be set." and a try/except around it turns the dead feature into a reported success. All skip when the dump is missing, so a fresh clone and CI stay green.
Four checks need no type library. tests/unit/test_reported_writes.py fails when a COM write is swallowed by a suppress and the value is then reported as applied -- the shape behind most of the silent no-ops found in this codebase, from text heights that never changed to a variable rename that reported "not found". tests/unit/test_com_hasattr.py fails on hasattr used to test what a COM proxy can do: the probe reads False both for a member that is absent and for one whose getter raised, which is how every layer call came to refuse draft documents, whose layers live on the sheet rather than the document. tests/unit/test_manager_mro.py fails when two mixins define the same method on a manager, which leaves one of them unreachable.
tests/unit/test_dead_params.py fails when a parameter is declared and never read, in a tool or a backend method. Nothing downstream can catch that: Solid Edge is never told the value, so it has nothing to reject, and the call returns a cheerful success. Three shipped that way -- a component position that always placed at the origin, a table position Solid Edge chose for itself, and a revolve axis setting nothing consulted. A parameter that genuinely has nowhere to go says so with del <param>.
scripts/scrape_typelibs.py regenerates reference/typelib_dump.json (gitignored, ~20 MB) from the installed Solid Edge type libraries. reference/typelib_summary.md is the committed digest. scripts/manual/ holds hand-run COM experiments; they are not tests.
MIT