The last MCP server you'll ever need.
A universal, all-in-one MCP server that brings the full power of the Universal Tool Calling Protocol (UTCP) to the MCP ecosystem.
Add this configuration to your MCP client (Claude Desktop, etc.):
{
"mcpServers": {
"utcp": {
"command": "npx",
"args": ["@utcp/mcp-bridge"],
"env": {
"UTCP_CONFIG_FILE": "/path/to/your/.utcp_config.json"
}
}
}
}That's it! No installation required. The bridge will automatically:
- Download and run the latest version via npx
- Load your UTCP configuration from the specified path
- Register all your UTCP manuals as MCP tools
- Provide a unified interface to manage your tool ecosystem
Create a .utcp_config.json file to configure your tools and services:
{
"load_variables_from": [
{
"variable_loader_type": "dotenv",
"env_file_path": ".env"
}
],
"manual_call_templates": [
{
"name": "openlibrary",
"call_template_type": "http",
"http_method": "GET",
"url": "https://openlibrary.org/static/openapi.json",
"content_type": "application/json"
}
],
"post_processing": [
{
"tool_post_processor_type": "filter_dict",
"only_include_keys": ["name", "description"],
"only_include_tools": ["openlibrary.*"]
}
],
"tool_repository": {
"tool_repository_type": "in_memory"
},
"tool_search_strategy": {
"tool_search_strategy_type": "tag_and_description_word_match"
}
}For Claude Code (the CLI / IDE extension), register the bridge as a user-scoped MCP server:
claude mcp add-json --scope user utcp '{"type":"stdio","command":"npx","args":["@utcp/mcp-bridge"],"env":{"UTCP_CONFIG_FILE":"/absolute/path/to/.utcp_config.json"}}'Then restart Claude Code. Verify with claude mcp list. Remove with claude mcp remove utcp --scope user.
If you're hacking on @utcp/sdk or any other typescript-utcp package and want to exercise it through Claude Code, use the dev scripts:
cd utcp-mcp
npm install
npm run dev:register # builds typescript-utcp packages, overlays each into the bridge's node_modules, builds the bridge, and registers it as 'utcp-dev' in Claude Code
# restart Claude Code
# After every edit:
npm run dev:register # rebuilds, re-registers; restart Claude Code
# When done:
npm run dev:unregister # removes the MCP entry and restores registry node_modulesBoth scripts are idempotent and never mutate package.json. The overlay strategy avoids npm link, which under modern npm aliases unlink to uninstall --save and would silently strip the dependency.
The script expects the typescript-utcp checkout to live next to this repo (../typescript-utcp). Override with flags if not:
--lib-dir <path>— point at a different typescript-utcp checkout, or passnoneto skip the overlay step entirely (useful when only editing the bridge)--name <mcp-name>(defaultutcp-dev) — useful if you want the dev bridge alongside a published one--config <path>(default./.utcp_config.json) — point at a different UTCP config
The bridge exposes these MCP tools for managing your UTCP ecosystem:
register_manual- Register new UTCP manuals/APIsderegister_manual- Remove registered manualscall_tool- Execute any registered UTCP toolsearch_tools- Find tools by descriptionlist_tools- List all registered tool namesget_required_keys_for_tool- Get required environment variablestool_info- Get complete tool information and schema
The Universal Tool Calling Protocol (UTCP) allows you to:
- Connect to any API via HTTP, OpenAPI specs, or custom formats
- Use command-line tools with automatic argument parsing
- Process text and files with built-in utilities
- Chain and combine multiple tools seamlessly
With this MCP bridge, all your UTCP tools become available in Claude Desktop and other MCP clients.
- ✅ Zero installation - Works via npx
- ✅ Universal compatibility - Works with any MCP client
- ✅ Dynamic configuration - Update tools without restarting
- ✅ Environment isolation - Each project can have its own config
- ✅ Comprehensive tool management - Register, search, call, and inspect tools
- ✅ Web interface available - See web_ui_utcp_mcp_bridge/
For Python users, see the standalone Python implementation in python_mcp_bridge/
For advanced management with a web UI, check out web_ui_utcp_mcp_bridge/