Connect an MCP server

How to add a server from mcp.tc to Claude Code, claude.ai, Claude Desktop, ChatGPT, Cursor, VS Code and other clients. Every step uses the server’s own URL or package, the same as the buttons on each listing.

Before you start

Every listing shows what to connect with at the top of its page: the server’s own URL for a remote server, or the install command for a local one. When we couldn’t confirm either, it links to the project’s own instructions. The badges under the name say what the server needs.

The steps below are the ones the Set up section of each listing shows, here for four example servers. Pick one with the tabs; the choice applies to every client on this page.

  • No sign-in: DeepWiki, verified, a remote server anyone can use, at https://mcp.deepwiki.com/mcp.
  • Sign-in: Notion, verified, a remote server that asks you to sign in with OAuth.
  • API key: a made-up server at mcp.example.com that needs a key in the Authorization header.
  • Local: Memory, verified, which your client starts with npx -y @modelcontextprotocol/server-memory.

On a listing page the same steps come filled in for that server, and the Add to buttons do the first step for you.

Claude Code

Claude Code adds servers from the terminal with claude mcp add. On a listing, Add to Claude Code copies the command.

No sign-in

  1. Run this in a terminal, in your project folder:
claude mcp add --transport http deepwiki https://mcp.deepwiki.com/mcp
  1. Start Claude Code and type /mcp. deepwiki should show as connected.

Add --scope user to make it available in every project, not just this one.

Sign-in

  1. Run this in a terminal, in your project folder:
claude mcp add --transport http notion https://mcp.notion.com/mcp
  1. Start Claude Code, type /mcp, pick notion and choose Authenticate. A browser window opens for the Notion sign-in.

Add --scope user to make it available in every project, not just this one.

API key

  1. Run this in a terminal, in your project folder:
claude mcp add --transport http example https://mcp.example.com/mcp --header "Authorization: Bearer <YOUR_API_KEY>"
  1. Replace the placeholder with your key before you run it, then check it with /mcp inside Claude Code.

Add --scope user to make it available in every project, not just this one.

Local

  1. Run this in a terminal, in your project folder:
claude mcp add --transport stdio memory -- npx -y @modelcontextprotocol/server-memory
  1. Start Claude Code and type /mcp. memory should show as connected.

Add --scope user to make it available in every project.

claude.ai

claude.ai adds remote servers as custom connectors. Add to claude.ai opens the connector form with the name and URL filled in. It can’t start local servers or send an API key header, so those listings don’t offer it.

No sign-in

  1. Open the connector form on claude.ai. This button fills in the name and URL for you:
  1. Check that the URL reads https://mcp.deepwiki.com/mcp and click Add.
  2. Turn it on in a chat from the tools menu.

Free plans allow one custom connector. On Team and Enterprise plans an owner adds it under Organization settings → Connectors.

Sign-in

  1. Open the connector form on claude.ai. This button fills in the name and URL for you:
  1. Check that the URL reads https://mcp.notion.com/mcp and click Add.
  2. Click Connect and sign in when Notion asks.

Free plans allow one custom connector. On Team and Enterprise plans an owner adds it under Organization settings → Connectors.

Claude Desktop

Remote servers go through Connectors, the same ones you see on claude.ai. Local servers go in its JSON config file. A server that needs a key header goes through the mcp-remote bridge, which runs on your computer.

No sign-in

  1. Open Settings → Connectors and click Add custom connector.
  2. Name it DeepWiki and paste this URL:
https://mcp.deepwiki.com/mcp
  1. Click Add. Its tools appear in the chat’s tools menu.

Claude Desktop’s JSON config file only starts local servers. Remote servers go through Connectors, and connectors you add on claude.ai show up here too.

Sign-in

  1. Open Settings → Connectors and click Add custom connector.
  2. Name it Notion and paste this URL:
https://mcp.notion.com/mcp
  1. Click Add, then Connect, and sign in when Notion asks.

Claude Desktop’s JSON config file only starts local servers. Remote servers go through Connectors, and connectors you add on claude.ai show up here too.

API key

  1. Custom connectors can’t send this server’s key header, so use the mcp-remote bridge. Open Settings → Developer → Edit Config and add:
