Skip to main content
Glama
bvenkata

mcp-api-connect

by bvenkata

mcp-api-connect

License: MIT Python 3.10+

Un payload de entrada, cualquier API de salida. mcp-api-connect es un motor de conectores agnóstico de protocolo y autenticación: describe un servicio de destino (URL, protocolo, autenticación, forma de solicitud/respuesta) una vez, luego envíale un payload normalizado y recibe una respuesta normalizada — ya sea que el destino sea una API REST/JSON, un servicio SOAP heredado, protegido por una clave de API, autenticación básica, un token Bearer o credenciales de cliente OAuth2.

Se distribuye como tres cosas construidas sobre el mismo motor central, así que como quieras usarlo, puedes:

  • Una biblioteca de Pythonpip install mcp-api-connect, llama a MCPAPIConnectEngine directamente, sin necesidad de servidor.

  • Una API HTTP independientepip install mcp-api-connect[api], ejecuta mcp-api-connect-api, haz POST a /invoke.

  • Un servidor MCPpip install mcp-api-connect[mcp], ejecuta mcp-api-connect, apunta cualquier cliente MCP (Claude, etc.) hacia él para que un agente pueda llamar a conectores registrados — o servicios arbitrarios sobre la marcha — como herramientas.

Por qué

Cada proyecto de integración reinventa la misma rueda: un cliente REST aquí, un cliente SOAP allá, un flujo de autenticación por servicio, mapeo ad-hoc de solicitud/respuesta disperso por la base de código. mcp-api-connect centraliza eso en una especificación declarativa (InvokeSpec) y un motor de ejecución, de modo que añadir un nuevo servicio de destino es configuración, no código.

Related MCP server: MCP REST Server

Inicio rápido (biblioteca)

pip install mcp-api-connect
import asyncio
from mcp_api_connect import MCPAPIConnectEngine, InvokeSpec, Target, AuthSpec, AuthType, RequestFormat, ResponseFormat

spec = InvokeSpec(
    target=Target(base_url="https://api.example.com"),
    auth=AuthSpec(type=AuthType.API_KEY, config={"api_key": "secret", "header_name": "X-API-Key"}),
    request_format=RequestFormat(method="POST", path="/v1/orders", content_type="json"),
    response_format=ResponseFormat(content_type="json"),
)

async def main():
    async with MCPAPIConnectEngine() as engine:
        result = await engine.invoke(spec, {"customer": "jane"})
        print(result.success, result.data)

asyncio.run(main())

Inicio rápido (API HTTP)

pip install "mcp-api-connect[api]"
mcp-api-connect-api   # serves on :8000, interactive docs at /docs
curl -X POST http://localhost:8000/invoke -H 'content-type: application/json' -d '{
  "spec": {
    "target": {"base_url": "https://api.example.com"},
    "auth": {"type": "api_key", "config": {"api_key": "secret"}},
    "request_format": {"method": "POST", "path": "/v1/orders"},
    "response_format": {"content_type": "json"}
  },
  "payload": {"customer": "jane"}
}'

Registra un conector reutilizable una vez, luego invócalo por nombre:

curl -X POST http://localhost:8000/connectors -d '{"name": "orders-api", "spec": {...}}'
curl -X POST http://localhost:8000/connectors/orders-api/invoke -d '{"customer": "jane"}'

Inicio rápido (MCP)

pip install "mcp-api-connect[mcp]"
{
  "mcpServers": {
    "mcp-api-connect": { "command": "/path/to/.venv/bin/mcp-api-connect" }
  }
}

Expone herramientas: invoke (sin estado, de una sola vez), register_connector, list_connectors, invoke_connector (por nombre), delete_connector. Un agente puede registrar un conector para "la API de Salesforce" una vez, y luego simplemente decir "llámalo con este payload" de ahí en adelante.

➜ Configuración completa para Claude Desktop / Claude Code / Cursor, persistencia, notas de seguridad y un ejemplo práctico: docs/mcp-integration.md.

Conceptos principales

  • Target — URL base, protocolo (rest | soap), tiempo de espera, cabeceras por defecto.

  • AuthSpectype (none, api_key, basic, bearer, oauth2_client_credentials) + un dict config con la forma adecuada para ese tipo. Los tokens OAuth2 se obtienen y se almacenan en caché automáticamente.

  • RequestFormat / ResponseFormat — tipo de contenido (json, xml, soap) más un field_map declarativo ({"target.path": "$.source.jsonpath"}) para remodelar payloads sin escribir código, o una body_template de Jinja2 para control total (requerida para sobres SOAP).

  • InvokeSpec — agrupa los tres anteriores; la unidad de "cómo llegar a un servicio". Guárdalo como un Connector con nombre o pásalo en línea por llamada.

Consulta src/mcp_api_connect/core/models.py para el esquema completo, y docs/auth-reference.md para la forma de config que espera cada type de autenticación.

Documentación

  • docs/mcp-integration.md — configuración completa del cliente MCP (Claude Desktop, Claude Code, Cursor), persistencia, seguridad, referencia de herramientas, ejemplo práctico, solución de problemas

  • docs/auth-reference.md — campos de config para cada tipo de autenticación

  • CONTRIBUTING.md — configuración de desarrollo, ejecución de pruebas, expectativas de PR

Extensión

  • Nuevo tipo de autenticación: implementa AuthStrategy, regístralo mediante engine.register_auth_strategy(...).

  • Nuevo protocolo (p. ej. GraphQL): implementa ProtocolAdapter, regístralo mediante engine.register_adapter(...).

  • Nuevo backend de almacenamiento de conectores: implementa ConnectorStore (incluye InMemoryConnectorStore y SqliteConnectorStore, credenciales cifradas en reposo mediante Fernet).

Hoja de ruta

  • Flujo de código de autorización OAuth2, mTLS, estrategias de autenticación AWS SigV4

  • SOAP basado en WSDL (adaptador opcional respaldado por zeep, sin necesidad de sobre escrito a mano)

  • Adaptador GraphQL

  • ConnectorStore respaldado por Postgres

  • Políticas de reintento/backoff + limitación de tasa por conector

  • Lista blanca de destinos segura contra SSRF para despliegues públicos

Desarrollo

python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev,api,storage,mcp]"
pytest

Licencia

MIT — consulta LICENSE.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with over 2,800 APIs and applications through Pipedream's Connect platform. Provides managed OAuth authentication and API request capabilities for integrating multiple services through natural language.
  • F
    license
    A
    quality
    D
    maintenance
    Enables interaction with any REST API through token or login authentication, with automatic Swagger/OpenAPI documentation integration for endpoint discovery and comprehensive HTTP request support.
    7
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to discover, search, and call any REST API described by an OpenAPI or Swagger document. Supports multiple API endpoints with authentication and parameter handling.
    25
    MIT

View all related MCP servers

Related MCP Connectors

  • Connect AI assistants to Stellary projects, boards, documents, and governed agent workflows.

  • Search, document and execute authenticated API calls across 700+ apps via one MCP server

  • Connect MCP clients to 2,000+ AI models without managing provider API keys.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bvenkata/mcp-api-connect'

If you have feedback or need assistance with the MCP directory API, please join our Discord server