necessary eval
AI Engineering / note / 5 min read

MCPs: A Better Boundary Between Agents and Tools

Why the Model Context Protocol makes agent tools easier to advertise, simpler to integrate, and safer to operate.

Agents are only useful when they can do more than generate text. They need to search, read records, create tickets, query data, send messages, and operate the systems where work actually happens.

The traditional way to give an agent those abilities is to build an API client into the application around the model. That works, but it makes every integration somebody’s bespoke engineering project. The application has to discover the API, authenticate to it, parse its responses, handle retries and errors, and explain the resulting client to the model. As the number of services grows, the agent’s surrounding code—and the context needed to describe it—grows with them.

The Model Context Protocol (MCP) provides a cleaner boundary. An MCP server advertises a set of tools to an agent, and the server owns the implementation required to call the underlying service. The agent learns what tools are available and how to use them without having to absorb the entire client implementation.

APIs make agents do too much integration work

An API is a contract between software systems, not necessarily a convenient interface for an agent. In practice, an agent using an unfamiliar service may need to:

  • Find and read documentation, sometimes rendered as HTML web pages.
  • Pull in curl, an SDK, or other developer tools.
  • Work out authentication, pagination, request formats, and response formats.
  • Write or improvise a client that turns the API into useful actions.
  • Keep that client working as the service changes.

That work consumes context and introduces failure modes unrelated to the user’s actual request. A model may spend its available attention reconstructing the mechanics of an API instead of deciding which action is appropriate.

There is also a difference between knowing that an API exists and having a reliable tool for using it. Documentation can tell an agent that a service has a POST /issues endpoint. It does not automatically give the agent a safe, validated create_issue operation with sensible defaults, useful error messages, and the right permissions.

MCP advertises capabilities, not implementation details

An MCP server can expose a compact catalog of tools such as:

  • search_documents
  • get_customer
  • create_issue
  • list_deployments

Each tool can include a name, description, input schema, and structured result. This is enough for an agent to select and invoke the tool. The server handles the details behind that interface: HTTP requests, SDK calls, authentication, pagination, retries, validation, and service-specific quirks.

This separation has two important effects.

First, tool discovery becomes more direct. The agent receives a list of available capabilities rather than a pile of implementation material. That makes the tool surface easier to understand and reduces the amount of context spent explaining how a service works internally.

Second, client implementation becomes reusable. One MCP server can serve multiple compatible agents. The integration does not have to be rebuilt inside every agent application, prompt, or workflow. Improvements to the server—better validation, clearer errors, more reliable retries—benefit every consumer.

MCP does not eliminate the need for good tool design. A badly named tool with a vague description is still a bad tool. The protocol makes a useful boundary possible; engineers still need to expose narrowly scoped actions, clear schemas, and results that help the agent make its next decision.

Credentials should stay on the service side of the boundary

Authentication is an even stronger reason to use this boundary.

How should an agent make a web request to an API without knowing the password? If the agent has to construct the request itself, it may need access to an API key, OAuth token, cookie, or other credential. An agent may read that credential, repeat it in a prompt or tool call, or store it in logs and conversation history. Even a well-intentioned agent creates more places where a secret can be exposed.

With an MCP server, the credential can be configured where the server runs. The agent sees a tool such as search_documents; it does not need to see the password used by that tool to reach the document system. The MCP server owns the client implementation and the authentication exchange.

This is a practical security boundary:

1
2
agent  ── invokes an advertised tool ──>  MCP server  ── authenticated request ──>  service
does not need the secret owns the client and credential

The boundary is not magic. The agent can still request actions allowed by the tools it can access, and it can see whatever information the server returns. MCP servers should therefore use least-privilege credentials, narrow tool scopes, input validation, audit logs, and approval requirements for consequential actions. Secrets should never be included in tool descriptions or results.

The important improvement is that the agent does not need broad, direct access to every service. An organization can configure which MCP servers an agent may use and which credentials those servers may use. The agent gets a capability surface, not a bag of passwords and unrestricted network access.

A more maintainable architecture

MCP also gives teams a useful ownership model. The team responsible for a system can publish an MCP server that reflects the system’s safe, meaningful operations. Agent developers can compose those tools without becoming experts in every underlying API. Security teams can review the server’s credentials and permissions. Operators can monitor one integration boundary instead of many independently implemented clients.

This does not mean every API should immediately be wrapped in MCP. A direct client may be the right choice for a conventional application, especially when the application needs strict control over every request. MCP is most valuable when tools need to be discovered and composed by agents, or when multiple agents need the same integration.

The pattern is straightforward:

  1. Keep service credentials with the MCP server.
  2. Expose the smallest useful set of tools.
  3. Give every tool a precise description and input schema.
  4. Return structured, task-relevant results.
  5. Apply permissions and approvals at the server boundary.
  6. Log tool usage without logging secrets.

The useful abstraction

APIs are still the foundation. MCP does not replace them; it packages their capabilities for an agent-oriented environment. The distinction is where the complexity lives.

An API asks an application developer to implement a client. An MCP server turns that client into a shared, discoverable tool. The agent can focus on choosing and sequencing capabilities, while the server focuses on making each capability reliable and secure.

That is the real benefit of MCP: less implementation detail in the agent’s context, more reusable integration work, and a clearer place to keep credentials and enforce permissions. As agents gain access to more of the systems around us, that boundary becomes less of a convenience and more of an architectural necessity.

necessary eval / pragmatic technology and leadership notes · rss © 2026
type to search titles, summaries, topics, and article text.