/ Directorio / Playground / mcpo (MCP-to-OpenAPI)
● Comunidad open-webui ⚡ Instantáneo

mcpo (MCP-to-OpenAPI)

por open-webui · open-webui/mcpo

Envuelve cualquier servidor MCP en OpenAPI — /docs instantáneos, esquemas de petición/respuesta, OAuth — para que cualquier cliente HTTP (o modelo que no hable MCP) pueda llamarlo.

mcpo es un shim FastAPI minimalista del equipo de Open WebUI que convierte cualquier servidor MCP stdio en un servicio HTTP OpenAPI estándar. Envuelves un comando MCP (mcpo -- uvx mcp-server-time) y obtienes al instante /openapi.json, /docs (Swagger), JSON Schema para cada herramienta y soporte OAuth. Útil cuando quieres que un servidor MCP sea accesible desde clientes que no hablan MCP (curl, Postman, function-calling de OpenAI, servicios internos) sin modificar el servidor upstream.

Por qué usarlo

Características clave

Demo en vivo

Cómo se ve en la práctica

mcpo-openapi-mcp.replay ▶ listo
0/0

Instalar

Elige tu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "mcpo-openapi-mcp": {
      "command": "uvx",
      "args": [
        "mcpo",
        "--",
        "uvx",
        "mcp-server-time"
      ]
    }
  }
}

Abre Claude Desktop → Settings → Developer → Edit Config. Reinicia después de guardar.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "mcpo-openapi-mcp": {
      "command": "uvx",
      "args": [
        "mcpo",
        "--",
        "uvx",
        "mcp-server-time"
      ]
    }
  }
}

Cursor usa el mismo esquema mcpServers que Claude Desktop. La configuración del proyecto prevalece sobre la global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "mcpo-openapi-mcp": {
      "command": "uvx",
      "args": [
        "mcpo",
        "--",
        "uvx",
        "mcp-server-time"
      ]
    }
  }
}

Haz clic en el icono MCP Servers de la barra lateral de Cline y luego en "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "mcpo-openapi-mcp": {
      "command": "uvx",
      "args": [
        "mcpo",
        "--",
        "uvx",
        "mcp-server-time"
      ]
    }
  }
}

Mismo formato que Claude Desktop. Reinicia Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "mcpo-openapi-mcp",
      "command": "uvx",
      "args": [
        "mcpo",
        "--",
        "uvx",
        "mcp-server-time"
      ]
    }
  ]
}

Continue usa un array de objetos de servidor en lugar de un mapa.

~/.config/zed/settings.json
{
  "context_servers": {
    "mcpo-openapi-mcp": {
      "command": {
        "path": "uvx",
        "args": [
          "mcpo",
          "--",
          "uvx",
          "mcp-server-time"
        ]
      }
    }
  }
}

Añádelo a context_servers. Zed recarga en caliente al guardar.

claude mcp add mcpo-openapi-mcp -- uvx mcpo -- uvx mcp-server-time

Un solo comando. Verifica con claude mcp list. Quita con claude mcp remove.

Casos de uso

Usos del mundo real: mcpo (MCP-to-OpenAPI)

Cómo llamar a un servidor MCP desde curl / Postman / function-calling de OpenAI

👤 Desarrolladores backend cuyo runtime aún no habla MCP ⏱ ~15 min intermediate

Cuándo usarlo: Elegiste un gran servidor MCP, pero tu stack de producción es un servicio Python / OpenAI Assistants API / algo que quiere HTTP+JSON.

Requisitos previos
  • Un comando MCP que normalmente lanzarías — p. ej. uvx mcp-server-time o npx -y @modelcontextprotocol/server-fetch
Flujo
  1. Envolver
    Ejecuta uvx mcpo --port 8000 -- uvx mcp-server-time y confirma que /docs está disponible.✓ Copiado
    → La UI Swagger muestra las herramientas como endpoints
  2. Llamar desde curl
    Muéstrame un curl funcional que llame a la herramienta time con timezone=America/Los_Angeles.✓ Copiado
    → Devuelve la hora actual + info de zona horaria
  3. Conectar a OpenAI
    Genera un spec de function-calling desde /openapi.json que pueda pegar en la API de OpenAI.✓ Copiado
    → Spec generado; llamada de prueba rápida exitosa

Resultado: Un servidor MCP que un backend sin MCP puede manejar mediante HTTP.

Errores comunes
  • Las herramientas de larga duración se agota el tiempo bajo los ajustes uvicorn predeterminados — Pasa --timeout-keep-alive 600 a mcpo, o ponlo detrás de nginx con timeouts equivalentes

