MC

mclenhard/catie-mcp

Developer tools

このページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。 原文を見る

33 stars 1 forks 品質 51 トレンド 11MIT

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 setup
  • pkg/config - Configuration loading and management
  • pkg/router - Request routing and proxy logic
  • pkg/session - Session management for maintaining client connections
  • pkg/logger - Structured logging system
  • pkg/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 endpoints
  • tools: Regex patterns for tool names and their target endpoints
  • toolMappings: Mappings for tool name transformations to resolve naming conflicts
  • default: Fallback endpoint for requests that don’t match any pattern
  • ui: 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
GitHub で README 全文を見る

インストール

docker run -p 80:80 -v $(pwd)/router_config.yaml:/root/router_config.yaml mcp-router-proxy
MCP 初心者?mcpskill.org のガイドから始めましょう →