Skip to content

Feature Proposal: Modular Router System for MCP Python SDK #767

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
DamyanBG opened this issue May 21, 2025 · 0 comments
Open

Feature Proposal: Modular Router System for MCP Python SDK #767

DamyanBG opened this issue May 21, 2025 · 0 comments

Comments

@DamyanBG
Copy link

This proposal suggests enhancing the Model Context Protocol Python SDK with a modular router system similar to FastAPI's APIRouter. This would allow developers to organize MCP tools, resources, and prompts across multiple files and modules, improving code organization and maintainability for larger applications.

Current limitation

Currently, the MCP Python SDK requires defining all tools, resources, and prompts on a single FastMCP instance:

# main.py
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("My App")

@mcp.tool()
def tool_one():
    # implementation

@mcp.resource()
def resource_one():
    # implementation

For larger applications, this leads to several issues:

  • All MCP components must be defined in a single file or imported into a single namespace
  • Difficult to organise code by domain or feature
  • No clear way to create reusable tool/resource modules
  • Challenging to maintain separation of concerns in larger projects

Request

It would be beneficial to have a modular router system similar to FastAPI's APIRouter that allows developers to:

  1. Define tools, resources, and prompts in separate files
  2. Group related functionality in domain-specific modules
  3. Import and combine these modules in a main MCP application

This would significantly improve code organization and maintainability for larger MCP-based applications, especially those with many tools and resources spanning different domains or features.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant