If an AI assistant needs to work with your company's systems, the interesting question is not only “Which model should I use?” It is also “How does the model safely access the tools and context it needs?”
Model Context Protocol (MCP) provides a standard way for AI applications to connect with external capabilities. MCP servers can expose tools, resources, and prompts, giving clients a structured interface to systems and data. MCP server primitives
Think of MCP as a Contract
Imagine an internal order platform. Instead of building a separate integration for every AI client, you can expose focused capabilities through an MCP server:
get_order(orderId)
search_orders(customerId)
create_support_ticket(orderId, message)
The AI application can discover those capabilities and decide when to use them, while the server remains responsible for implementing the actual business integration.
Tools, Resources, and Prompts
- Tools perform actions or retrieve information.
- Resources provide structured context such as documents or other data.
- Prompts provide reusable interaction templates.
This separation is useful because each capability has a clearer purpose and boundary.
A Small TypeScript Example
The current MCP TypeScript SDK provides server APIs for exposing tools, resources, and prompts. A minimal tool can look conceptually like this:
server.registerTool(
"get_order",
{
description: "Get an order by ID",
inputSchema: {
type: "object",
properties: { orderId: { type: "string" } },
required: ["orderId"]
}
},
async ({ orderId }) => {
return { content: await orders.get(orderId) };
}
);
The exact SDK APIs can change with protocol versions, so I treat the protocol specification and SDK documentation as the source of truth when implementing a production server.
Where Governance Fits
MCP does not mean “give the model unrestricted access.” A production MCP server still needs authentication, authorization, input validation, rate limits, audit logging, and clear tool boundaries.
For example, I would treat these differently:
get_customer() // read-only
update_customer() // write
delete_customer() // destructive
issue_refund() // high-impact
The server and the underlying business system should enforce those permissions rather than trusting the model to follow a prompt.
When MCP Is Useful
MCP becomes particularly interesting when several AI clients need access to the same capabilities. Instead of maintaining many custom adapters, you can expose a focused server interface and keep the integration logic behind it.
My Practical Takeaway
I see MCP as an integration boundary for agentic systems: the AI decides what capability it needs, while the server defines what is available and how that capability is executed.
That separation makes agent systems easier to integrate, test, govern, and evolve — especially when the tools represent real business operations.