claude_desktop_config.json
{
  "mcpServers": {
    "example": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.example.com/mcp",
        "--header",
        "Authorization: Bearer <YOUR_API_KEY>"
      ]
    }
  }
}
  1. Replace the placeholder with your key and restart Claude Desktop.

The bridge needs Node.js on your computer.

Local

  1. Open Settings → Developer → Edit Config. It opens claude_desktop_config.json. Add:
claude_desktop_config.json
{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-memory"
      ]
    }
  }
}
  1. Save the file and restart Claude Desktop.

Needs Node.js on your computer. The file lives in ~/Library/Application Support/Claude/ on macOS and %APPDATA%\Claude\ on Windows.

ChatGPT

ChatGPT connects to remote servers in developer mode. Like claude.ai, it can’t start local servers or send an API key header.

No sign-in

  1. On chatgpt.com, open Settings → Security and login and turn on Developer mode.
  2. Go to chatgpt.com/plugins and click + to create an app for a remote MCP server.
  3. Paste https://mcp.deepwiki.com/mcp as the server URL and choose No authentication.

Developer mode is available on the web for Plus, Pro, Business, Enterprise and Education accounts.

Sign-in

  1. On chatgpt.com, open Settings → Security and login and turn on Developer mode.
  2. Go to chatgpt.com/plugins and click + to create an app for a remote MCP server.
  3. Paste https://mcp.notion.com/mcp as the server URL and choose OAuth. ChatGPT sends you to Notion to sign in.

Developer mode is available on the web for Plus, Pro, Business, Enterprise and Education accounts.

Cursor

Add to Cursor opens Cursor’s install page with the server filled in. You can also add it to mcp.json by hand.

No sign-in

Or add it by hand to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (this project):

mcp.json
{
  "mcpServers": {
    "deepwiki": {
      "url": "https://mcp.deepwiki.com/mcp"
    }
  }
}

Sign-in

Or add it by hand to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (this project):

mcp.json
{
  "mcpServers": {
    "notion": {
      "url": "https://mcp.notion.com/mcp"
    }
  }
}

Cursor shows Needs login next to the server. Click it to sign in.

API key

Or add it by hand to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (this project):

mcp.json
{
  "mcpServers": {
    "example": {
      "url": "https://mcp.example.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}

Local

Or add it by hand to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (this project):

mcp.json
{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-memory"
      ]
    }
  }
}

Needs Node.js on your computer.

VS Code

Add to VS Code opens VS Code’s install prompt. You can also run code --add-mcp, or commit .vscode/mcp.json so everyone working on the project gets the server.

No sign-in

Or from a terminal:

code --add-mcp '{"name":"deepwiki","type":"http","url":"https://mcp.deepwiki.com/mcp"}'

Or commit it to the repo in .vscode/mcp.json:

.vscode/mcp.json
{
  "servers": {
    "deepwiki": {
      "type": "http",
      "url": "https://mcp.deepwiki.com/mcp"
    }
  }
}

Sign-in

Or from a terminal:

code --add-mcp '{"name":"notion","type":"http","url":"https://mcp.notion.com/mcp"}'

Or commit it to the repo in .vscode/mcp.json:

.vscode/mcp.json
{
  "servers": {
    "notion": {
      "type": "http",
      "url": "https://mcp.notion.com/mcp"
    }
  }
}

VS Code asks you to sign in the first time the server starts.

API key

Add it to .vscode/mcp.json. VS Code asks for the key the first time and stores it securely:

.vscode/mcp.json
{
  "servers": {
    "example": {
      "type": "http",
      "url": "https://mcp.example.com/mcp",
      "headers": {
        "Authorization": "Bearer ${input:api-key}"
      }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "api-key",
      "description": "API key",
      "password": true
    }
  ]
}

Local

Or from a terminal:

code --add-mcp '{"name":"memory","type":"stdio","command":"npx","args":["-y","@modelcontextprotocol/server-memory"]}'

Or commit it to the repo in .vscode/mcp.json:

.vscode/mcp.json
{
  "servers": {
    "memory": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-memory"
      ]
    }
  }
}

Needs Node.js on your computer.

Other clients

Devin Desktop (formerly Windsurf)

No sign-in

  1. Add it to ~/.config/devin/mcp_config.json (macOS and Linux) or %APPDATA%\devin\mcp_config.json (Windows):
