MCP servers let an AI app reach outside the chat window: read files on your computer, open a GitHub issue, query a database or search your Notion. To use one, you either point the app at a local command it starts on your machine or paste in the URL of a remote server. Claude Desktop, Claude Code and Cursor support both, while ChatGPT on the web takes remote servers only. Most setups need a URL, a short config entry or a command. Only connect servers you trust with the files and accounts they can access.
What an MCP server actually is
The Model Context Protocol (MCP) is an open standard for connecting AI applications to tools and data. An app such as Claude, ChatGPT or Cursor acts as the client; an MCP server makes specific tools available to it, such as reading a file or creating an issue. What the model can do, and whether the app asks you to approve each action, depends on the client and the server. Check the permissions before you connect one.

Servers come in two shapes, and the difference decides where you configure them:
- Local (stdio) servers run as a program on your own computer. The app starts them with a command such as
npxorpython. They suit anything that needs your files, your git repos or a local database. - Remote servers run on the internet and you connect with a URL, usually over Streamable HTTP. Many services offer remote servers, and sign-in options depend on the provider.
SSE is an older remote transport that MCP now deprecates. Some services still expose it, but support varies by client. Use Streamable HTTP when available and check the client’s documentation before pasting an SSE URL.
Before you start
- Node.js for most local servers. Many are distributed as npm packages and launched with
npx. Install the LTS version from nodejs.org and check it withnode --version. - Python (and often
uvoruvx) for servers written in Python. - An account on the service you want to connect, for remote servers.
- A short list of folders or repos you are comfortable exposing. A local server runs with your user account’s permissions.
Set up an MCP server in Claude Desktop
Claude Desktop handles local servers through a JSON config file and remote servers through Connectors. The official MCP quickstart uses the Filesystem server as its example, and it is a good first test because the results are easy to see.
Local server: edit claude_desktop_config.json
- Open the Claude menu in your system’s menu bar (not the settings inside the chat window) and choose Settings.
- Go to the Developer tab and click Edit Config. This creates the file if it does not exist yet.
- Add the server under
mcpServers, keeping any existing entries. For a new config, the Filesystem example looks like this; replace the example paths with folders on your computer:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/Desktop",
"/Users/username/Downloads"
]
}
}
}- Quit Claude Desktop completely and reopen it. The app only reads the config at launch.
- In a new chat, click the “+” (add files, connectors and more) button, open Connectors and check that “filesystem” is listed with its tools.
The file lives at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS and %APPDATA%\Claude\claude_desktop_config.json on Windows. On Windows, write the paths with doubled backslashes, for example "C:\\Users\\username\\Desktop". Paths must be absolute.
Remote server: add a custom connector
Remote servers do not go in the JSON file. On Free, Pro and Max, open Customize > Connectors, choose + Add, then Add custom connector and paste the server URL. Free accounts can add one custom connector. On Team and Enterprise, an owner adds the connector for the workspace first, then members connect to it. Choose the authentication method the server supports, and limit any API key to the access it needs.
One detail that trips people up: Claude reaches remote connectors from Anthropic’s cloud, not from your computer. A server that only exists on your home network or behind a company VPN will not connect, even from Claude Desktop. Local servers in the config file are the right tool for those.
Set up an MCP server in Claude Code
Claude Code, Anthropic’s terminal coding agent, manages MCP servers from the claude mcp command. A remote HTTP server takes one line:
claude mcp add --transport http notion https://mcp.notion.com/mcpLocal servers go after a double dash, which separates Claude Code’s options from the command that starts the server. Replace the path in this Filesystem example with a folder you want to allow:
claude mcp add --transport stdio filesystem -- npx -y @modelcontextprotocol/server-filesystem /absolute/path/to/allowed-folderThen check it and sign in:
claude mcp listshows every server with a status such as Connected, Needs authentication or Failed to connect.- Inside a session,
/mcpopens the server panel, where you complete OAuth sign-in in your browser. --scope projectwrites the server to a.mcp.jsonfile in the repo so your team gets it too. The default “local” scope keeps it private to you in that project, and--scope usermakes it available in every project.
If you already set servers up in Claude Desktop, claude mcp add-from-claude-desktop imports them on macOS and WSL.
Set up an MCP server in ChatGPT
ChatGPT connects to remote MCP servers through its web interface; it does not launch a local server from a config file. Access depends on your plan: Business, Enterprise and Edu support full MCP, including write actions, while Pro can connect custom servers with read and fetch access. Workspace admins control whether custom servers are allowed.
- Open ChatGPT on the web and go to Plugins.
- Click the + button and choose Add custom MCP server.
- Enter a name and, optionally, a description.
- Under Connection, paste the server URL. If the server sits on a private network, choose Tunnel to use OpenAI’s Secure MCP Tunnel instead of exposing it to the internet.
- Pick the authentication: OAuth, No authentication, or a mix of the two.
- Read the risk warning, select I understand and want to continue, then Create as a plugin.
- Install the plugin, then type
@in the message box and pick it to use it in a chat.
Before connecting a server, review its tool descriptions and OpenAI’s risk warning. A server may expose tools that read data or change it, and what you can enable depends on your account and workspace controls.
Set up an MCP server in Cursor
Cursor reads servers from an mcp.json file. Put it at ~/.cursor/mcp.json for servers you want in every project, or at .cursor/mcp.json inside a repo for project-specific ones. You can also install servers from the Cursor Marketplace with one click from the Customize page.
Cursor uses the same mcpServers structure as Claude Desktop. This example shows where the command, arguments and environment variables go; replace mcp-server with the actual package name from the server’s documentation:
{
"mcpServers": {
"server-name": {
"command": "npx",
"args": ["-y", "mcp-server"],
"env": {
"API_KEY": "${env:API_KEY}"
}
}
}
}A remote server uses url instead of command:
{
"mcpServers": {
"remote-server": {
"url": "https://api.example.com/mcp",
"headers": {
"Authorization": "Bearer ${env:MY_SERVICE_TOKEN}"
}
}
}
}The ${env:NAME} syntax pulls a value from your environment, so the token never sits in a file you might commit. Cursor also understands ${workspaceFolder} and ${userHome}. Once a server loads, its tools appear under Available Tools in chat, and you can toggle servers on and off from Customize in the sidebar. Cursor asks before running an MCP tool by default.

