io.github.cadlens-co/cadlens-mcp
Model Context Protocol server that wraps the CADLens REST API.
Open source Open in the app JSON README (API)
About
Model Context Protocol server that wraps the CADLens REST API.
Details
- Kind
- MCP servers
- Topic
- AI, RAG & memory
- Publisher
- cadlens-co
- Origin
- official
- Category
- ferramentas
- Transport
- local
- Version
- 0.6.0
- Stars
- 1
- Last push
- 2026-08-11T03:30:19Z
- Repository state
- ativo
- Language
- TypeScript
- License
- MIT
- Added
- 2026-08-29 03:02:33
- Updated
- 2026-08-29 03:02:33
- Origin id
io.github.cadlens-co/cadlens-mcp
README
# cadlens-mcp
[](https://www.npmjs.com/package/@cadlens/mcp-server)
[](https://github.com/cadlens-co/cadlens-mcp)
A [Model Context Protocol](https://modelcontextprotocol.io) server that wraps the [Cadlens CAD parsing API](https://cadlens.co) so MCP-aware LLM clients (Claude Desktop, Claude Code, Cursor, Zed, Windsurf) can parse CAD files (`.dwg`, `.dxf`, `.dwf`, `.dwfx`, `.dgn` V7, `.pdf`, max 100 MB) and reason over the extracted entity, layer, and metadata payloads.
[Cadlens](https://cadlens.co) converts CAD drawings into structured JSON without requiring AutoCAD or any desktop software — learn more at [cadlens.co](https://cadlens.co).
## Install
Get an API key from the [Cadlens dashboard](https://cadlens.co) first — keys start with `cadl_` and are created in the dashboard for free.
### Claude Desktop / Cursor / Windsurf
Add to your MCP client config (e.g. `~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
```json
{
"mcpServers": {
"cadlens": {
"command": "npx",
"args": ["-y", "@cadlens/mcp-server"],
"env": {
"CADLENS_API_KEY": "cadl_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
}
```
### Claude Code CLI
```bash
claude mcp add cadlens \
--env CADLENS_API_KEY=cadl_xxx \
-- npx -y @cadlens/mcp-server
```
---
## Development (build from source)
```bash
npm install
npm run build
export CADLENS_API_KEY="cadl_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
node dist/index.js
```
## Tools
| Tool | What it does |
|---|---|
| `cadlens_parse_file` | Upload a local CAD file, poll until parsed (5 min budget), return summary. |
| `cadlens_parse_url` | Download a CAD file from a URL, then parse it like `parse_file`. |
| `cadlens_get_job` | Cheap status check (`PENDING` / `PROCESSING` / `COMPLETED` / `FAILED`). |
| `cadlens_get_result` | Fetch parsed content. `mode`: `summary` (default), `entities_by_type`, `entities_on_layer`, `full`. |
| `cadlens_refresh_image_url` | Re-fetch the 1h presigned PNG URL without re-downloading the full result. |
| `cadlens_list_jobs` | The 100 most recent jobs for the configured API key. |
| `cadlens_delete_job` | Delete a job and its S3 artifacts. Irreversible. |
## Configuration
| Env var | Required | Default | Notes |
|---|---|---|---|
| `CADLENS_API_KEY` | yes | — | Created in the CADLens dashboard. |
| `CADLENS_API_BASE` | no | `https://api.cadlens.co/v1` | Set to `http://localhost:3001/v1` for local dev. |
| `WEBHOOK_PORT` | no | `0` (random) | Port for the in-process webhook receiver. |
| `WEBHOOK_PUBLIC_URL` | no | unset | Set to a tunnel URL (ngrok/cloudflared) to let CADLens hit the local receiver. When set, parse calls auto-register the webhook and the poller short-circuits on receipt. |
| `REQUEST_TIMEOUT_MS` | no | `30000` | Per-HTTP-request timeout for CADLens calls. |
## Webhook short-circuit (optional)
If `WEBHOOK_PUBLIC_URL` is set, `parse_file` / `parse_url` register a per-process webhook URL alongside the upload. The webhook handler updates an in-memory job-state cache; the poller checks that cache before each HTTP GET and returns early when `COMPLETED` / `FAILED` arrives. This trims worst-case latency by up to one full poll tick (~1 s) without changing the tool surface.
Example tunnel setup:
```bash
cloudflared tunnel --url http://localhost:8787 &
export WEBHOOK_PORT=8787
export WEBHOOK_PUBLIC_URL="https://<your-tunnel>.trycloudflare.com"
```
## Development
```bash
npm run typecheck
npm run lint
npm test
npm run smoke # tools/list smoke test against built binary
```
## Project-scoped Claude agents
This repo ships five agents under `.claude/agents/`:
- `cadlens-api-debugger` — diagnoses unexplained CADLens 4xx/5xx using `mcp-server-reference.md`.
- `mcp-tool-tester` — drives JSON-RPC against the built server to validate tool responses.
- `mcp-tool-implementer` — scaffolds new tools following the existing `src/tools/*` pattern.
- `cad-drawing-summarizer` — uses the MCP tools to summarize a CAD file in natural language.
- `cad-layer-inspector` — drills into a single layer of a parsed drawing.
## Links
- [Cadlens official website](https://cadlens.co)
- [Cadlens API documentation](https://cadlens.co/docs)
- [Cadlens pricing](https://cadlens.co/pricing)
- [DWG parser for AI agents](https://cadlens.co)
- [npm package](https://www.npmjs.com/package/@cadlens/mcp-server)
- [GitHub repository](https://github.com/cadlens-co/cadlens-mcp)
---
## GitHub Topics
Add these topics to this repo for discovery:
`mcp` `mcp-server` `model-context-protocol` `ai-agents` `claude` `cad` `dwg` `dxf` `cad-api` `llm-tools` `engineering-api`
---
## License
MIT