mcp_config.json
{
  "mcpServers": {
    "deepwiki": {
      "serverUrl": "https://mcp.deepwiki.com/mcp"
    }
  }
}
  1. Refresh the MCP server list in Cascade.

Devin Desktop is the new name for Windsurf. It reads serverUrl (or url) for remote servers.

Sign-in

  1. Add it to ~/.config/devin/mcp_config.json (macOS and Linux) or %APPDATA%\devin\mcp_config.json (Windows):
mcp_config.json
{
  "mcpServers": {
    "notion": {
      "serverUrl": "https://mcp.notion.com/mcp"
    }
  }
}
  1. Refresh the MCP server list in Cascade and sign in when asked.

Devin Desktop is the new name for Windsurf. It reads serverUrl (or url) for remote servers.

API key

  1. Add it to ~/.config/devin/mcp_config.json (macOS and Linux) or %APPDATA%\devin\mcp_config.json (Windows):
mcp_config.json
{
  "mcpServers": {
    "example": {
      "serverUrl": "https://mcp.example.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
  1. Refresh the MCP server list in Cascade.

Devin Desktop is the new name for Windsurf. It reads serverUrl (or url) for remote servers.

Local

  1. Add it to ~/.config/devin/mcp_config.json (macOS and Linux) or %APPDATA%\devin\mcp_config.json (Windows):
mcp_config.json
{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-memory"
      ]
    }
  }
}
  1. Refresh the MCP server list in Cascade.

Devin Desktop is the new name for Windsurf.

Codex

No sign-in

codex mcp add deepwiki --url https://mcp.deepwiki.com/mcp

Or edit ~/.codex/config.toml directly:

config.toml
[mcp_servers.deepwiki]
url = "https://mcp.deepwiki.com/mcp"

Sign-in

codex mcp add notion --url https://mcp.notion.com/mcp
codex mcp login notion

Or edit ~/.codex/config.toml directly:

config.toml
[mcp_servers.notion]
url = "https://mcp.notion.com/mcp"

API key

codex mcp add example --url https://mcp.example.com/mcp --bearer-token-env-var EXAMPLE_API_KEY

Or edit ~/.codex/config.toml directly:

config.toml
[mcp_servers.example]
url = "https://mcp.example.com/mcp"
bearer_token_env_var = "EXAMPLE_API_KEY"

Set EXAMPLE_API_KEY to your key in the shell that runs Codex.

Local

codex mcp add memory -- npx -y @modelcontextprotocol/server-memory

Or edit ~/.codex/config.toml directly:

config.toml
[mcp_servers.memory]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-memory"]

Needs Node.js on your computer.

Gemini CLI

No sign-in

gemini mcp add --transport http deepwiki https://mcp.deepwiki.com/mcp

This adds it to the current project. Add -s user to use it everywhere.

Sign-in

gemini mcp add --transport http notion https://mcp.notion.com/mcp

Then, inside Gemini CLI, run /mcp auth notion to sign in.

This adds it to the current project. Add -s user to use it everywhere.

API key

gemini mcp add --transport http --header "Authorization: Bearer <YOUR_API_KEY>" example https://mcp.example.com/mcp

This adds it to the current project. Add -s user to use it everywhere.

Local

gemini mcp add memory npx -- -y @modelcontextprotocol/server-memory

This adds it to the current project. Add -s user to use it everywhere.

Any other client

No sign-in

Most clients accept this shape. Some name the URL field differently: serverUrl in Devin Desktop, httpUrl in Gemini CLI’s settings file.

{
  "mcpServers": {
    "deepwiki": {
      "type": "http",
      "url": "https://mcp.deepwiki.com/mcp"
    }
  }
}

Zed puts servers under context_servers in its settings. Cline needs "type": "streamableHttp", or it assumes SSE.

Client only starts local servers? Bridge it with npx -y mcp-remote https://mcp.deepwiki.com/mcp.

Sign-in

Most clients accept this shape. Some name the URL field differently: serverUrl in Devin Desktop, httpUrl in Gemini CLI’s settings file.

{
  "mcpServers": {
    "notion": {
      "type": "http",
      "url": "https://mcp.notion.com/mcp"
    }
  }
}

Zed puts servers under context_servers in its settings. Cline needs "type": "streamableHttp", or it assumes SSE.

Client only starts local servers? Bridge it with npx -y mcp-remote https://mcp.notion.com/mcp.

API key

Most clients accept this shape. Some name the URL field differently: serverUrl in Devin Desktop, httpUrl in Gemini CLI’s settings file.

{
  "mcpServers": {
    "example": {
      "type": "http",
      "url": "https://mcp.example.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}

Zed puts servers under context_servers in its settings. Cline needs "type": "streamableHttp", or it assumes SSE.

Client only starts local servers? Bridge it with npx -y mcp-remote https://mcp.example.com/mcp.

Local

Most clients that start local servers accept this shape:

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-memory"
      ]
    }
  }
}

Zed puts servers under context_servers in its settings, with the same command, args and env fields.

Needs Node.js on your computer.

Sign-in, API keys and local servers

Sign-in (OAuth)

The first time your client connects, the server asks who you are. Your client opens the vendor’s sign-in page in a browser, you approve access there, and the client keeps the token. In Claude Code that happens through /mcp and Authenticate, in Cursor through Needs login, in Codex with codex mcp login and in Gemini CLI with /mcp auth.

The token is issued for the server’s own URL, and your client sends it only there: MCP sign-in binds each token to one server (OAuth resource indicators, RFC 8707). That’s one reason every setup on mcp.tc uses the server’s own URL, and why mcp.tc never sees your credentials.

API key

Get a key from the vendor. The snippets put a placeholder such as <YOUR_API_KEY> in the header the server expects, most often Authorization: Bearer <YOUR_API_KEY>. Replace it in your own config and keep that file out of shared repositories. VS Code asks for the key the first time and stores it securely, and Codex reads it from an environment variable. claude.ai and ChatGPT can’t send a key header, and Claude Desktop needs the mcp-remote bridge.

Some servers work without a key and take one for more access. Their badge says Sign-in optional, their commands leave the key out, and the note under the steps names the header to send it in.

Local servers

Your client starts a local server as a program on your computer, using the install command from its page. The command decides what you need installed:

  • npx needs Node.js.
  • uvx needs uv (Python).
  • pipx needs pipx (Python).
  • docker needs Docker.
  • dnx needs .NET 10.

A local server runs with your user account’s permissions, so read its tool list before you add it. Settings it needs, keys included, are environment variables, and the snippets show them as placeholders. claude.ai and ChatGPT only connect to remote servers, so they can’t use local ones.

Sign-in not confirmed

A gray ring and Sign-in not confirmed mean our check couldn’t tell whether the server needs a sign-in. The steps use the plain URL. If the server asks for credentials, its vendor’s docs say which.

Troubleshooting

My client says “this link is a page, not an MCP endpoint”

You added the mcp.tc link. Replace it with the URL from that message, or copy the URL from the box at the top of the listing. For a local server, use the install command instead.

The server won’t connect

If the URL you added starts with https://mcp.tc/i/, that’s the page link: replace it with the server’s own URL from the listing. Otherwise, check that the URL matches the listing exactly, path included: https://mcp.deepwiki.com/mcp and https://mcp.deepwiki.com are different addresses. Restart the client after you edit a config file. A Last check failed badge on the listing means our daily checks have been failing too, so the problem may be on the vendor’s side.

It keeps asking me to sign in, or answers 401

The server needs a sign-in and your client hasn’t finished it. In Claude Code, type /mcp, pick the server and choose Authenticate. In Cursor, click Needs login. In Codex, run codex mcp login with the server’s name, and in Gemini CLI /mcp auth. With an API key, check that you replaced the placeholder and that the header matches the vendor’s docs.

A local server doesn’t start

Run its install command in a terminal first. If it fails there, the client can’t start it either, and usually the runtime is missing: Node.js for npx, uv for uvx, Docker for docker. Replace every placeholder, such as <YOUR_API_KEY> or /path/to/allowed/dir, with a real value.

My client only starts local servers

Bridge the remote server with npx -y mcp-remote followed by the server’s own URL. The bridge runs on your computer and needs Node.js.

The listing says SSE

The server uses the older SSE transport, which some clients no longer support. Claude Code takes --transport sse, VS Code "type": "sse", and Codex needs the mcp-remote bridge. The listing’s setup steps already use the right one.

Something on the listing is wrong

Use Report this listing on its page. The text is written with AI help from the server’s own metadata, so mistakes happen, and a person reads every report.