patentorney-mcp
patentorney-mcp
An MCP server for managing patent application drafts. Built with FastMCP and designed for use with AI coding assistants (Windsurf, Claude Desktop, etc.).
Installation
pip install patentorney-mcpOr with uvx (no install needed):
uvx patentorney-mcpMCP Client Configuration
For Windsurf / Claude Desktop, add to your MCP config:
{
"mcpServers": {
"patentorney-mcp": {
"command": "uvx",
"args": ["patentorney-mcp"]
}
}
}On first use, call set_root(path='/absolute/path/to/project') to point the server at the directory containing patent.yaml. All other tools will prompt for this if it hasn't been set.
Tools (8)
Tool | Purpose |
| Point at a patent project directory. Must be called first. |
| Usage guides. No args → index. |
| Claims: add|get|update|remove|move|rename|tree |
| Figures: add|get|update|remove|move|rename|list |
| Numerals: add|get|update|remove|lookup|rename|renumber|list |
| Prior art & IDS: add|get|update|remove|list|ids_add|ids_list|ids_check |
| Glossary: add|get|update|remove|list |
| Status, validation & export: status|check|claims|drawings_description|claims_latex|drawings_latex|latex |
Any tool called before set_root() returns an error with a hint to call it. All errors include LLM-actionable hints.
Architecture
patent.yaml— single source of truth for structured data (claims, numerals, figures, glossary, prior art)sections/*.tex— prose sections edited directly;claims.texanddrawings-description.texare generatedStable slug IDs — all entities use kebab-case slugs; presentation numbers computed from list order
Dual addressing — tools accept slug or current number (e.g.,
claim("get", id="3")orclaim("get", id="mof-synthesis-method"))File locking —
fcntl.flockfor safe concurrent access from multiple server instancesStructured claims — preamble + transitional + elements (each with numeral associations)
Project Layout
my-patent/
├── patent.yaml # structured data (MCP-managed)
├── sections/
│ ├── field.tex # prose (edit in IDE)
│ ├── background.tex # prose
│ ├── detailed-description.tex # prose
│ ├── abstract.tex # prose
│ ├── claims.tex # GENERATED
│ └── drawings-description.tex # GENERATED
├── figures/
│ └── *.pdf
├── main.tex # document root
└── tome/ # prior art library (optional)Testing
uv run pytestLicense
MIT