$ show universal-tool-calling-protocol/utcp-mcp
The UTCP-MCP Bridge is a multi-language implementation that exposes Universal Tool Calling Protocol (UTCP) tools as Model Context Protocol (MCP) tools, enabling MCP clients like Claude Desktop to discover and call any UTCP-registered tool. The system consists of MCP servers (in Node.js/TypeScript, Python, Rust, and a web-based implementation) that initialize a UTCP client, register providers from configuration, and expose standard MCP tools for tool management (register/deregister manuals, call tools, search tools, list tools, get tool info, and get required variables). The architecture cleanly separates MCP server concerns from UTCP client operations, with each language implementation following similar patterns but idiomatic to its ecosystem. The bridge handles MCP specification nuances like proper content block preservation for binary data and provides dynamic provider management through REST APIs in the web UI.
The LLM identified 4 files worth highlighting for reuse:
Provides a complete RESTful API for managing UTCP providers with automatic MCP tool registration/deregistration. Includes endpoints for listing, adding, removing, and replacing providers, along with health checks and tool listings. Demonstrates skilled handling of provider lifecycle management to prevent duplicate tool registration and maintain synchronization between provider changes and MCP tool availability.
Contains the _create_tool_proxy method that dynamically generates MCP tool functions from UTCP tool definitions. Skillfully handles complex parameter mapping including converting UTCP tool inputs to MCP tool signatures, managing required vs optional parameters, handling array types, and avoiding Python keyword conflicts. This core bridge pattern enables any UTCP tool to be seamlessly exposed as an MCP tool.
Implements a clever local development workflow that overlays built TypeScript packages from a sibling repository without modifying package.json or using npm link. Solves the common monorepo development problem by copying dist files into node_modules, providing idempotent registration/unregistration of MCP servers in Claude Code, and preserving the original dependency tree. Demonstrates innovative tooling for efficient multi-package development.
Shows proper handling of MCP content blocks in the call_tool implementation, preserving images, resources, and other non-text data types instead of incorrectly base64-encoding them as JSON strings. This specification-compliant approach prevents conversation bloat and ensures binary data is correctly transmitted. The implementation also demonstrates clean separation of MCP server setup, UTCP client initialization, and tool registration logic.