This project follows the What You See Is What It Does (WYSIWID) architectural pattern. See: https://arxiv.org/abs/2508.14511 PDF: https://arxiv.org/pdf/2508.14511
Contains independent units of behavior ("Concepts").
- Each concept is self-contained.
- Concepts do not import each other.
- Concepts do not query each other's tables.
Contains the logic that orchestrates interactions ("Synchronizations").
- Listens to events/actions in Concepts.
- Triggers actions in other Concepts.
- Acts as the "glue" of the system.
- Factor Concepts: Distinct lifecycles = distinct Concepts.
- No Cross-Calls: Never call Concept A from Concept B.
- Use Syncs: All interactions must go through a Synchronization.
- Polymorphism: Use opaque IDs (UUIDs) for references.
This project implements a Dynamic MCP Generator that automatically creates Model Context Protocol (MCP) servers from Swagger URLs.
-
- Responsibility: Manages the configuration of Swagger/OpenAPI sources.
- State: A list of URLs defined in
config.json. - Independence: It knows nothing about servers or processes; it only manages the "source of truth" for API definitions.
-
- Responsibility: Manages the lifecycle of local server processes.
- State: Running processes, port assignments.
- Independence: It knows nothing about configuration files; it only knows how to start and stop a server given a name and arguments.
The SyncOrchestrator binds these two concepts together:
- Trigger: It reads the current state of
SwaggerSource. - Action: It instructs
MCPServerto start a server for any source that doesn't have a running process. - Result: Adding a URL to
config.jsonautomatically spins up a new MCP server without any manual intervention.
- Add a Swagger URL to
config.json. - Run
python run.py. - The system will detect the new source and start an MCP server (e.g., on port 9000).