Cover image
Try Now
2025-04-14

3 years

Works with Finder

0

Github Watches

0

Github Forks

0

Github Stars

overlay-mcp

목차

overlay-mcp는 MCP (Mission Control Protocol) SSE (Server-Sent Events) 프로토콜을 사용하는 애플리케이션을 위한 리버스 프록시입니다. MCP Authorization을 구현하여 백엔드 애플리케이션 대신 인증/인가 처리를 수행합니다.

주요 기능

  • 리버스 프록시: 지정된 업스트림 MCP SSE 서버로 요청을 프록시합니다.
  • MCP Authorization:
    • OIDC (OpenID Connect): 외부 IdP (Identity Provider)를 이용한 OAuth 2.0 PKCE 인증 흐름을 지원합니다. (예: Dex)
    • API Key: 헤더 또는 쿼리 파라미터를 통한 API 키 인증을 지원합니다.
  • JWT 검증: OIDC IdP로부터 받은 JWT(JSON Web Token)의 유효성을 검증합니다. JWK Set URL 또는 내장된 JWK를 사용할 수 있습니다.
  • 인가 제어: JWT 클레임 또는 API 키를 기반으로 접근 제어를 수행합니다.
  • Prometheus 메트릭: /metrics 엔드포인트를 통해 Prometheus 메트릭을 노출합니다.

빠른 사용

Docker를 사용하여 빠르게 시작할 수 있습니다. 아래 예시는 OIDC Discovery (--oidc-issuer)를 사용하여 Dex IdP와 연동하는 기본적인 경우입니다.

# 필요한 환경 변수 설정 (Client Secret 등)
export OVERLAY_MCP_OIDC_CLIENT_SECRET="YOUR_OIDC_CLIENT_SECRET"

docker run -p 9090:9090 \
  -e OVERLAY_MCP_OIDC_CLIENT_SECRET \
  ghcr.io/egoavara/overlay-mcp:latest \
  --host 0.0.0.0:9090 \
  --hostname "http://localhost:9090" \
  --upstream "http://<your-upstream-mcp-sse-server>" \
  --oidc-issuer "https://dex.example.com" \
  --oidc-client-id "overlay-mcp-client" \
  --oidc-scopes openid email profile groups \
  --log-filter info \
  --prometheus
  • OVERLAY_MCP_OIDC_CLIENT_SECRET: OIDC Client Secret을 환경 변수로 전달해야 합니다.
  • ghcr.io/egoavara/overlay-mcp:latest: 사용할 Docker 이미지 (버전 태그는 필요에 따라 변경)
  • --host: overlay-mcp가 수신 대기할 주소 및 포트
  • --hostname: 외부에서 overlay-mcp에 접근할 때 사용되는 URL (OIDC 리다이렉션에 중요)
  • --upstream: 실제 MCP SSE 서버의 URL
  • --oidc-issuer: OIDC IdP의 Issuer URL (Discovery를 통해 인증/토큰 엔드포인트 등을 자동으로 찾음)
  • --oidc-client-id: IdP에 등록된 Client ID
  • --oidc-scopes: IdP에 요청할 스코프 목록 (공백으로 구분)

소스 코드를 직접 빌드하려면 cargo build --release 명령어를 사용하세요.

설정

예시 설정 파일 (examples/config/config.json 기반):

{
    "application": {
        "log_filter": "info",
        "ip_extract": "ConnectInfo",
        "prometheus": true,
        "health_check": true,
        "apikey": [
            { "type": "header", "name": "X-API-KEY" },
            { "type": "query", "name": "apikey" }
        ]
    },
    "server": {
        "addr": "0.0.0.0:9090",
        "hostname": "http://localhost:9090",
        "upstream": "http://upstream-service/sse"
    },
    "idp": {
        "type": "oidc",
        "issuer": "https://dex.example.com",
        "client_id": "mcp-client",
        "client_secret": "${OVERLAY_MCP_OIDC_CLIENT_SECRET}",
        "scopes": ["openid", "email", "profile", "groups"]
    }
}

자세한 설정 방법은 설정 문서를 참고하세요.

사용법

실행

overlay-mcp [OPTIONS]

옵션:

Usage: overlay-mcp [OPTIONS]

