
Membrane MCP Server
Expose actions from your connected Membrane integrations to AI agents as MCP tools.
Add to your client
Copy the config for your MCP client and paste it into its config file.
git clone https://github.com/membranehq/mcp-server.gitPaste into ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"membrane-mcp-server": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://<HOSTED_MCP_SERVER_URL>/sse?token={ACCESS_TOKEN}"
]
}
}
}Claude Desktop connects to remote servers through the `mcp-remote` proxy (installed on first run via npx). Restart Claude Desktop after saving.
Step-by-step guides: Add to Claude Desktop · Add to Cursor · Add to Windsurf
Before you start
- Node.js v18 or higher
- A Membrane account (getmembrane.com)
- A Membrane access token for authentication
- At least one integration connected on Membrane to expose its actions as tools
- A self-hosted/deployed instance of the server (HOSTED_MCP_SERVER_URL)
About Membrane MCP Server
The Membrane MCP Server bridges the Membrane embedded-integration platform to MCP clients. After you connect SaaS apps to your Membrane account, the server publishes each integration's actions as MCP tools, so an AI agent can read and act across those apps (for example sending or reading Gmail messages). It supports both Streamable HTTP (/mcp, recommended) and the deprecated SSE (/sse) transports, a static mode that exposes all connected tools, and a dynamic mode that exposes a single enable-tools tool for selective, per-session tool activation. It also offers an experimental persistent chat-session feature via an x-chat-id header on the streamable-HTTP transport.
Tools & capabilities (2)
enable-toolsAvailable in dynamic mode (?mode=dynamic). The only tool returned in dynamic mode; call it with a list of tool names (e.g. ['gmail-send-email', 'gmail-read-email']) to selectively enable the specific integration actions you want available for that session.
<integration>-<action> (e.g. gmail-send-email, gmail-read-email)In static mode the server dynamically returns one tool per action of every connected Membrane integration. The exact set of tools depends on which integrations the authenticated token has active connections for; tools can be scoped to specific apps with the ?apps= query parameter.
When to use it
- Give an AI agent access to actions across all of a user's connected Membrane integrations through a single MCP endpoint
- Let an LLM send and read email or manage calendar/docs via connected apps like Gmail, Google Calendar, and Google Docs
- Use dynamic mode to let the agent selectively enable only the most relevant tools for a given user query
- Scope an MCP session to a specific subset of integrations using the ?apps= parameter
- Maintain persistent, per-conversation context with the experimental x-chat-id chat-session feature
Security notes
Authentication uses a Membrane access token, passed either as a `token` query parameter or via an `Authorization: Bearer` header. The Cursor and Claude Desktop config examples embed the token directly in the connection URL (`/sse?token={ACCESS_TOKEN}`), so treat that config file as a secret. The SSE transport is deprecated as of the November 5, 2024 MCP spec; prefer the Streamable HTTP `/mcp` endpoint for new setups. The server is self-hosted, so you control where the `HOSTED_MCP_SERVER_URL` instance runs.
Membrane MCP Server FAQ
Is there a hosted version, or do I have to run it myself?
The README documents self-hosting: clone the repo, run npm install/build, and deploy your own instance to any cloud host (a Dockerfile is included). You then point clients at your own HOSTED_MCP_SERVER_URL.
Which transport should I use?
Streamable HTTP at the /mcp endpoint is recommended and supports bidirectional streaming. The SSE transport at /sse is deprecated as of the November 5, 2024 MCP spec, though the Cursor and Claude Desktop config examples in the README still use the /sse URL.
What is the difference between static and dynamic mode?
Static mode (the default) returns all available tools for every connected integration. Dynamic mode (?mode=dynamic) returns only the enable-tools tool, which you call to selectively enable the specific tools needed for that session.
How do I authenticate?
Provide a Membrane access token either as a token query parameter (?token=ACCESS_TOKEN) or via an Authorization: Bearer ACCESS_TOKEN header.
Which tools will the server expose?
It exposes the actions of whatever integrations are connected to the Membrane account tied to your access token. You can limit the result to specific integrations with the ?apps= query parameter, e.g. ?apps=google-calendar,google-docs.
Alternatives to Membrane MCP Server
Compare all alternatives →AI-powered task-management system for AI-driven development that drops into Cursor, Windsurf, Claude Code, and more.
Background computer-use MCP server that drives native macOS, Windows, and Linux desktop apps without stealing focus.
Self-hosted MCP server for Jira and Confluence Cloud and Server/Data Center.
Compare Membrane MCP Server with: