한줄 요약
MCPO는 MCP 서버를 OpenAPI 호환 HTTP 서버로 변환해주는 중간자(프록시)

MCPO

개념

  • MCP 서버를 LLM 에이전트나 애플리케이션과 쉽게 호환할 수 있는 표준 OpenAPI 기반 HTTP 서버로 변환해주는 프록시 서버
  • MCP-to-OpenAPI

https://github.com/open-webui/mcpo

왜 사용할까?

  • MCP 서버는 보통 raw stdio를 통해 통신하도록 설계되어 있음 -> 호환성 부족
  • 반면 다양한 Open WebUI 등 다양한 LLM UI들은 HTTP/OpenAPI 방식을 연동의 표준으로 삼고 있음
  • 따라서 순정 MCP 서버와 LLM UI 사이에 소통을 원활하게 해주는 무언가가 필요
  • 이러한 역할을 해주는 게 바로 MCPO
  • MCPO는 부가적으로, 보안적인 부분이나 MCP 서버에 대한 문서화 기능 등을 지원함

최근 Open WebUI 에서 MCP 서버의 Streamable HTTP 통신 규격도 지원하나, 불안정하다는 경고 문구가 함께 붙어있다.

핵심 기능

  • 자동 OpenAPI 생성 : MCP 서버의 기능을 OpenAPI 규격에 맞춰 제공함
  • 웹 표준 : 보안, 안정성 및 확장성을 위한 신뢰할 수 있는 웹 표준 사용
  • 문서화 : 모든 도구들에 대한 문서(OpenAPI Doc)를 생성한다.
  • 순수한 HTTP사용 : 소켓이나 별도 연결 코드를 사용하지 않아 예상치 못한 문제를 최소화
  • 다양한 연결 방식 : stdio, SSE, Streamable HTTP 방식의 MCP 서버 처리 가능
  • MCPO를 사용하면 위 기능들을 별도의 추가적인 노력 없이 사용할 수 있음

SSE 와 Streamable HTTP
공통점 : 하나의 HTTP 연결 위에서 스트리밍(데이터를 쪼개서 지속적으로 전송)함
SSE : 서버 -> 클라이언트 의 단방향 통신 (구현 단순), 프로토콜 규격
Streamable HTTP : 주고받는 요청 속에서 응답을 쪼개서 담는 패턴이나 방식. 프로토콜/규격이 아님. 커스터마이징을 통해 양방향처럼 보이는 통신도 가능

설치 및 실행 방법

기본 실행 방법

1
2
3
4
5
6
7
8
9
10
11
# uvx
uvx mcpo --port 8080 --api-key "secret-api-key" -- your_mcp_server_command

# uv
uv add mcpo
uv run mcpo --port 8080 --api-key "secret-api-key" -- your_mcp_server_command

# pip, conda ...
pip install mcpo
conda install mcpo
-> mcpo --port 8080 --api-key "secret-api-key" -- your_mcp_server_command

옵션 : SSE MCP 서버와 연결하기

  • 서버 유형 설정 : --server-type sse
  • 엔드포인트 지정 : http://127.0.0.1:8001/sse
1
2
mcpo --port 8000 --api-key "top-secret"\
     --server-type "sse" -- http://127.0.0.1:8001/sse
  • 헤더 제공
1
2
3
4
mcpo --port 8000 --api-key "top-secret"\
     --server-type "sse"\
     --header '{"Authorization": "Bearer token", "X-Custom-Header": "value"}'\
     -- http://127.0.0.1:8001/sse

옵션 : Streamable HTTP

  • 서버 유형 설정 : --server-type streamable-http
  • 엔드포인트 지정 : http://127.0.0.1:8001/mcp
1
2
mcpo --port 8000 --api-key "top-secret"\
     --server-type "streamable-http" -- http://127.0.0.1:8002/mcp

Reference

https://github.com/open-webui/mcpo

Comments