IntentForge MCP Server
Enables coding agents to convert natural language engineering prompts into editable parametric CAD models with deterministic parsing, validation, and edit support.
README
IntentForge
IntentForge is a deterministic CAD intent pipeline for turning simple engineering language into editable, explainable, validated parametric CAD models.
It is not a general text-to-CAD generator. The goal is not to produce geometry that merely looks right once. The goal is to preserve the design intent behind the model so later edits can update named parameters and active features without losing the original assumptions, constraints, and feature history.
The current implementation is intentionally narrow:
wall_mounted_bracket / mounting plate
l_bracket / right angle bracket
IntentForge currently uses Python, Pydantic schemas, CadQuery, pytest, deterministic regex parsing, and optional MCP wrappers. It does not call an LLM.
Pipeline
The current pipeline is:
natural language
-> structured intent
-> named parameter table
-> constraint graph
-> feature plan
-> CadQuery model
-> STEP/STL exports
-> validation report
-> edit intent
-> regenerated CAD
Each stage writes structured artifacts so a reviewer or coding agent can inspect what the system inferred, which dimensions are named, which assumptions were made, which optional features are active, and why validation passed or failed.
Why This Is Different
Normal text-to-CAD demos often generate a one-off model from a prompt. That can work for visual sketches, but it is brittle when the design changes.
IntentForge keeps the editable model state explicit:
- important dimensions are named parameters
- optional features are represented by feature flags
- assumptions and unknowns are recorded
- feature steps include reasons
- validation checks produce structured reports
- edits modify the existing intent and parameter table instead of treating every change as a new prompt
Supported Scope
IntentForge currently supports two deterministic model families:
wall_mounted_bracket/ mounting platel_bracket/ right angle bracket
Supported features:
- L-bracket base leg and vertical leg parameters
- L-bracket no holes or two holes per leg
- optional L-bracket triangular gusset
- no mounting holes
- two horizontal symmetric mounting holes
- four rectangular/corner mounting holes
- optional center cutout
- optional rounded corners
- optional edge fillets
- deterministic natural-language edits
- structured edit JSON
- benchmark suite
- optional MCP wrapper
Unsupported by design in this phase:
- arbitrary CAD objects
- new model families
- four-hole L-bracket patterns
- freeform L-bracket hole placement
- curved or adjustable L-brackets
- sheet-metal unfold patterns
- robust geometric inside-corner filleting for L-brackets
- LLM parsing
- GUI
- SolidWorks, Fusion, or FreeCAD desktop control
- freeform hole placement
- circular or diagonal hole patterns
- topological hole detection from exported solids
Installation
Create an environment and install the development dependencies:
python -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements.txt
CadQuery is optional for non-CAD parser tests, but required for real STEP/STL generation:
python -m pip install -e ".[cad]"
Optional MCP support is installed separately:
python -m pip install -e ".[mcp]"
Run the test suite:
python -m pytest
Check the local development environment:
python -m intentforge.cli doctor
Usage
Parse a prompt into structured intent artifacts:
python -m intentforge.cli parse "Make a wall-mounted bracket 120 mm wide and 60 mm tall with two screw holes."
Parse, build, export STEP/STL, and validate:
python -m intentforge.cli parse-build "Make a wall-mounted bracket 120 mm wide, 60 mm tall, 8 mm thick, with two screw holes."
Build an L-bracket:
python -m intentforge.cli parse-build "Make an L-bracket 100 mm base leg, 80 mm vertical leg, 40 mm wide, and 6 mm thick."
Build an L-bracket with holes on both legs:
python -m intentforge.cli parse-build "Make an L-bracket with two holes on the base and two holes on the vertical face."
Build and validate the bundled bracket example:
python -m intentforge.cli build-example bracket
python -m intentforge.cli validate-example bracket
Parse a natural-language edit:
python -m intentforge.cli edit-parse "Make it 150 mm wide but keep the same thickness."
Parse and apply an edit to the bundled bracket example:
python -m intentforge.cli edit-parse-apply bracket "Change it to four mounting holes."
Parse and apply an edit to the bundled L-bracket example:
python -m intentforge.cli edit-parse-apply l_bracket "Make the base leg 120 mm long."
Rejected edits are reported without exporting new edited CAD:
python -m intentforge.cli edit-parse-apply bracket "Change it to three mounting holes."
Run the parametric sweep harness:
python -m intentforge.cli sweep --max-cases-per-family 30
Run the edit preservation harness:
python -m intentforge.cli edit-harness
Demo
Run the release demo:
python -m intentforge.cli demo
The demo runs parse-build examples, accepted edits, an intentionally rejected vague edit, and the benchmark suite. It writes a traceable demo run under:
output/demo_runs/<run_id>/
The run directory contains demo_report.json, demo_summary.txt, generated CAD outputs, validation reports, edit reports, and benchmark reports.
Benchmark
Run the deterministic regression benchmark:
python -m intentforge.cli benchmark
The benchmark covers parsing, CAD generation, optional features, hole patterns, rejection behavior, natural-language edits, validation, output traceability, and family-level results for wall_mounted_bracket and l_bracket.
Reports are written to:
output/benchmark/benchmark_report.json
output/benchmark/benchmark_summary.txt
output/benchmark/runs/<run_id>/
Edit Preservation Harness
The edit preservation harness stress-tests the core differentiator in IntentForge: changing an existing design without losing intent.
It runs multi-step edit chains for both supported families and checks:
- changed parameters are the ones the edit requested
- preserved parameters remain unchanged
- optional feature state stays consistent
- regenerated CAD still validates
- topology inspection and volume delta checks remain coherent when applicable
- rejected edits do not export CAD
Run it with:
python -m intentforge.cli edit-harness
Latest reports are written to:
output/harness/edit_preservation_report.json
output/harness/edit_preservation_summary.txt
Persistent run artifacts are written to:
output/harness/edit_preservation_runs/<run_id>/
MCP Usage
IntentForge can be exposed as an optional MCP tool server for coding agents:
python -m mcp_server.server
The MCP server is a thin wrapper around existing deterministic workflows. It does not duplicate parser, generator, validator, or editor logic, and it does not call an LLM.
Available tool functions include:
parse_cad_promptparse_build_cad_promptparse_edit_promptparse_apply_edit_promptbuild_example_bracketvalidate_example_bracketlist_recent_runsget_run_metadata
License
License: Apache-2.0. See LICENSE.
Project Structure
benchmark/ Deterministic benchmark corpus and runner
demo/ Release demo script and notes
docs/ Architecture, design intent, validation, benchmark, MCP, and roadmap docs
examples/ Bundled wall-bracket and L-bracket prompt, intent, parameters, constraints, feature plan, and edit examples
harness/ Topology, volume delta, sweep, and edit-preservation harnesses
intentforge/ Core schemas, parser, planner, generator, validator, editor, workflows, and CLI
mcp_server/ Optional MCP wrapper around core workflows
output/ Generated artifacts
tests/ Pytest coverage
Roadmap
Near-term roadmap:
- Phase 10: harden the new L-bracket family while preserving the same intent-first architecture
- add an electronics enclosure family
- add topological feature detection for generated solids
- add an LLM-assisted parser that emits the same structured schemas
- consider GUI or CAD-plugin integration after the core pipeline is more mature
See docs/roadmap.md for more detail.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.