
mclenhard/catie-mcp
Developer toolsこのページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。 原文を見る
MCP (Model Context Protocol) をルーティングし、ロードするための軽量で構成可能なリバースプロキシは、リクエストコンテンツに基づいて適切なバックエンドサービスへのリクエストです.
概要
MCP (Model Context Protocol) をルーティングし、ロードするための軽量で構成可能なリバースプロキシは、リクエストコンテンツに基づいて適切なバックエンドサービスへのリクエストです。 詳細なドキュメントについては、Catie MCP ドキュメントを参照してください。 - ツールコールに基づいてMCP JSON-RPCリクエストの動的ルーティング - 複数の異なるMCPサーバーからツールを連結して、クライアントは複数のサーバーをインストールすることなく、すべてのツールの統一されたビューを取得します。 - セッション-aware ルーティングは、クライアントの接続を同じバックエンドに維持する - SSE(Server-Sent Events)によるストリーミング可能な HTTP トランスフォーメーションのサポート - ツール名マッピングと名前設定を使用して、異なるバックエンド間での衝突を呼び出す - 保守性のための Prometheus メトリック統合 - Docker によるコンテナ化されたデプロイ - UI を監視するための基本的な認証 アプリケーションは複数のパッケージに構成されます。 - cmd/main.
概要(AI 翻訳)
MCP (Model Context Protocol) をルーティングし、ロードするための軽量で構成可能なリバースプロキシは、リクエストコンテンツに基づいて適切なバックエンドサービスへのリクエストです。
詳細なドキュメントについては、Catie MCP ドキュメントを参照してください。
##特徴
- ツールコールに基づくMCP JSON-RPCリクエストの動的ルーティング
- 複数の異なるMCPサーバーからツールを連結しているため、クライアントは複数のサーバーをインストールせずにすべてのツールの統一されたビューを取得します。
- セッション-aware ルーティングでクライアントの接続を同じバックエンドに維持
- SSE(Server-Sent Events)による HTTP 転送の合理化をサポート
- 異なるバックエンド間の衝突を命名するためのツール名マッピングと名表作成
- 観察性のためのPrometheusのメートルの統合
- Dockerでコンテナ化されたデプロイ
- UIを監視するための基本認証
アーキテクチャ
アプリケーションは複数のパッケージに構成されます。
- [
cmd/main.go] - サーバ設定でアプリケーションエントリポイント - [
pkg/config] - 構成のローディングおよび管理 - [
pkg/router- ルーティングとプロキシロジックのリクエスト - [
pkg/session- クライアント接続を維持するためのセッション管理 - [
pkg/logger- 構造ログシステム
このページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。
README
以下は原文 README の抜粋です。原文を見る。
MCP Catie - Context Aware Traffic Ingress Engine
A lightweight, configurable reverse proxy for routing and load balancing MCP (Model Context Protocol) requests to appropriate backend services based on request content.
For detailed documentation, visit Catie MCP Documentation.
Features
- Dynamic routing of MCP JSON-RPC requests based on tool call
- Concatenate tools from multiple different MCP Servers so the client gets a unified view of all tools without the user installing multiple servers.
- Session-aware routing to maintain client connections to the same backend
- Support for Streamable HTTP transport with SSE (Server-Sent Events)
- Tool name mapping and namespacing to resolve naming conflicts between different backends
- Prometheus metrics integration for observability
- Containerized deployment with Docker
- Basic authentication for monitoring UI
Architecture
The application is structured into several packages:
cmd/main.go- Application entry point with server setuppkg/config- Configuration loading and managementpkg/router- Request routing and proxy logicpkg/session- Session management for maintaining client connectionspkg/logger- Structured logging systempkg/ui- Simple web UI for monitoring
Configuration
The router is configured using a YAML file (router_config.yaml). Here’s an example configuration:
resources:
"^weather/.*": "http://weather-service:8080/mcp"
"^database/.*": "http://database-service:8080/mcp"
tools:
"^calculator$": "http://calculator-service:8080/mcp"
"^translator$": "http://translator-service:8080/mcp"
toolMappings:
- originalName: "weather"
targetName: "getWeather"
target: "http://weather-service:8080/mcp"
- originalName: "search"
targetName: "googleSearch"
target: "http://search-service:8080/mcp"
default: "http://default-service:8080/mcp"
ui:
username: "admin"
password: "your_secure_password"
The configuration consists of:
resources: Regex patterns for resource URIs and their target endpointstools: Regex patterns for tool names and their target endpointstoolMappings: Mappings for tool name transformations to resolve naming conflictsdefault: Fallback endpoint for requests that don’t match any patternui: Authentication credentials for the monitoring UI
The configuration file is automatically reloaded when changes are detected.
Tool Name Mapping
The tool name mapping feature allows you to present a unified tool interface to clients while handling naming differences across backend MCP servers. This is useful when:
- Different backends use different names for similar functionality
- You want to present a simplified or standardized naming scheme to clients
- You need to avoid naming conflicts between tools from different backends
For each tool mapping, specify:
originalName: The name presented to clients
インストール
docker run -p 80:80 -v $(pwd)/router_config.yaml:/root/router_config.yaml mcp-router-proxy