AI

Open-webui mcpo

조병희 2025. 5. 28. 12:03

MCPO(Model Context Protocol OpenAPI Proxy)는 Open WebUI에서 MCP(Model Context Protocol) 기반 도구를 표준 RESTful OpenAPI 서버로 노출시키는 프록시 서버입니다. 이를 통해 MCP 도구를 Open WebUI 및 기타 OpenAPI 호환 애플리케이션과 쉽게 통합할 수 있습니다.

1. MCP 도구를 OpenAPI 서버로 변환

MCPO는 MCP 서버 명령을 받아 이를 표준 RESTful OpenAPI로 변환하여, 도구들이 LLM 에이전트 및 OpenAPI 서버를 기대하는 앱과 함께 작동하도록 합니다.

2. 보안 및 확장성 향상

MCPO는 신뢰할 수 있는 웹 표준을 사용하여 보안, 안정성 및 확장성을 추가합니다. 또한, 인증, 오류 처리 등의 표준 기능을 제공하여 MCP 도구의 사용성을 높입니다.

3. 자동 문서화 제공

MCPO는 각 도구에 대한 인터랙티브한 OpenAPI 문서를 자동으로 생성하여, 추가 구성 없이도 도구의 사용법을 쉽게 파악할 수 있습니다.

 

vi mcpo-config.json

{
  "mcpServers": {
    "desktop-commander": {
      "command": "npx",
      "args": ["@wonderwhy-er/desktop-commander@latest"]
    }
  }
}

uvx mcpo --port 3010 --config ./mcpo-config.json

혹은 직접 내용 입력 (다른 예시)

mcpo --port 3010 -- npx -y @upstash/context7-mcp@latest

여기에서 --(공백) 이 중요한 의미를 가집니다.

mcpo --port 3010 여기까지가 한 덩어리이고 이후 npx -y @upstash/context7-mcp@latest 이 한 덩어리라는 의미입니다. 즉 -y 이런 것은 mcpo의 파라메터가 아니라는 뜻입니다.

uvx mcpo --port 3010 --config ./mcpo-config.json 
Starting MCP OpenAPI Proxy with config file: ./mcpo-config.json
2025-05-28 12:06:59,594 - INFO - Starting MCPO Server...
2025-05-28 12:06:59,594 - INFO -   Name: MCP OpenAPI Proxy
2025-05-28 12:06:59,594 - INFO -   Version: 1.0
2025-05-28 12:06:59,594 - INFO -   Description: Automatically generated API from MCP Tool Schemas
2025-05-28 12:06:59,594 - INFO -   Hostname: CWA019051.local
2025-05-28 12:06:59,594 - INFO -   Port: 3010
2025-05-28 12:06:59,594 - INFO -   API Key: Not Provided
2025-05-28 12:06:59,594 - INFO -   CORS Allowed Origins: ['*']
2025-05-28 12:06:59,594 - INFO -   Path Prefix: /
2025-05-28 12:06:59,594 - INFO - Loading MCP server configurations from: ./mcpo-config.json
2025-05-28 12:06:59,595 - INFO - Configured MCP Servers:
2025-05-28 12:06:59,595 - INFO -   Configuring Stdio MCP Server 'desktop-commander' with command: npx with args: ['@wonderwhy-er/desktop-commander@latest']
2025-05-28 12:06:59,595 - INFO - Uvicorn server starting...
INFO:     Started server process [89444]
INFO:     Waiting for application startup.
npm warn exec The following package was not found and will be installed: @wonderwhy-er/desktop-commander@0.2.1
Loading schemas.ts
Loading server.ts
Setting up request handlers...
[desktop-commander] Initialized FilteredStdioServerTransport
Loading configuration...
Configuration loaded successfully
Connecting server...
Server connected successfully
Generating tools list...
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:3010 (Press CTRL+C to quit)

 

http://127.0.0.1:3010/docs

그 외, 여러 가지 방법으로 등록할 수 있습니다.

파이썬을 사용하는 경우:

pip install mcpo
mcpo --port 8000 --api-key "top-secret" -- your_mcp_server_command

SSE 호환 MCP 서버를 사용하려면 서버 유형과 엔드포인트를 지정하기만 하면 됩니다.

mcpo --port 8000 --api-key "top-secret" --server-type "sse" -- http://127.0.0.1:8001/sse

Streamable HTTP 호환 MCP 서버를 사용하려면 서버 유형과 엔드포인트를 지정하십시오.

mcpo --port 8000 \
--api-key "top-secret" \
--server-type "streamable_http" \
-- \
http://127.0.0.1:8002/mcp

설치 없이 Docker를 통해 mcpo를 실행할 수도 있습니다.

docker run \
-p 8000:8000 \
ghcr.io/open-webui/mcpo:main \
--api-key "top-secret" \
-- \
your_mcp_server_command

예시:

uvx mcpo --port 8000 \
--api-key "top-secret" \
-- \
uvx mcp-server-time \
--local-timezone=Aisa/Seoul

이제 생성된 OpenAPI 스키마와 함께 http://localhost:8000에서 MCP 도구를 사용할 수 있습니다.