Overview
MCP, short for Model Context Protocol, is an open standard for connecting AI applications to external systems. Through MCP, an AI agent can reach data sources such as files, databases, and repositories, tools such as search engines and issue trackers, and workflows such as specialized prompts — the context and actions it needs to do real work. Think of MCP as a USB-C port for AI applications. Just as USB-C gives devices one standardized connector for many peripherals, MCP gives an AI application one standardized way to connect to many external systems, without inventing a custom integration format for each pair. The scope of MCP is the boundary between an agent and the outside world. It is not a workflow design method, a permission model by itself, or a replacement for clear instructions. Those concerns still need to be designed around the agent. MCP provides the integration layer those designs can stand on. This page explains why MCP matters, what it consists of, which adoption option fits which situation, and what to consider when operating MCP servers as a team.Why MCP
AI agents become useful when they can act on the systems where work actually happens. Connected through MCP, an agent can, for example:- Read your calendar and team documents and act as a personalized assistant
- Generate a working application from a design file
- Answer questions by analyzing data across an organization’s databases
The result is not an agent that can do anything. It is narrower and more
practical: the agent can perform specific external operations that a server
exposes and that the server and client control.
Core concepts
MCP is easiest to understand as a server-client model: servers expose three kinds of capability, and clients offer reverse-direction features such as elicitation.Server and client
An MCP server exposes capabilities from a system. It may wrap a local command, a filesystem, an internal API, a SaaS product, a database, or a documentation index. The server is responsible for translating MCP requests into the system’s native operations. An MCP client lives inside the AI application. It connects to one or more servers, lists what each server can provide, and makes those capabilities available to the agent according to the application’s rules. The agent normally does not call the underlying service directly. It asks the client to use a capability, and the client sends the structured request to the server. This separation keeps integrations reusable.Tools
tools are callable actions. They are the part of MCP most similar to a
function call: the server declares a tool name, description, input schema, and
result shape, and the agent can request execution with structured arguments.
Typical tools include:
- Searching issues or pull requests
- Creating a ticket
- Running a query against an approved data source
- Fetching logs for a service and time range
- Triggering a narrow internal automation
run_any_command gives the agent too much surface area. A tool named
search_recent_deploy_errors carries intent, scope, and expected input.
At run time, the exchange looks like this: the agent picks the tool from the
request, calls it with structured arguments, and answers from the result:
example
Resources
resources are readable context exposed by a server. They are useful when the
agent needs data but should not have to call an action-oriented tool for every
document or object.
Examples include:
- A file or directory tree
- A design document
- A runbook
- A database schema
- A generated summary of project state
example
Prompts
prompts are reusable prompt templates provided by a server. They package a
known way to ask for work around the server’s domain: investigate an incident,
summarize a project, prepare a release note, or triage a class of alerts.
A prompt shines when it encodes a multi-step procedure that drives the
server’s own tools.
The client shows the server’s prompts for the user to invoke. Invoking one
expands the template into the agent’s instruction, and the agent follows the
steps:
example
Elicitation
The three capabilities above flow from the server to the agent. Elicitation runs in the opposite direction: when a server needs information it cannot get on its own — a missing parameter, a credential, or confirmation before an action — it asks the user mid-task through the client. The client renders the request to the user and returns the answer to the server. A server can ask in two forms: a form with fields the server defines, or a URL the user opens in the browser for authentication or approval. A form-mode request flows like this:example
How to adopt MCP
Think of adoption in terms of what the client connects to. There are three shapes: an existing MCP server you launch locally, a remote MCP server you reach by URL, and a custom MCP server you build yourself.Existing MCP servers
Connect an existing MCP server when the tools your team already uses provide one. This is the lowest-cost option: no implementation, just configuration. Many MCP clients read a similar configuration shape — registering a server that needs credentials looks like this:client configuration
env key — keep the actual secret values out of the configuration file.
Evaluate an existing server by asking:
- Does it expose the capabilities your agent actually needs?
- Are the tool descriptions and schemas specific enough for reliable use?
- Can authentication be scoped to real users, teams, and environments?
- Does the server return concise results, or does it overfill the context?
- Does the maintenance policy fit your organization?
Remote MCP servers
Connect to a remote MCP server when the server is hosted elsewhere: an official server operated by a SaaS vendor, or one your organization runs for the whole team. Nothing runs locally — the client connects by URL and authenticates, typically with OAuth or an API key:client configuration
- Authentication and authorization — who can use which tools is controlled server-side, with no per-machine credentials to distribute
- Server updates — everyone connects to the same deployment, so one update reaches the whole team and the tool set stays consistent
- Audit logs and monitoring — every request passes through one place, so logging and observability centralize
Custom MCP servers
Build your own MCP server when existing integrations do not match your workflow or when the useful capability sits behind internal systems. With the official TypeScript SDK, a small server that exposes one tool and one prompt looks like this. It runs as a child process of the client and talks over standard input/output — the stdio transport:deploy-server
{ service: "api-gateway", hours: 24 },
and answers from the returned summary. The prompt is invoked explicitly
instead: the user picks investigate_deploy_failure from the client’s prompt
list, the expanded text becomes the agent’s instruction, and the agent walks
the steps — calling the server’s tools in order — the same way every time.
The client launches the server by command:
client configuration
Operational considerations
MCP gives agents data access and code execution paths, so operating it well is mostly about managing trust and scope: which servers to connect, who can use what, how much context comes back, and how many choices the agent has at once.Server trust
Connecting an MCP server hands it a path into the agent’s context and actions, so the first operational decision is which servers to trust. The MCP specification treats tool descriptions as untrusted unless they come from a trusted server: a description can carry instructions, and the agent reads them as part of deciding what to call. This is one instance of the general problem covered in Security, which is where the risk and the defenses against it are described.- Connect servers from providers you already trust, and prefer official ones.
- Review what a server exposes — its tools and their descriptions — before rolling it out to a team.
- Reassess after updates: a server’s tool set can change over time.
Authentication and permissions
Treat an MCP server as an application integration, not as a side channel. Authentication should identify the user, workspace, service account, or environment clearly enough for policy and audit. The MCP specification puts user consent at the center: the host obtains explicit approval before a tool runs, and the user stays in control of what data is shared. Prefer least privilege:- Give read-only access by default.
- Split read tools from write tools.
- Scope tokens to the smallest useful set of systems and operations.
- Require confirmation for destructive, expensive, or externally visible actions.
- Log the request metadata needed for debugging and audit.
Context efficiency
An MCP integration can make context better or worse. It helps when the server returns the exact data needed for the task. It hurts when every call returns a large raw object that the agent then has to carry. Design for small, decision-ready responses:- Return summaries before full bodies.
- Provide pagination, filters, and stable identifiers.
- Let the agent fetch detail after it selects a candidate.
- Omit fields that are not useful for the task.
- Prefer structured data over prose when the next step is mechanical.
Tool count management
More tools do not automatically make an agent more capable. Every tool definition consumes the agent’s context by itself, and too many overlapping tools increase selection errors, slow the agent down, and make permission review harder. Keep the tool set small and legible:- Merge tools that are always used together.
- Split tools that have different risk levels.
- Use clear names that describe the action and scope.
- Hide experimental tools from default sessions.
- Remove tools that are no longer used.
MCP is the integration layer. The surrounding work still needs clear task
boundaries, repository conventions, and human verification. See
Agentic Workflow for delegation design and
Vibe Coding for collaborative coding practice.
Related pages
Agentic Workflow
Design the delegation model around agents that plan, implement, and verify
work with clear human responsibility.
Skills
Package repeatable procedures and supporting files that an agent loads only
when they become relevant.
Security
Why untrusted tool responses are dangerous, and how to bound what an agent
may do with what it reads.
Plugins
Bundle commands, agents, skills, hooks, and MCP configuration into one
unit a team can install and update together.