MCP configuration varies by app
The mcpServers JSON format is similar across Claude Desktop and Cursor, and Claude Code can import a compatible entry with claude mcp add-json. Remote entries need the right transport type. ChatGPT is different: you add a remote server through its web interface rather than a local config file.
Good first servers to try
- Filesystem for letting Claude Desktop organise or summarise files in folders you choose.
- GitHub’s remote server at
https://api.githubcopilot.com/mcp/for issues and pull requests. Follow GitHub’s setup instructions for authentication; available sign-in methods depend on the client. - Notion at
https://mcp.notion.com/mcpfor searching and editing your workspace. - A database server connected with a read-only user, so the model can query but never change data.
For coding agents specifically, our list of Command Code MCP servers worth trying picks out servers that are useful in a terminal workflow, and check each server’s transport and authentication requirements against the app you use.
Keep MCP servers safe
An MCP server is code that can act with your permissions, so treat installing one like installing an app.
- Install servers from the service’s own documentation or a source you trust, and skim the code of small community servers before running them.
- Give local servers the narrowest access you can: specific folders, a read-only database user, an API key limited to what it needs.
- Keep secrets in environment variables rather than pasting them into config files that might end up in git.
- Watch for prompt injection. A server that fetches web pages or emails can bring back text written to trick the model into calling another tool. Read approval prompts properly, and be careful with “always allow”.
- Turn off servers you are not using. Fewer tools also means the model picks the right one more often.
Troubleshooting
- The server does not show up in Claude Desktop. Fully quit and reopen the app, check the JSON for a missing comma or bracket, and make sure every path is absolute. MCP logs live in
~/Library/Logs/Claudeon macOS and%APPDATA%\Claude\logson Windows;mcp-server-NAME.logholds that server’s own errors. - Run the command by hand. Pasting the server’s command into a terminal, for example
npx -y @modelcontextprotocol/server-filesystem ~/Desktop, shows missing Node.js or package errors straight away. - Windows shows ENOENT with
${APPDATA}in the path. Add the expandedAPPDATApath to the server’senvblock, as the MCP docs describe. - Cursor tools are missing. Open the Output panel, choose “MCP Logs” from the dropdown and look for connection or auth errors.
- A remote server will not connect from Claude or ChatGPT. Both connect from their own cloud, so the URL has to be reachable from the public internet, or reached through ChatGPT’s tunnel option.
OpenCode plugins and themes extend the coding agent itself; MCP servers provide external tools and data. A plugin and an MCP server serve different purposes.
FAQ
Do I need to code to use MCP servers?
No. Using existing servers means editing a JSON file or pasting a URL. You only write code if you want to build your own server.
Is MCP free?
The protocol is an open standard, and many servers are free or open source. Each app sets its own access limits: Claude Free allows one custom connector, while ChatGPT MCP access varies by plan and workspace.
Can ChatGPT use a server running on my laptop?
Not directly. ChatGPT connects to servers over the internet, so a local server needs to be exposed through OpenAI’s Secure MCP Tunnel or hosted somewhere reachable.
What is the difference between stdio and HTTP?
A stdio server is a program the app starts on your computer and talks to through standard input and output. An HTTP server runs elsewhere and the app connects to it with a URL. Use stdio for local files and tools, HTTP for online services.
Why does the model not use my server?
Make sure the server is enabled for the chat, then name it in your prompt, for example “use the GitHub server to list open pull requests”. Fewer active servers and clearer tool descriptions help the model choose.
- SourceClaude Code docs: MCP
- SourceChatGPT pricing












