MC

mclenhard/catie-mcp

Developer tools

이 페이지는 AI로 자동 번역되었습니다. 기술적인 세부 사항은 원문을 확인하세요. 원문 보기

33 stars 1 forks 품질 51 트렌드 11MIT

MCP (Model Context Protocol) 요청을 처리하는 라우팅 및 로드 밸런싱을위한 경량, 구성 가능한 역 프록시 요청에 따라 요청 내용.

개요

MCP (Model Context Protocol) 요청을 처리하는 라우팅 및 로드 밸런싱을위한 경량, 구성 가능한 역 프록시 요청에 따라 요청 내용. 자세한 문서는 Catie MCP Documentation을 참조하십시오. - 도구 호출을 기반으로 MCP JSON-RPC 요청의 동적 라우팅 - 여러 MCP Servers에서 Concatenate 도구를 사용하여 클라이언트는 여러 서버를 설치하지 않고 모든 도구의 통합 된보기를 가져옵니다. - SSE (Server-Sent Events)와 같은 백엔드에 클라이언트 연결을 유지하기 위해 Session-aware routing - SSE (Server-Sent Events)와 Streamable HTTP 운송에 대한 지원 - 다른 백엔드 사이의 교차 충돌을 해결하기 위해 도구 이름 매핑 및 namepacing - Observability에 대한 Prometheus metrics 통합 - Docker와의 컨테이너화 된 배포 - UI 모니터링을위한 기본 인증 이 응용 프로그램은 여러 패키지로 구성되어 있습니다. - cmd/주.

개요(AI 번역)

MCP (Model Context Protocol) 요청을 처리하는 라우팅 및 로드 밸런싱을위한 경량, 구성 가능한 역 프록시 요청에 따라 요청 내용.

자세한 문서는 Catie MCP Documentation을 참조하십시오.

특징

  • MCP JSON-RPC 요청의 동적 라우팅
  • 여러 다른 MCP Servers에서 Concatenate 도구로 클라이언트는 다중 서버를 설치하지 않고 모든 도구의 통합 된보기를 가져옵니다.
  • Session-aware routing은 같은 백엔드에 클라이언트 연결을 유지
  • SSE(Server-Sent Events)로 스트리밍 가능한 HTTP 전송 지원
  • 도구 이름 매핑 및 namepacing 다른 백엔드 사이 충돌 해결
  • 관찰성에 대한 Prometheus 미터 통합
  • Docker와 컨테이너화된 배포
  • UI 모니터링을 위한 기본 인증

건축

이 응용 프로그램은 여러 패키지로 구성되어 있습니다.

  • cmd/main.go - 서버 설정과 애플리케이션 엔트리 포인트
  • pkg/config - 구성 로딩 및 관리
  • pkg/router - routing 및 프록시 논리 요청
  • 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 가이드부터 시작하세요 →