multify-mcp
v0.1.5
Published
JavaScript helpers and schemas for the hosted Multify MCP.
Readme
multify-mcp
multify-mcp is the hosted, first-party MCP for Multify.
It is one MCP server with the full Multify account surface behind it. Contacts, lists, membership actions, and future workspace capabilities all live behind the same server and the same workspace key.
How Multify MCP works
There is only one hosted Multify MCP server. It lives behind the Multify API host and uses a workspace-scoped MCP key generated inside the app.
This is not Claude-specific. Any client, agent runtime, or connector platform that supports remote MCP over HTTP should use the same hosted endpoint and the same workspace key model.
The fixed hosted endpoint is:
https://app.multifyco.com/mcpFor normal usage, the user should only need one secret:
- create a workspace MCP key inside Multify
- paste that key into the MCP client
The base URL is fixed by Multify. It should not be something the user has to discover.
Quick start
1. Generate a workspace key
Inside Multify:
- open
Settings - open the
MCPsection - create a workspace-scoped key
- copy it once
The key belongs to the workspace, not to an individual contact/list tool.
2. Connection details for any MCP client
Use this connection contract:
Name: multify-mcp
Transport: http
URL: https://app.multifyco.com/mcp
Authorization: Bearer YOUR_MULTIFY_MCP_KEYIf your client uses a config file instead of a CLI, the shape is usually equivalent to:
{
"mcpServers": {
"multify-mcp": {
"transport": "http",
"url": "https://app.multifyco.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_MULTIFY_MCP_KEY"
}
}
}
}Field names vary between clients, but the invariants do not:
- use the fixed URL
https://app.multifyco.com/mcp - use remote HTTP MCP transport
- send
Authorization: Bearer ...
3. Claude Code token-only helper
npx multify-mcp claude add --token YOUR_MULTIFY_MCP_KEYThat helper wraps the fixed hosted URL for you and runs the Claude Code command. It is a convenience layer, not the primary product model.
Raw Claude Code command:
claude mcp add --transport http multify-mcp https://app.multifyco.com/mcp \
--header "Authorization: Bearer YOUR_MULTIFY_MCP_KEY"Claude Code expects auth for remote HTTP MCP servers through --header, so the token is carried in the standard Authorization: Bearer ... header. The only secret is still the workspace MCP key.
4. Connect from custom connectors
Endpoint:
https://app.multifyco.com/mcpHeader:
Authorization: Bearer YOUR_MULTIFY_MCP_KEY5. Connect from any remote MCP client
Any client that supports remote MCP over Streamable HTTP can use the same hosted endpoint and the same Bearer token pattern.
There is no extra base URL the user needs to discover or configure manually. The hosted Multify MCP endpoint is fixed on the API host.
What this MCP exposes
multify-mcp is one server with one workspace boundary. It currently exposes Multify workspace operations such as:
- contacts
- lists
- list membership actions
- bulk create/update flows
It does not ask the user to wire Gmail, HubSpot, or other third-party accounts through the MCP itself. Those connections stay inside the Multify app.
Security model
- keys are workspace-scoped
- keys are created by workspace owners/admins in the app
- scopes control what the MCP can do
- all operations are still enforced by Multify as the source of truth
- the MCP is an interface over Multify, not a parallel database or permissions system
Python package
The user-facing Python package is:
pip install multify-mcpLocal runtime command:
multify-mcpThis repo intentionally treats the Python runtime as one package: multify-mcp.
Python helper example:
from multify_mcp import build_remote_mcp_connection
connection = build_remote_mcp_connection("YOUR_MULTIFY_MCP_KEY")
print(connection.url)
print(connection.headers["Authorization"])
print(connection.as_dict())That helper is generic. It is not tied to Claude or any single MCP client.
npm package
The public npm package is also multify-mcp.
npm install multify-mcpCLI helper:
npx multify-mcp claude add --token YOUR_MULTIFY_MCP_KEYExample:
import {
buildAuthorizationHeaders,
buildRemoteMcpConnection,
buildClaudeCodeAddArgs,
buildClaudeCodeAddCommand,
contactCreateInputSchema,
DEFAULT_MULTIFY_MCP_URL,
} from "multify-mcp";
const headers = buildAuthorizationHeaders(process.env.MULTIFY_MCP_KEY ?? "");
const connection = buildRemoteMcpConnection(process.env.MULTIFY_MCP_KEY ?? "");
const args = buildClaudeCodeAddArgs(process.env.MULTIFY_MCP_KEY ?? "");
const command = buildClaudeCodeAddCommand(process.env.MULTIFY_MCP_KEY ?? "");
const payload = contactCreateInputSchema.parse({
list_id: "list_123",
full_name: "Ada Lovelace",
email: "[email protected]",
});
console.log(DEFAULT_MULTIFY_MCP_URL);
console.log(headers.Authorization);
console.log(connection);
console.log(args);
console.log(command);
console.log(payload);The npm side is now one package too. There are no separate public npm packages for contracts and SDK anymore. The generic helper is buildRemoteMcpConnection; the Claude helper is optional.
Local development
Requirements:
- Node 22+
- pnpm 11+
- Python 3.12+
- uv
Bootstrapping:
pnpm install
pnpm build
pnpm check
UV_CACHE_DIR=/tmp/uv-cache uv run --group dev ruff check .
UV_CACHE_DIR=/tmp/uv-cache uv run --group dev pytest tests/py -qRelease flow
Full release gate:
pnpm install
npm run release:verifyPublish Python:
export UV_PUBLISH_TOKEN=...
npm run release:publish:pyPublish npm helpers:
export NPM_TOKEN=...
npm run release:publish:npmMore detail lives in docs/publishing.md.
Repo structure
servers/remote-mcp-py: hosted Python runtime formultify-mcpsrc: TypeScript schemas and helpers shipped in the public npm packagemultify-mcptests/py: auth, HTTP, and tool-service coverage
