Skip to main content
Pick your client below. The hosted server (https://mcp.didit.me/mcp) needs no API key — on first connect your client opens a browser and you Log in with Didit and approve the permissions.
Using Claude? The Connect Claude page has the one-click connector link that opens the Add custom connector dialog with the name and URL pre-filled, so you only have to confirm and sign in.
Clients that don’t yet speak remote/HTTP MCP (Windsurf, Zed) connect through the mcp-remote bridge, which forwards stdio to the hosted URL and handles the OAuth handshake for you.

Add the server with the CLI, then trigger the sign-in:
Start Claude Code and run /mcp — it opens the browser for Log in with Didit. After you approve, the didit tools are available.
No API key in the config. The hosted server authenticates you in the browser and acts as you — every organization you belong to, with your role’s permissions. See Authentication.
The hosted server answers GET https://mcp.didit.me/healthz with its version.

Verify your connection

After you sign in, ask your client:
The agent should call didit_context_get and show your organizations with their applications. If it says it has no Didit tools, the server did not connect or sign-in did not finish: see Troubleshooting.

Self-hosting

The hosted server is built from the open-source repository github.com/didit-protocol/mcp (MIT). Every release is also published to npm as @didit-protocol/mcp-server, so you can run the stdio server straight from npm or build either entry point from a clone. One codebase ships two entry points: Both modes act as a Didit user. There is no application API-key mode.
1

Clone and build

Or build the container: docker build -t didit-mcp .. The image runs dist/http.js as a non-root user, exposes port 3000 and has a health check on /healthz.
2

Run the HTTP server (OAuth)

Copy .env.example to .env and fill in the hosted-mode values, then:
The server is an OAuth resource server only. It needs MCP_RESOURCE_URI set to the full public URL of the transport (for example https://mcp.example.com/mcp, not the bare origin) and the credentials it uses to introspect tokens (MCP_OAUTH_CLIENT_ID, MCP_OAUTH_CLIENT_SECRET) against the Didit authorization server. The full variable list is in Advanced → self-hosting.
3

Or run it over stdio (headless)

For a local agent that cannot run an OAuth flow, run the published package (no clone needed) and pass a user access token in the environment:
From a clone, DIDIT_ACCESS_TOKEN=<user-access-token> node dist/index.js does the same. Without a token, the agent can sign in with didit_account_login, followed by didit_account_verify_2fa when the account has two-factor authentication.Optional MCP_DEFAULT_ORG and MCP_DEFAULT_APP pin the scope for single-tenant setups. Register it in Claude Code with:
Or in Cursor’s mcp.json:
The open-source stdio server does not include the hosted server’s Travel Rule, marketplace, fraud network and transaction SDK token tools, or its compliance tools other than building a workflow. It adds didit_org_top_up, didit_org_reveal_application_api_key, and five account-setup tools (didit_account_register, didit_account_verify_email, didit_account_resend_otp, didit_account_login, didit_account_verify_2fa) that take credentials as arguments and therefore never ship on a remote connector. File-taking tools also accept *_path arguments on stdio, since the server shares your filesystem.

Next steps

Authentication

Sign-in, scopes, and roles.

Tools reference

Everything the agent can call.
Last modified on October 31, 2026