Options:
  -c, --config <CONFIGFILE>
          [env: OVERLAY_MCP_CONFIG_FILE=]
  -l, --log-filter <LOG_FILTER>
          [env: OVERLAY_MCP_LOG_FILTER=] [default: warn]
      --prometheus
          [env: OVERLAY_MCP_PROMETHEUS=]
      --health-check
          [env: OVERLAY_MCP_HEALTH_CHECK=]
      --addr <ADDR>
          [env: OVERLAY_MCP_SERVER_ADDR=] [default: 0.0.0.0:9090]
      --hostname <HOSTNAME>
          [env: OVERLAY_MCP_SERVER_HOSTNAME=]
      --upstream <UPSTREAM>
          [env: OVERLAY_MCP_SERVER_UPSTREAM=]
      --otel-endpoint <ENDPOINT>
          [env: OVERLAY_MCP_OTEL_ENDPOINT=]
      --oidc <OIDC> # Deprecated: use --oidc-issuer instead
          [env: OVERLAY_MCP_OIDC_ISSUER=]
      --oidc-issuer <ISSUER>
          [env: OVERLAY_MCP_OIDC_ISSUER=]
      --oidc-client-id <CLIENT_ID>
          [env: OVERLAY_MCP_OIDC_CLIENT_ID=]
      --oidc-client-secret <CLIENT_SECRET>
          [env: OVERLAY_MCP_OIDC_CLIENT_SECRET=]
      --oidc-scopes <SCOPES>...
          [env: OVERLAY_MCP_OIDC_SCOPE=]
  -h, --help
          Print help
  -V, --version
          Print version

인증 흐름 (OIDC)

자세한 인증 흐름은 인증 흐름 문서를 참고하세요.

설정 예시

examples/config 디렉토리에서 다양한 설정 예시를 확인할 수 있습니다.

  • config.json: 기본적인 OIDC 설정 (JWK Set URL 사용)
  • config-jwk-url.json: config.json과 동일 (명시적)
  • config-embeded-jwk.json: JWK를 설정 파일에 직접 포함하는 예시
  • config-discover.json: OpenID Discovery를 사용하여 IdP 엔드포인트 및 JWK 정보를 자동으로 찾는 예시

相关推荐

  • av
  • 毫不费力地使用一个命令运行LLM后端,API,前端和服务。

  • 1Panel-dev
  • 🔥1Panel提供了直观的Web接口和MCP服务器,用于在Linux服务器上管理网站,文件,容器,数据库和LLMS。

  • WangRongsheng
  • 🧑‍🚀 llm 资料总结(数据处理、模型训练、模型部署、 o1 模型、mcp 、小语言模型、视觉语言模型)|摘要世界上最好的LLM资源。

  • rulego
  • ⛓️Rulego是一种轻巧,高性能,嵌入式,下一代组件编排规则引擎框架。

  • sigoden
  • 使用普通的bash/javascript/python函数轻松创建LLM工具和代理。

  • hkr04
  • 轻巧的C ++ MCP(模型上下文协议)SDK

  • RockChinQ
  • 😎简单易用、🧩丰富生态 -大模型原生即时通信机器人平台| 适配QQ / 微信(企业微信、个人微信) /飞书 /钉钉 / discord / telegram / slack等平台| 支持chatgpt,deepseek,dify,claude,基于LLM的即时消息机器人平台,支持Discord,Telegram,微信,Lark,Dingtalk,QQ,Slack

  • dmayboroda
  • 带有可配置容器的本地对话抹布

  • modelscope
  • 开始以更轻松的方式开始构建具有LLM授权的多代理应用程序。

  • paulwing
  • 使用MCP服务创建的测试存储库

    Reviews

    2 (3)
    Avatar
    user_TpAUPtUh
    2025-04-24

    As a loyal user of overlay-mcp, I must say this tool has significantly streamlined my workflow. Developed by egoavara, it offers unparalleled customization options and integrates seamlessly. The instructions are clear, making it easy for anyone to start using it immediately. Highly recommended for anyone looking to enhance their project efficiency!

    Avatar
    user_EQywAWWY
    2025-04-24

    Overlay-mcp by egoavara is a fantastic tool that has greatly improved my workflow. The integration is seamless, and it provides excellent overlays that are both aesthetically pleasing and highly functional. If you're looking for a reliable solution to enhance your applications, overlay-mcp is definitely worth considering. Highly recommend!

    Avatar
    user_wNZPzYwC
    2025-04-24

    As a dedicated user of the overlay-mcp application by egoavara, I must say it has significantly enhanced my workflow. The intuitive interface and seamless integration make it a standout tool. It's a must-have for anyone seeking efficiency and productivity in their daily tasks. Highly recommended!