FastMCP-based MCP Server Orchestrator
The MCP Composer is a FastMCP based Composer that manages multiple MCP servers and tools. Servers and tools can be registered at runtime using structured JSON configurations.
MCP Composer serves as an orchestrator for tool execution and forwards tool requests to the correct upstream MCP server or interface.
It supports multiple tool types, such as OpenAPI (REST), GraphQL, CLI-based tools, client SDKs, and nested MCP servers.
Also, you can manage multiple MCP servers and tools with dynamic registration, authentication, and unified interface.
Features
Core Capabilities
- Multi-Server Orchestration: Manage and coordinate multiple MCP servers simultaneously
- Dynamic Configuration: Register servers and tools at runtime using JSON configurations
- Multiple Transport Modes: Support for stdio, HTTP, and Server-Sent Events (SSE)
- Authentication Support: OAuth integration and dynamic token management
- Middleware System: Extensible middleware framework for request/response processing
- Tool Management: Support for OpenAPI, GraphQL, CLI tools, and custom implementations
- Environment Management: Flexible environment variable handling and inheritance
Transport Modes
- stdio: Direct process communication (default)
- HTTP: RESTful API endpoints
- SSE: Server-Sent Events for real-time communication
Middleware Management
- Validation: Validate middleware configuration files
- Listing: List configured middlewares with filtering options
- Dynamic Addition: Add or update middlewares at runtime
- Import Verification: Ensure middleware classes can be imported
- Priority Control: Execution order management
- Hook Filtering: Selective middleware application
Installation
-
Install using pipx
pipx install mcp-composer -
Install using uvx
uvx pip install mcp-composer ## To verify run the following command uvx pip show mcp-composer -
Add as dependency to project
uv add mcp-composer
Usage
MCP Composer itself acts as an MCP server and can be started on any supported transport.
# Run with STDIO transport (default)
mcp-composer --mode stdio
# Run with HTTP mode
mcp-composer --mode http --endpoint http://api.example.com --id http-server
# Set custom host and port for HTTP/SSE modes
mcp-composer --mode http --host 127.0.0.1 --port 8080 --endpoint http://api.example.com
# Run with SSE mode
mcp-composer --mode sse --endpoint http://localhost:8001/sse --id sse-server
# Run SSE server as STDIO
mcp-composer --mode stdio --sse-url http://localhost:8001/sse
Server Configuration
A MCP composer instance can mount different type of mcp server with different authentication mechanism
# Use custom configuration file
mcp-composer --mode http --endpoint http://localhost:8001/mcp --config_path /path/to/servers.json
A servers.json file can have different type of mcp server
[
{
"id": "mcp-countries",
"type": "graphql",
"graphql": {
"endpoint": "https://countries.trevorblades.com/",
"schema_filepath": "<path to your graphql schema file>/countries.graphql"
}
},
{
"id": "mcp-pokemon",
"type": "graphql",
"graphql": {
"endpoint": "https://graphqlpokemon.favware.tech/v8",
"schema_filepath": "<path to your graphql schema file>/pokemon.graphql"
}
},
{
"id": "sse-server",
"type": "sse",
"endpoint": "http://localhost:8001/sse",
},
{
"id": "http-server",
"type": "http",
"endpoint": "http://localhost:8002/http",
},
{
"id": "mcp-xxx",
"type": "openapi",
"open_api": {
"endpoint": "<api server endpoint>",
"spec_filepath": "<path to your openapi spec file>",
"custom_routes": [
{
"methods":["GET"],
"pattern":".*/users/.*",
"mcp_type":"RESOURCE_TEMPLATE"
},
{
"methods":["GET"],
"pattern":".*/events/.*",
"mcp_type":"TOOL"
},
{
"methods":["POST"],
"pattern":".*/",
"mcp_type":"EXCLUDE"
}
]
},
"auth_strategy":"bearer",
"auth":{
"token":"<your api key>"
}
}
]
Authentication
# Enable OAuth authentication
mcp-composer --auth_type oauth --mode http --endpoint http://api.example.com
Environment Management
# Set specific environment variables
mcp-composer --env API_KEY mykey --env DEBUG true --mode http --endpoint http://api.example.com
Composer Tools Control
By default, MCP Composer acts as an MCP management system and exposes the following built-in tools:
Server Management Tools
- register_mcp_server: Register a new MCP server
- update_mcp_server_config: Update existing server configuration
- delete_mcp_server: Remove a server from the composer
- member_health: Check health status of member servers
- activate_mcp_server: Activate a previously deactivated server
- deactivate_mcp_server: Deactivate a server temporarily
- add_tools: Add individual tools to the composer
- add_tools_from_openapi: Import tools from OpenAPI specifications
- list_member_servers: List all registered member servers
Tool Management Tools
- get_tool_config_by_name: Retrieve tool configuration by name of the tool
- get_tool_config_by_server: Get tool configuration for a specific server
- disable_tools: Disable specific tools
- enable_tools: Enable previously disabled tools
- update_tool_description: Update tool descriptions and metadata
Prompt Management Tools
- add_prompts: Add new prompts to the system
- get_all_prompts: Retrieve all available prompts
- list_prompts_per_server: List prompts for a specific server
- filter_prompts: Filter prompts based on criteria
- disable_prompts: Disable specific prompts
- enable_prompts: Enable previously disabled prompts
Resource Management Tools
- create_resource: Create new resources
- create_resource_template: Create resource templates
- list_resources: List all available resources
- list_resource_templates: List resource templates
- list_resources_per_server: List resources for a specific server
- filter_resources: Filter resources based on criteria
- disable_resources: Disable specific resources
- enable_resources: Enable previously disabled resources
These tools provide comprehensive management capabilities for the MCP Composer ecosystem.
In order to disable the admisnitrative tools start mcp-composer with following tools
# Disable built-in composer tools
mcp-composer --disable-composer-tools --mode stdio
License
Apache License 2.0. See the repository LICENSE.
Contributing
Issues and pull requests are welcome. Read CONTRIBUTING.md and report vulnerabilities through SECURITY.md.
Metadata
Release files for mcp-composer 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mcp_composer-0.2.1.tar.gz | 683.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_composer-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.1 MB
Release files / mcp_composer-0.2.1.tar.gz
| Download URL | mcp_composer-0.2.1.tar.gz |
|---|---|
| Size | 683.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ee0d483c614764eb2c5cd8a878122980df5091a0ac708ab8ea1e9c1fee1fb135
|
|
BLAKE2b-256 checksum How to use checksums |
c50c253cff1a9d3dcf1e2addd09ed056ea3adb4aa9dea58c6741c4836fe030b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.
Transparency logRelease files / mcp_composer-0.2.1-py3-none-any.whl
| Download URL | mcp_composer-0.2.1-py3-none-any.whl |
|---|---|
| Size | 419.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fa4f8674b5cd5bb1374d5e91adbc7134ab31d7209b1bb1d3b14486021893b735
|
|
BLAKE2b-256 checksum How to use checksums |
94eb3b8b8dfa4b0d91f36d8b70c6b7bc3cd12d3d85ff03ba368bf7a26ffb8b41
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.
Transparency log