Ejecutar varios MCPs detrás de un solo servicio HTTP

👤 Ingenieros de plataforma que consolidan muchos MCPs ⏱ ~30 min intermediate

Cuándo usarlo: Quieres una sola URL que aloje los MCPs de time, fetch y filesystem, cada uno en su propio prefijo de ruta.

Flujo
  1. Componerlos
    Escribe la configuración mcpo para 3 servidores — time en /time, fetch en /fetch, filesystem en /fs.✓ Copiado
    → config.yaml con 3 servicios; mcpo los sirve
  2. Añadir OAuth
    Configura autenticación JWT con el emisor de mi tenant de Auth0. Los endpoints requieren un token válido.✓ Copiado
    → Las llamadas sin token devuelven 401

Resultado: Un único punto de entrada HTTP seguro que aloja varios MCPs.

Errores comunes
  • Las herramientas colisionan cuando 2 servidores exponen el mismo nombre — mcpo añade namespace por prefijo; los conflictos de herramientas se resuelven por la ruta URL

Usar un MCP como parte de una suite de tests de integración HTTP

👤 Equipos de QA / SDET ⏱ ~25 min advanced

Cuándo usarlo: Quieres verificar el comportamiento de tu servidor MCP con herramientas de test HTTP estándar.

Flujo
  1. Levantar en CI
    Añade un job de GitHub Actions que ejecute mcpo envolviendo nuestro MCP y luego ejecute Playwright/pytest contra él.✓ Copiado
    → Archivo de workflow escrito; pasa localmente
  2. Aserciones de esquema
    Guarda un snapshot de /openapi.json. Haz fallar la build si el esquema cambia sin un cambio explícito en el código fuente.✓ Copiado
    → Guardia de diff de esquema en CI

Resultado: Pipeline de tests HTTP estándar aplicado a un servidor MCP.

Errores comunes
  • Inestable si el MCP subyacente importa dependencias pesadas al arrancar — Añade un bucle de espera /healthz antes de que corran los tests
Combinar con: github

Combinaciones

Combínalo con otros MCPs para multiplicar por 10

mcpo-openapi-mcp + filesystem

Persiste el /openapi.json generado en tu repo para revisión

mcpo-openapi-mcp + github

Abrir un PR cuando el spec OpenAPI cambia

Herramientas

Lo que expone este MCP

HerramientaEntradasCuándo llamarCoste
GET /docs (navegador) Explorar la superficie de herramientas visualmente gratis
GET /openapi.json (ninguno) Generación de código / specs de function-calling gratis
POST /<tool> Cuerpo JSON coincidiendo con el esquema de entrada de la herramienta Invocar una herramienta MCP envuelta mediante HTTP 1 llamada MCP subyacente

Coste y límites

Lo que cuesta ejecutarlo

Cuota de API
Limitado por las cuotas del MCP envuelto
Tokens por llamada
Añade ~50 tokens de sobrecarga
Monetario
Gratis (Apache 2.0)
Consejo
Envuelve una vez por proceso; no arranques un nuevo subproceso por petición

Seguridad

Permisos, secretos, alcance

Almacenamiento de credenciales: Se transfieren al MCP envuelto mediante variables de entorno; mcpo no almacena nada
Salida de datos: Dondequiera que el MCP envuelto hubiera egresado

Resolución de problemas

Errores comunes y soluciones

404 en /tool

El nombre de la herramienta en la URL debe coincidir exactamente con el nombre de la herramienta MCP (sensible a mayúsculas)

Verificar: Revisa /docs para la ruta correcta
El MCP subyacente se cayó

mcpo lo relanza por defecto pero registra el error — revisa stderr

OAuth 401 con token válido

Verifica que audience e issuer coincidan con tu configuración; el error típico es la barra final faltante

Verificar: Decodifica el JWT en jwt.io y compara aud/iss

Alternativas

mcpo (MCP-to-OpenAPI) vs otros

AlternativaCuándo usarlaContrapartida
sparfenyuk/mcp-proxySolo necesitas bridge de transporte stdio↔HTTP, sin superficie OpenAPImcp-proxy es más bajo nivel; mcpo te da /docs y OAuth
Escribir un wrapper FastAPI a manoNecesitas lógica de negocio muy específica junto al wrappermcpo te da el 90% gratis

Más

Recursos

📖 Lee el README oficial en GitHub

🐙 Ver issues abiertas

🔍 Ver todos los 400+ servidores MCP y Skills