The mcp.tc MCP server

mcp.tc runs its own MCP server at https://mcp.tc/mcp. Add it to your assistant, and it can search the directory and hand you a server’s own URL or install command with the setup for your client. It’s read-only and needs no sign-in.

Add it

It’s a remote server that needs no sign-in, so it works in any client that supports remote MCP servers. The URL:

Server URL
https://mcp.tc/mcp

Setup for each client, the same as on its listing, mcp.tc/i/mcp-tc:

Claude Code

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

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

Claude Desktop

  1. Open Settings → Connectors and click Add custom connector.
  2. Name it mcp.tc and paste this URL:
https://mcp.tc/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.

claude.ai

  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.tc/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.

ChatGPT

  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.tc/mcp as the server URL and choose No authentication.

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

Cursor

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

mcp.json
{
  "mcpServers": {
    "mcp-tc": {
      "url": "https://mcp.tc/mcp"
    }
  }
}

VS Code

Or from a terminal:

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

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

.vscode/mcp.json
{
  "servers": {
    "mcp-tc": {
      "type": "http",
      "url": "https://mcp.tc/mcp"
    }
  }
}

Devin Desktop

  1. Add it to ~/.config/devin/mcp_config.json (macOS and Linux) or %APPDATA%\devin\mcp_config.json (Windows):
