contenox

What is MCP? The Model Context Protocol, explained simply

Updated

BASICS What is MCP?

MCP, the Model Context Protocol, is an open standard that lets AI apps use outside tools and data. A service is wrapped once as an “MCP server”, and every app that supports MCP can use it: Claude Code, Codex, OpenCode, Cursor, VS Code, ChatGPT and many more. The official docs compare it to USB-C: one plug instead of a different cable for every device.

For coding agents, that means you can give your agent new abilities, such as reading GitHub issues, driving a browser or querying a database, by adding one line of config instead of writing an integration.

What it looks like in practice

Without MCP, you copy an issue from GitHub into the chat, the agent writes a fix, and you open the pull request yourself.

With the GitHub MCP server added, you write “fix issue 142 and open a pull request”. The agent reads the issue, makes the change and opens the pull request through the server. You approve the steps that matter.

The agent did not get smarter. It got hands.

Isn’t that just an API?

Almost. MCP sits on top of APIs; it doesn’t replace them.

What it isWho writes the glue
APIAn interface programs call, such as GitHub’s REST APIYou, for every app that needs it
Function callingA model’s ability to request a tool call in a structured formatYou, inside your own app
MCPA standard way to package tools so any AI app can find and call themThe server author, once

The difference that matters: with plain function calling, the tool definitions live in one app’s code. With MCP, the server publishes them and any app can load them at runtime.

How it works

Three parts:

  • Host: the app you use, such as Claude Code or Cursor.
  • Client: the connection inside the host to one server.
  • Server: the program that offers the tools.

A server can offer tools (actions the model can call, like create_issue), resources (data to read, like files or records) and prompts (ready-made templates). Coding agents mostly use tools.

Servers run in one of two ways:

  • Local (stdio): your app starts the server as a program on your computer. It runs with your user’s permissions.
  • Remote (HTTP): the server is a web service, usually with a sign-in through your browser.

How to add an MCP server

Every agent does the same thing, with a different command or file:

AgentHow you add a serverWhere it’s saved
Claude Codeclaude mcp addThis project, just for you (default); all your projects with --scope user; .mcp.json in the repo with --scope project
Codex CLIcodex mcp add~/.codex/config.toml
OpenCodeEdit the configopencode.json in the project, or ~/.config/opencode/opencode.json
CursorEdit the config.cursor/mcp.json in the project, or ~/.cursor/mcp.json
VS CodeEdit the config.vscode/mcp.json, with servers as the top-level key
ContenoxConnectors → Add connectorThe app; for every chat, one project folder, or one chat

The examples use two real servers: GitHub, which runs remotely, and Playwright, which runs on your computer and lets the agent control a browser.

Claude Code

claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
  --header "Authorization: Bearer YOUR_GITHUB_TOKEN"
claude mcp add playwright -- npx @playwright/mcp@latest
claude mcp list

For GitHub, create a personal access token in your GitHub settings first. Add --scope project to share a server with your team through a .mcp.json file in the repo.

Codex CLI

codex mcp add playwright -- npx @playwright/mcp@latest
codex mcp list

Or edit ~/.codex/config.toml:

[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]

OpenCode: add an mcp block to opencode.json in the project:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "playwright": {
      "type": "local",
      "command": ["npx", "@playwright/mcp@latest"],
      "enabled": true
    },
    "github": {
      "type": "remote",
      "url": "https://api.githubcopilot.com/mcp/",
      "headers": { "Authorization": "Bearer YOUR_GITHUB_TOKEN" }
    }
  }
}

opencode mcp list shows which servers are connected.

Cursor: create .cursor/mcp.json in the project, or ~/.cursor/mcp.json for all projects:

{
  "mcpServers": {
    "playwright": { "command": "npx", "args": ["@playwright/mcp@latest"] }
  }
}

VS Code: the same idea in .vscode/mcp.json, but the top-level key is servers, not mcpServers:

{
  "servers": {
    "github": { "type": "http", "url": "https://api.githubcopilot.com/mcp/" }
  }
}

VS Code signs you in to GitHub in the browser; no token needed.

Local servers started with npx need Node.js installed.

Servers worth knowing

  • GitHub: issues, pull requests and code across your repositories. Remote at https://api.githubcopilot.com/mcp/, or run locally with Docker.
  • Playwright (@playwright/mcp): opens pages, clicks through flows and takes screenshots, so the agent can check its own UI work.
  • Context7 (@upstash/context7-mcp): fetches current library documentation, so the agent stops guessing APIs from old training data.
  • Filesystem (@modelcontextprotocol/server-filesystem): the reference server. Useful for apps without built-in file access; coding agents already have it.

When you don’t need MCP

MCP is not always the best tool, and the debate about it is fair.

  • If a good command-line tool exists, the agent can often just use it. Coding agents can run gh, psql or kubectl directly, with nothing extra to install.
  • Every server’s tool descriptions use up part of the model’s context. Ten servers you rarely use make every request longer and can make the agent pick the wrong tool. Add servers for the work you do, and remove the rest.
  • MCP pays off when there is no CLI, when the service needs a browser sign-in, or when the same tools should work across several apps and teammates.

Is MCP safe?

An MCP server is code that acts with your access, so treat it like any program you install:

  • Install servers only from publishers you trust. A local server runs as you.
  • Give servers the least access that works, for example a read-only token for a server that only reads.
  • Treat what tools return as untrusted. An issue comment or web page can contain instructions aimed at the model. This is called prompt injection.
  • Approve actions, not just servers. Reading an issue is harmless; deleting a branch is not. Set rules per tool where your app allows it. See AI agent permissions.

Who owns MCP, and what changed in 2026

Anthropic released MCP in November 2024. In December 2025 it was handed to the Agentic AI Foundation under the Linux Foundation, so no single company controls it.

The specification revision of 28 July 2026 made the protocol stateless: each request carries what the server needs to know, instead of opening a session first. If you use MCP servers, nothing changes for you. If you build them, check that your SDK supports the new revision; older tutorials show the previous style.

Contenox

In the Contenox desktop app, MCP servers are Connectors: add one on the Connectors page for every chat or one project folder, or for a single chat from the + menu in the message box. You can switch a connector or a single tool off per chat, which keeps the tool list, and the context it costs, small. Every call still goes through your permission rules and asks first by default. Steps: add an MCP server.

Related

Esc to close