Before you start
The Ditto MCP server lives at:Claude Code
Claude Code supports remote MCP servers natively.Local scope (default)
Adds the Ditto MCP server for your own use in the current project. This is private to you and won’t be visible to other team members.Project scope
Shares the Ditto MCP configuration with your entire team via version control. This creates a.mcp.json file at your project root that can be checked into source control.
.mcp.json file to your project root:
User scope
Adds the Ditto MCP server across all of your projects. This is private to you but available everywhere.Log in
After adding the server with any scope, restart any active instances of Claude Code. Then run/mcp, select ditto, and choose Authenticate. A browser tab opens for you to log in to Ditto and approve access.
Approve the connection to see Ditto MCP tools in your tool list.
Cursor, VS Code, Windsurf
These clients support remote MCP servers with Streamable HTTP natively.1
Open MCP settings
- Cursor: Go to Cursor Settings > Tools & MCP and click + Add new MCP server.
- VS Code: Open your user or workspace
mcp.jsonand add toservers. - Windsurf: Open your MCP configuration file.
2
Add the server configuration
Cursor (VS Code (Windsurf (MCP configuration file):
~/.cursor/mcp.json or workspace .cursor/mcp.json):~/.vscode/mcp.json or workspace .vscode/mcp.json):3
Log in and verify
After saving, your client prompts you to log in to Ditto and approve access. Complete the login in the browser tab that opens, then check your MCP settings — a green status indicator next to the Ditto server means you’re connected.
Codex
Codex supports remote MCP servers over Streamable HTTP, with OAuth as the default authentication method.Add the server
~/.codex/config.toml yourself:
.codex/config.toml in the project root. Codex reads project-level configuration for trusted projects only.
Log in
codex mcp list.
Figma Make
1
Open connector settings
From the chat box, select Add context, hover over Connectors, then choose Manage.
2
Create a new connector
Navigate to the Created by you tab and click Create. Enter “Ditto” as the connector name.
3
Set the MCP server URL
Enter the following URL and click Create:
4
Connect and log in
Click Connect on the connector. Figma Make picks up Ditto’s OAuth flow and opens a browser tab where you log in to Ditto and approve access.
5
Enable tools
Review the available tools and enable the ones you’d like to use.
Figma Make reaches MCP servers over HTTPS only. It doesn’t support localhost or stdio servers.
Other clients
If your MCP client doesn’t support Streamable HTTP or SSE natively, use themcp-remote package as a bridge. It runs the OAuth flow for you and opens a browser tab for login on first use.
This also applies if you’re on Cursor 2.6.x, which has a known bug where the V2 MCP handler doesn’t fall back from Streamable HTTP to SSE — it retries indefinitely instead of connecting. Use the mcp-remote config below as a workaround until the bug is fixed.
Configuration using mcp-remote
Configuration using mcp-remote
Authenticating with an API token
OAuth is the recommended way to connect, but the MCP server also accepts a Ditto API token. Use a token when there’s no browser to log in with or no OAuth support to rely on:- Continuous integration and other automated pipelines
- Headless agents running on a server
- Machine-to-machine access, where the credential belongs to a system rather than a person
- MCP clients that don’t support OAuth
Authorization header as token <your-api-token>.
Figma Make
Figma Make
Follow the Figma Make steps, but before clicking Connect, open Advanced settings and add a custom request header:
- Header name:
Authorization - Header value:
token <your-api-token>
Claude Code
Claude Code
Add For project scope, reference an environment variable so the file stays free of secrets:Or manually, in Each team member then sets the
--header to any of the scoped commands:.mcp.json:DITTO_API_TOKEN environment variable with their own API token.Codex
Codex
Add an To keep the token out of the file, use Codex sends the environment variable’s value as the header verbatim, so include the Skip
Authorization header to the server entry in ~/.codex/config.toml:env_http_headers to pull the header value from an environment variable instead:token prefix when you set it:bearer_token_env_var — it sends the credential as Authorization: Bearer <token>, which Ditto reads as an OAuth access token and rejects.Cursor, VS Code, Windsurf
Cursor, VS Code, Windsurf
Add a VS Code (Windsurf (MCP configuration file):
headers object to the server configuration.Cursor (~/.cursor/mcp.json or workspace .cursor/mcp.json):~/.vscode/mcp.json or workspace .vscode/mcp.json):mcp-remote with an API token
mcp-remote with an API token