Integration App MCP Server

oficial

Interactúa con cualquier otra aplicación SaaS en nombre de tus clientes.

Documentación

Servidor MCP de Membrane

Screenshot 2025-07-07 at 23 03 05

El Servidor MCP de Membrane es un servidor Model Context Protocol (MCP), que proporciona acciones para integraciones conectadas en Membrane como herramientas.

Aquí está nuestro Ejemplo de Agente de IA oficial que muestra cómo usar este servidor MCP en tu aplicación.

📋 Requisitos previos

  • Node.js (v18 o superior)
  • Una cuenta de Membrane

⚙️ Instalación

git clone https://github.com/membranehq/mcp-server.git
cd mcp-server
npm install
npm run build

🛠️ Desarrollo local

Para ejecutar el servidor de desarrollo localmente, inícialo con:

npm run dev

El servidor estará activo en http://localhost:3000 ⚡️

🧪 Ejecución de pruebas

# Run the server in test mode
npm run start:test

# then run tests
npm test

🚀 Despliegue

Despliega tu propia instancia de este servidor MCP en cualquier servicio de alojamiento en la nube de tu elección.

🐳 Docker

El proyecto incluye un Dockerfile para un despliegue contenedorizado sencillo.

docker build -t membrane-mcp-server .
docker run -p 3000:3000 membrane-mcp-server

🔗 Conexión al servidor MCP

Este servidor MCP admite dos transportes:

TransporteEndpointEstado
SSE (Eventos enviados por el servidor)/sse🔴 Obsoleto — obsoleto desde el 5 de noviembre de 2024 en la especificación MCP
HTTP (HTTP transmitible)/mcp🟢 Recomendado — reemplaza a SSE y admite transmisión bidireccional

🔐 Autenticación

Proporciona un token de acceso de Membrane mediante consulta o el encabezado Authorization:

?token=ACCESS_TOKEN
Authorization: Bearer ACCESS_TOKEN

SSE (Obsoleto)

await client.connect(
  new SSEClientTransport(
    new URL(
      `https://<HOSTED_MCP_SERVER_URL>/sse`
    )
    {
      requestInit: {
        headers: {
          Authorization: `Bearer ${ACCESS_TOKEN}`,
        },
      },
    }
  )
);

HTTP transmitible (Recomendado)


await client.connect(
  new StreamableHTTPClientTransport(
    new URL(`https://<HOSTED_MCP_SERVER_URL>/mcp`)
    {
      requestInit: {
        headers: {
          Authorization: `Bearer ${ACCESS_TOKEN}`,
        },
      },
    }
  )
);

⚡ Modo estático vs dinámico

Por defecto, el servidor MCP se ejecuta en modo estático, lo que significa que devuelve todas las herramientas disponibles (acciones) para todas las integraciones conectadas.

Con el modo dinámico (?mode=dynamic), el servidor solo devolverá una herramienta: enable-tools. Puedes usar esta herramienta para habilitar selectivamente las herramientas que realmente necesitas para esa sesión.

En modo dinámico, tu implementación debe determinar qué herramientas son más relevantes para la consulta del usuario. Una vez identificadas, solicita al LLM que llame a la herramienta enable-tools con la lista apropiada.

¿Quieres ver cómo funciona esto en la práctica? Consulta nuestro Ejemplo de Agente de IA.

import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';

const client = new Client({
  name: 'example-membrane-mcp-client',
  version: '1.0.0',
});

const transport = new StreamableHTTPClientTransport(
  new URL(`https://<HOSTED_MCP_SERVER_URL>/mcp?mode=dynamic`),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${ACCESS_TOKEN}`,
      },
    },
  }
);

await client.connect(transport);

await client.callTool({
  name: 'enable-tools',
  arguments: {
    tools: ['gmail-send-email', 'gmail-read-email'],
  },
});

🔧 Obtención de herramientas para integraciones específicas

En modo estático, el servidor MCP obtiene herramientas de todas las conexiones activas asociadas con el token proporcionado.

Puedes optar por obtener herramientas solo para una integración específica pasando el parámetro de consulta apps: /mcp?apps=google-calendar,google-docs

💬 Gestión de sesiones de chat (Experimental)

El servidor MCP (solo transporte HTTP transmitible) admite sesiones de chat persistentes. Incluye un encabezado x-chat-id en tus solicitudes para rastrear automáticamente las sesiones de ese chat específico. Esta es una característica experimental que proporcionamos además de las sesiones MCP estándar.

Iniciar una nueva sesión de chat:

POST /mcp
Authorization: Bearer YOUR_ACCESS_TOKEN
x-chat-id: my-awesome-chat-123

Recuperar tus sesiones de chat:

GET /mcp/sessions
Authorization: Bearer YOUR_ACCESS_TOKEN

Respuesta:

{
  "my-awesome-chat-123": "session-uuid-1",
  "another-chat-456": "session-uuid-2"
}

Esta característica te permite usar la misma sesión para una conversación. Consulta nuestro Ejemplo de Agente de IA para ver cómo funciona esto en la práctica.

Configuración de otros clientes MCP

📝 Cursor

Para usar este servidor con Cursor, actualiza el archivo ~/.cursor/mcp.json:

{
  "mcpServers": {
    "membrane": {
      "url": "https://<HOSTED_MCP_SERVER_URL>/sse?token={ACCESS_TOKEN}"
    }
  }
}

Reinicia Cursor para que los cambios surtan efecto.

🤖 Claude Desktop

Para usar este servidor con Claude, actualiza el archivo de configuración (Configuración > Desarrollador > Editar configuración):

{
  "mcpServers": {
    "membrane": {
      "url": "https://<HOSTED_MCP_SERVER_URL>/sse?token={ACCESS_TOKEN}"
    }
  }
}

🔧 Solución de problemas

  • Asegúrate de que tu token de acceso sea válido y lo estés generando según estas instrucciones
  • Revisa los registros del servidor MCP para ver si hay errores o problemas durante el inicio o los intentos de conexión.
  • Usa el Inspector MCP para pruebas y depuración