Content
# 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