solidworks-api-mcp
Health Uyari
- No license — Repository has no license file
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 9 GitHub stars
Code Basarisiz
- process.env — Environment variable access in server/solidworks_mcp_server.ts
- exec() — Shell command execution in server/store.ts
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
Model Context Protocol (MCP) server for the SOLIDWORKS API. Gives AI assistants (Claude, Cursor) instant ranked search and exact lookups across 14,000+ methods, properties, enums, and examples.
SolidWorks API MCP Server
TypeScript MCP server that gives an AI assistant search and lookup access to the SolidWorks API documentation corpus in this repository: about 14,000 documented interfaces, methods, properties, enums and programming-guide examples.
Features
- Relevance-ranked search over the whole corpus. Understands API names (
SelectByID2,IModelDocExtension.SelectByID2), descriptions (how do I create an extrusion feature) and word variants. See Search. - Exact lookup of interface members, enum values, related members and examples, with case-insensitive names.
- Helpful failures: a miss returns "did you mean" suggestions and, for members, the interfaces that actually declare them.
- Discovery tools to list docsets and interface/enum names.
- Compact responses: search hits omit noisy keyword lists unless asked (
verbose), and everylimitis capped so one call can't flood the client's context. - Stdio transport (
stdin/stdout), MCP protocol versions2025-06-18,2025-03-26and2024-11-05negotiated automatically (JSON-RPC batches accepted for the older versions).
Runtime and Tooling
- Runtime: Bun + TypeScript
- Tests: Vitest; type checking:
tsc - Bun-only JavaScript tooling:
bun install,bun run <script>,bunx <tool>
Quick Start
bun install
bun run start
Data Root
By default the server reads from <repo>/solidworks-api. Override with SW_API_DATA_ROOT:
$env:SW_API_DATA_ROOT = "C:\path\to\solidworks-api"
bun run start
The server exits with an error if the data root does not exist.
Client Configuration
Claude Desktop (claude_desktop_config.json), Windows example:
{
"mcpServers": {
"solidworks-api": {
"command": "bun",
"args": ["run", "C:\\path\\to\\solidworks-api-mcp\\server\\solidworks_mcp_server.ts"]
}
}
}
Claude Code:
claude mcp add solidworks-api -- bun run C:\path\to\solidworks-api-mcp\server\solidworks_mcp_server.ts
Restart the client after changing its configuration.
Tools
All tools are read-only. Names are case-insensitive. Bad arguments are reported as tool errors (isError) that name the offending field.
| Tool | Purpose |
|---|---|
solidworks_search_api |
Ranked search by keywords, description or API name. Filters: docset, type (method, property, interface, enum, pattern), interface, categories; limit (default 10, max 50); verbose. |
solidworks_lookup_method |
Full documentation page for interface + member (markdown or JSON). |
solidworks_get_interface_members |
Names of all members of an interface. |
solidworks_get_enum_values |
Members, values and descriptions of an enum such as swSelectType_e. |
solidworks_find_related |
"See also" members for an interface member (limit default 20, max 100). |
solidworks_get_examples |
Example code for a member, or a search of the programming-guide examples (limit default 10, max 50). |
solidworks_list_docsets |
Available docsets (sldworksapi, swconst, progguide) with interface and enum counts. |
solidworks_list_names |
Interface or enum names in a docset, with an optional substring filter (limit default 100, max 1000). |
Failed lookups return { "error": "Not found", "message": ..., "suggestions": [...] }, plus declared_on when the member exists on other interfaces. Unknown docsets return { "error": "Unknown docset", "available": [...] }; a search that comes back empty because of one carries a note saying so. Document paths in results are relative to the data root.
Search
Ranking is a field-weighted BM25 over identifier-aware terms (server/search.ts):
- Identifiers are split on case and digit boundaries (
SelectByID2becomesselect,id,2) and also kept whole, so exact API names outrank their fragments. - Filler words are ignored, words are lightly stemmed, and longer words and a few domain synonyms (
extrusion/extrude,document/doc,save/export, ...) match at reduced weight. - An identifier also matches its numbered versions (
FeatureExtrusionfindsFeatureExtrusion3), and stopwords next to a word are tried as part of an identifier, sosave asfindsSaveAs3. - Members whose documentation marks them obsolete (about a fifth of the corpus) rank below current ones.
- A one-word query that is a member name ranks exact matches first (current before obsolete); one that names a concept (
sketch) ranks its interface (ISketch) first.
The index is built in memory from _search_index.json right after the client's initialized notification, so the first query does not pay for it.
Development
bun run test # vitest
bun run typecheck # tsc --noEmit
Ranking is regression-tested against the real corpus in tests/search.test.ts; tests/protocol.test.ts also drives the server over stdio.
Project Structure
solidworks-api-mcp/
|- server/
| |- solidworks_mcp_server.ts JSON-RPC/MCP protocol, entry point
| |- tools.ts tool definitions and handlers
| |- schema.ts tool argument validation
| |- search.ts ranking engine
| |- store.ts data store (indexes, paths, search)
| |- catalog.ts docset/interface/member/enum name resolution
| |- suggest.ts "did you mean" suggestions
| |- outbox.ts ordered, backpressure-safe stdout writer
| |- util.ts shared helpers
| `- types.ts
|- solidworks-api/ documentation corpus (markdown + JSON)
|- tests/
|- bin/solidworks-mcp
`- package.json
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi