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.comthat needs a key in theAuthorizationheader. - 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
- Run this in a terminal, in your project folder:
claude mcp add --transport http deepwiki https://mcp.deepwiki.com/mcp- 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
- Run this in a terminal, in your project folder:
claude mcp add --transport http notion https://mcp.notion.com/mcp- 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
- 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>"- Replace the placeholder with your key before you run it, then check it with
/mcpinside Claude Code.
Add --scope user to make it available in every project, not just this one.
Local
- Run this in a terminal, in your project folder:
claude mcp add --transport stdio memory -- npx -y @modelcontextprotocol/server-memory- 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
- Open the connector form on claude.ai. This button fills in the name and URL for you:
Add to claude.ai (opens in a new tab)
- Check that the URL reads
https://mcp.deepwiki.com/mcpand click Add. - 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
- Open the connector form on claude.ai. This button fills in the name and URL for you:
Add to claude.ai (opens in a new tab)
- Check that the URL reads
https://mcp.notion.com/mcpand click Add. - 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
- Open Settings → Connectors and click Add custom connector.
- Name it DeepWiki and paste this URL:
https://mcp.deepwiki.com/mcp- 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
- Open Settings → Connectors and click Add custom connector.
- Name it Notion and paste this URL:
https://mcp.notion.com/mcp- 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
- Custom connectors can’t send this server’s key header, so use the
mcp-remotebridge. Open Settings → Developer → Edit Config and add:
{
"mcpServers": {
"example": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.example.com/mcp",
"--header",
"Authorization: Bearer <YOUR_API_KEY>"
]
}
}
}- Replace the placeholder with your key and restart Claude Desktop.
The bridge needs Node.js on your computer.
Local
- Open Settings → Developer → Edit Config. It opens
claude_desktop_config.json. Add:
{
"mcpServers": {
"memory": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-memory"
]
}
}
}- 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
- On chatgpt.com, open Settings → Security and login and turn on Developer mode.
- Go to
chatgpt.com/pluginsand click + to create an app for a remote MCP server. - Paste
https://mcp.deepwiki.com/mcpas the server URL and choose No authentication.
Developer mode is available on the web for Plus, Pro, Business, Enterprise and Education accounts.
Sign-in
- On chatgpt.com, open Settings → Security and login and turn on Developer mode.
- Go to
chatgpt.com/pluginsand click + to create an app for a remote MCP server. - Paste
https://mcp.notion.com/mcpas 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
Add to Cursor (opens in a new tab)
Or add it by hand to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (this project):
{
"mcpServers": {
"deepwiki": {
"url": "https://mcp.deepwiki.com/mcp"
}
}
}Sign-in
Add to Cursor (opens in a new tab)
Or add it by hand to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (this project):
{
"mcpServers": {
"notion": {
"url": "https://mcp.notion.com/mcp"
}
}
}Cursor shows Needs login next to the server. Click it to sign in.
API key
Add to Cursor (opens in a new tab)
Or add it by hand to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (this project):
{
"mcpServers": {
"example": {
"url": "https://mcp.example.com/mcp",
"headers": {
"Authorization": "Bearer <YOUR_API_KEY>"
}
}
}
}Local
Add to Cursor (opens in a new tab)
Or add it by hand to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (this project):
{
"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
Install in VS Code (opens in a new tab)
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:
{
"servers": {
"deepwiki": {
"type": "http",
"url": "https://mcp.deepwiki.com/mcp"
}
}
}Sign-in
Install in VS Code (opens in a new tab)
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:
{
"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:
{
"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
Install in VS Code (opens in a new tab)
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:
{
"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
- Add it to
~/.config/devin/mcp_config.json(macOS and Linux) or%APPDATA%\devin\mcp_config.json(Windows):
{
"mcpServers": {
"deepwiki": {
"serverUrl": "https://mcp.deepwiki.com/mcp"
}
}
}- 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
- Add it to
~/.config/devin/mcp_config.json(macOS and Linux) or%APPDATA%\devin\mcp_config.json(Windows):
{
"mcpServers": {
"notion": {
"serverUrl": "https://mcp.notion.com/mcp"
}
}
}- 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
- Add it to
~/.config/devin/mcp_config.json(macOS and Linux) or%APPDATA%\devin\mcp_config.json(Windows):
{
"mcpServers": {
"example": {
"serverUrl": "https://mcp.example.com/mcp",
"headers": {
"Authorization": "Bearer <YOUR_API_KEY>"
}
}
}
}- Refresh the MCP server list in Cascade.
Devin Desktop is the new name for Windsurf. It reads serverUrl (or url) for remote servers.
Local
- Add it to
~/.config/devin/mcp_config.json(macOS and Linux) or%APPDATA%\devin\mcp_config.json(Windows):
{
"mcpServers": {
"memory": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-memory"
]
}
}
}- 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/mcpOr edit ~/.codex/config.toml directly:
[mcp_servers.deepwiki]
url = "https://mcp.deepwiki.com/mcp"Sign-in
codex mcp add notion --url https://mcp.notion.com/mcp
codex mcp login notionOr edit ~/.codex/config.toml directly:
[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_KEYOr edit ~/.codex/config.toml directly:
[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-memoryOr edit ~/.codex/config.toml directly:
[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/mcpThis 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/mcpThen, 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/mcpThis adds it to the current project. Add -s user to use it everywhere.
Local
gemini mcp add memory npx -- -y @modelcontextprotocol/server-memoryThis 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:
npxneeds Node.js.uvxneeds uv (Python).pipxneeds pipx (Python).dockerneeds Docker.dnxneeds .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.
What an mcp.tc link does in a client
The mcp.tc link is the listing’s page, not a server address. A browser gets the page. An MCP client that connects to it gets an error instead: HTTP 409 with a JSON-RPC message that names the server’s own URL (or, for a local server, its install command) and the page. Some clients show the message, so you can copy the right address from it; Claude Code only reports “Failed to connect”. This is the answer a client gets at mcp.tc/i/deepwiki (the message is always in English, the language clients expect):
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32001,
"message": "mcp.tc: this link is a page, not an MCP endpoint. Connect to DeepWiki directly with its own URL: https://mcp.deepwiki.com/mcp (no sign-in needed). Setup for each client: https://mcp.tc/i/deepwiki",
"data": {
"listing": "https://mcp.tc/i/deepwiki",
"endpoint": "https://mcp.deepwiki.com/mcp"
}
}
}data.endpoint holds the server’s own URL, data.command the install command of a local server, and data.listing the page. A link that isn’t listed answers 404, and a removed listing answers 410.
Why doesn’t the link send your client on to the server, or pass the requests through? Current MCP SDKs (TypeScript 1.32 and later, Python 1.30 and later) refuse to be sent on to a different site, and a sign-in token only works at the server’s own URL anyway. Passing requests through would also make your client depend on mcp.tc, so every mcp.tc link is only a page.
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.