The first time I tried to add an MCP server I stared at a blank config file for an embarrassingly long time. The good news after all that staring: connecting an MCP server is mostly about writing one small JSON block, and the block looks almost identical everywhere. Once I learned what each key meant, I stopped being scared and started connecting servers to every assistant I owned.
The One Config Block You Keep Reusing
Regardless of whether you are in Claude Desktop, a code editor, or a ChatGPT client, the shape is roughly the same. You name the server, point to how it starts, and optionally pass it some arguments. Here is a minimal example connecting to a remote MCP endpoint like IPIPAI's MCP server:
{
"mcpServers": {
"ipipai": {
"command": "npx",
"args": ["-y", "@ipipai/mcp"],
"env": { "API_KEY": "your-key" }
}
}
}
That is it. Three pieces of information: a name for the server, a command that starts it, and a list of arguments. Once that block is saved where the app expects it, adding the server is finished. No giant SDK, no two-week onboarding.
What Each Key Means
Let me break the block down so it stops being magic. mcpServers is just the top-level holder for a list of servers. Under it, the key you invent (here ipipai) is only the display name; it can be whatever you like. command is the executable that launches the server, typically npx for Node-based servers or python for Python ones. args is the array of flags passed to that command, and env holds environment variables like an API key. Nine times out of ten you do not touch anything except the args and env.
Different Apps, Same Shape
Claude Desktop wants the config in a file named claude_desktop_config.json. Cursor reads the same structure from its MCP settings. Several ChatGPT integrations accept the identical block. The names of the files differ, but the JSON you paste is basically interchangeable. If the app docs mention "MCP servers," nine times out of ten they mean this exact structure.
Checking It Actually Connected
After saving the config, restart the app. A connected server will usually show a green dot or a list of tools under a happy little settings menu. If you want a quick sanity check without an app at all, you can call the server directly with curl. For a walkthrough of that raw call, this plain-language protocol guide shows the request and response you should see.
What a Remote vs Local Server Changes
A server can run on your own machine (a local server) or somewhere on the internet (a remote one). Local servers are defined with command and args. Remote servers use a different key, usually url, pointing at an HTTPS endpoint. Both are configured with the same parent structure, so the mental model holds. For a fuller example of the connection flow across Claude, ChatGPT, and Cursor, this connection guide walks through each one.
Trouble Right After Configuring
If nothing shows up after a restart, the usual suspects are a typo in the command name, a missing environment variable, or the app being restarted incorrectly. Mistakes here are almost always boring and fixable in a minute. If you are seeing a connection failure instead of a silent nothing, this troubleshooting checklist goes through the common errors one by one.
Wrapping Up
Connecting an MCP server is a one-block JSON job. Learn what command, args, and env mean and you can wire up almost any server in any modern AI tool. The protocol behind it, if you are curious, is explained simply in our what is an MCP server guide. And the full list of tools your server exposes is usually published somewhere like IPIPAI's /mcp-tools.json.