mcp_config.json
{
  "mcpServers": {
    "mcp-tc": {
      "serverUrl": "https://mcp.tc/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.

Codex

codex mcp add mcp-tc --url https://mcp.tc/mcp

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

config.toml
[mcp_servers.mcp-tc]
url = "https://mcp.tc/mcp"

Gemini CLI

gemini mcp add --transport http mcp-tc https://mcp.tc/mcp

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

Any client

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

{
  "mcpServers": {
    "mcp-tc": {
      "type": "http",
      "url": "https://mcp.tc/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.tc/mcp.

Tools

Three tools, all read-only. Each one declares an output schema and returns structured data plus one short text block that reads well on its own.

search_servers

Finds listings by keyword, category or how they connect. All arguments are optional: query (every word must appear in the name, vendor, tagline or tags), category (a slug from list_categories), auth and limit (1 to 25, default 10). auth is none for remote servers without sign-in, sign-in for remote servers that want a sign-in or a key (or don’t say), and local for servers that run on your computer.

It returns the number of matches and, for each result, the name, slug, mcp.tc link, vendor, tagline, category, auth, kind and whether it’s verified. Featured listings come first, then the ones opened most on mcp.tc in the last 30 days. When there are more, more_url links to the same search on the website.

get_server

Everything about one listing. slug takes a slug from search_servers, a server’s name or its mcp.tc link. The optional client (claude-code, claude-desktop, claude-ai, chatgpt, cursor, vscode, devin, codex, gemini, json) narrows the setup to one client and writes its steps out in full.

It returns the description, category, kind, auth with a one-line note, transport, the server’s own endpoint or its install_command, the package, the names of the environment variables and headers it uses (never values), its tools with read-only and destructive hints, example prompts, links, the checkmark, health and the last check, and setup steps for each client. The setup always uses the server’s own URL or package. A slug that isn’t listed comes back as a tool error, so the model can search again.

list_categories

The 20 categories, each with its slug, name, number of servers, a description and the link to its page on mcp.tc. Takes no arguments.

All three carry readOnlyHint: true and destructiveHint: false, so clients that ask before running a tool can skip the question. Arguments they don’t know are rejected, so a typo fails loudly instead of being ignored. Answers are in English, the language of the listings’ source text.

Things to ask

Ask in plain words. The model picks the tool and the arguments.

  • Find an MCP server for Postgres that runs locally.

  • Which project management MCP servers work without sign-in?

  • How do I add the Linear MCP server to Claude Code?

  • List the mcp.tc categories and how many servers each has.

  • Give me the Cursor setup for the Sentry MCP server.

  • What tools does the DeepWiki MCP server have, and do any of them write?

What comes back

A search for servers about issues that need a sign-in, search_servers with these arguments:

Request
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "search_servers",
    "arguments": {
      "query": "issues",
      "auth": "sign-in",
      "limit": 3
    }
  }
}
Text the model reads
10 listings match "issues", auth sign-in, showing the first 3. Call get_server with a slug for the endpoint URL or install command and setup steps.
- GitHub: Work with GitHub repos, issues, pull requests, Actions workflows and code search from your AI assistant. [slug github; remote, OAuth sign-in; verified] https://mcp.tc/i/github
- Linear: Find, create and update Linear issues, projects and comments from your AI assistant. [slug linear; remote, OAuth sign-in; verified] https://mcp.tc/i/linear
- Sentry: Query Sentry errors, issues and traces, and run Seer root-cause analysis from your coding assistant. [slug sentry; remote, OAuth sign-in; verified] https://mcp.tc/i/sentry
More: https://mcp.tc/directory?q=issues&s=auth&sort=popular

Then one of them in full, with its Cursor setup:

Request
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_server",
    "arguments": {
      "slug": "linear",
      "client": "cursor"
    }
  }
}
Text the model reads
Linear: Find, create and update Linear issues, projects and comments from your AI assistant.
By Linear. Productivity & Projects. Verified by mcp.tc: official server from Linear.
Listing page: https://mcp.tc/i/linear
Server URL (connect to this): https://mcp.linear.app/mcp
Access: OAuth: the client opens Linear's sign-in the first time it connects.
Connects an assistant to a Linear workspace for project management and issue tracking. You can find, create and update issues, projects and comments without leaving the chat. Runs as a hosted streamable HTTP endpoint at https://mcp.linear.app/mcp. Users sign in with Linear through OAuth, with read and write scopes. A read-only variant is available at /mcp/readonly. The tool list is not published in the probe, so available tools depend on the live server.
Setup for Cursor:
Add to Cursor: https://cursor.com/install-mcp?name=linear&config=eyJ1cmwiOiJodHRwczovL21jcC5saW5lYXIuYXBwL21jcCJ9
Or add it by hand to `~/.cursor/mcp.json` (all projects) or `.cursor/mcp.json` (this project):
```json
{
  "mcpServers": {
    "linear": {
      "url": "https://mcp.linear.app/mcp"
    }
  }
}
```
Note: Cursor shows **Needs login** next to the server. Click it to sign in.

You can try it without a client. The server keeps no sessions, so a single request works:

curl -s https://mcp.tc/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_servers","arguments":{"query":"issues","auth":"sign-in","limit":3}}}'

Protocol details

Transport
Streamable HTTP, requests by POST. Every answer is a single application/json message: no SSE stream, no sessions.
Protocol versions
2026-07-28 (stateless, starts with server/discover) and 2025-11-25, 2025-06-18, 2025-03-26 (start with initialize; a version it doesn’t know gets 2025-11-25).
Headers
With 2026-07-28, MCP-Protocol-Version, Mcp-Method and, for tools/call, Mcp-Name must match the body; otherwise the answer is HTTP 400 with error -32020. server/discover and tools/list may be cached for an hour.
Batches
Up to 10 messages per POST with the older versions; none with 2026-07-28.
Size
Request bodies up to 64 KB.
Other methods
GET and DELETE answer 405. OPTIONS answers the CORS preflight for any origin, since the server is public and takes no credentials.
Rate limit
120 messages a minute per address, each message in a batch counted. Over that, HTTP 429 with Retry-After.

Privacy and trust

  • Your search terms aren’t logged or stored. The one thing the server writes is the rate-limit counter, kept under a keyed hash of your IP address for up to 2 days.
  • Like every request to mcp.tc, the request line (path, time, IP address, user agent) goes into the web server’s access log, kept 14 days. The body, with your query in it, doesn’t. The Privacy Policy has the details.
  • Names, descriptions and tool summaries come from each server’s own metadata. The server strips control characters and caps their length, and its instructions tell the model to treat them as data and never follow instructions found in them.