Penrose MCP Server
# Penrose MCP Server
A Model Context Protocol (MCP) server for [Penrose](https://penrose.cs.cmu.edu/) - Create beautiful mathematical diagrams through natural language.
## Overview
This MCP server provides tools and resources for creating mathematical diagrams using Penrose's domain-specific languages:
- **Domain (DSL)**: Define mathematical types and relationships
- **Substance**: Describe mathematical objects and their relationships
- **Style**: Specify visual representation rules
## Project Structure
- `.topos/`: Research materials and documentation (gitignored)
- `penrose-research/`: Design documents and specifications
- `mcp-examples/`: Reference MCP server implementations
- `mcp-spec/`: Official MCP protocol documentation
## Development
Use the justfile to access documentation and reference materials:
```bash
# List all available commands
just --list
# View the server architecture
just architecture
# Access MCP specifications
just mcp-spec
```
## License
MIT License - See LICENSE file for details
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose with no overlap: create_domain defines DSLs, create_style handles visual rules, create_substance manages mathematical objects, and generate_diagram produces the final output. The descriptions clearly separate these stages in the diagram creation workflow.
All tools follow a consistent verb_noun pattern with 'create_' for three tools and 'generate_' for the final step, maintaining readability and predictability. The naming convention perfectly reflects the logical flow from creation to generation.
Four tools is well-scoped for a diagram generation server, covering the essential components (domain, style, substance) and the final generation step. Each tool earns its place without redundancy or missing functionality for the apparent workflow.
The tool set covers the core Penrose diagram creation workflow comprehensively, with no dead ends. A minor gap exists in lacking update/delete operations for existing definitions, but agents can work around this by recreating components as needed.