IntentForge MCP Server

IntentForge MCP Server

Enables coding agents to convert natural language engineering prompts into editable parametric CAD models with deterministic parsing, validation, and edit support.

Category
Visit Server

README

IntentForge

Tests

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 plate
  • l_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_prompt
  • parse_build_cad_prompt
  • parse_edit_prompt
  • parse_apply_edit_prompt
  • build_example_bracket
  • validate_example_bracket
  • list_recent_runs
  • get_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

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured