We spent weeks last year building custom integrations between Claude and our internal tools — database connectors, Telegram bots, calendar systems, file managers. Each one was bespoke code: different authentication patterns, different data formats, different error handling. Then Anthropic released the Model Context Protocol, and we rebuilt all of those integrations in a fraction of the time, with a shared standard that any MCP-compatible client could use.
That experience convinced us: MCP is the most important infrastructure standard in AI since the OpenAI API format became the de facto standard for LLM calls. If you're building AI-powered applications, you need to understand it.
What is MCP?
The Model Context Protocol (MCP) is an open standard created by Anthropic that defines how AI applications connect to external data sources and tools. Think of it as a universal plug: instead of building custom integrations for every combination of AI client and external tool, both sides implement the MCP standard and they just work together.
The analogy people use is USB — before USB, every device had its own proprietary connector. MCP does the same thing for AI integrations. One protocol, many servers, many clients.
Technically, MCP defines three primitives:
- Tools — Actions the AI can take (query a database, send an email, create a ticket)
- Resources — Data the AI can read (files, database records, API responses)
- Prompts — Pre-built instruction templates for common tasks
An MCP server exposes these primitives. An MCP client (like Claude Desktop, Claude Code, or your custom application) discovers and uses them. The protocol handles discovery, authentication, and communication.
Why MCP Matters (The Integration Problem)
Before MCP, connecting an AI to your tools meant:
- Writing custom tool definitions for every LLM API (different for Claude, GPT, Gemini)
- Building authentication and session management per integration
- Handling different data formats and error patterns for each tool
- Maintaining all of these custom integrations as APIs evolve
With MCP, you build one server per tool, and it works with every MCP client. Your Jira MCP server works with Claude Desktop, Claude Code, custom chatbots, and any future MCP-compatible application — no changes needed.
For a company like ours that builds AI-powered applications for clients, this is massive. We used to spend 30-40% of project time on integration code. Now we spend that time on the actual AI logic that delivers value.
How MCP Works Under the Hood
The Architecture
MCP uses a client-server architecture over JSON-RPC 2.0:
- Client connects to server — via stdio (local process), HTTP+SSE (remote), or WebSocket
- Discovery — Client calls
tools/list,resources/list, andprompts/listto learn what the server offers - Execution — When the AI decides to use a tool, the client sends
tools/callwith the tool name and arguments - Response — Server executes the action and returns structured results
The communication is stateful — the server can maintain context across calls, which is important for things like database transactions or multi-step workflows.
Transport Options
stdio (local): The server runs as a subprocess. Best for local development tools — your IDE integration, local database access, file system operations. Zero network overhead, dead simple.
HTTP + SSE (remote): The server runs on a remote host. Best for shared services — team Jira integration, company CRM access, cloud database queries. Supports authentication, rate limiting, and multi-user access.
Tool Definition Format
Tools are defined using JSON Schema — the same format you'd use for API documentation. Here's what a simple database query tool looks like:
{
"name": "query_customers",
"description": "Search customers by name, email, or account ID",
"inputSchema": {
"type": "object",
"properties": {
"search_term": {
"type": "string",
"description": "Customer name, email, or account ID"
},
"limit": {
"type": "integer",
"default": 10,
"description": "Maximum results to return"
}
},
"required": ["search_term"]
}
}
The AI reads these definitions and decides when and how to call the tools based on the user's request. No prompt engineering needed for tool selection — the model handles that.
Building Your First MCP Server
Let's build a practical example: an MCP server that connects to a MySQL database and lets an AI query customer data. This is one of the most common use cases we implement for clients.
Step 1: Choose Your SDK
Anthropic provides official SDKs in TypeScript and Python. Community SDKs exist for Go, Rust, Java, C#, and PHP. We use TypeScript for most MCP servers because the tooling is mature and deployment is straightforward.
npm init -y
npm install @modelcontextprotocol/sdk mysql2
Step 2: Define Your Server
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import mysql from "mysql2/promise";
const server = new McpServer({
name: "customer-db",
version: "1.0.0"
});
const pool = mysql.createPool({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME
});
// Define a tool
server.tool(
"search_customers",
"Search customers by name, email, or ID",
{
search_term: { type: "string", description: "Search query" },
limit: { type: "number", description: "Max results", default: 10 }
},
async ({ search_term, limit }) => {
const [rows] = await pool.execute(
`SELECT id, name, email, plan FROM customers
WHERE name LIKE ? OR email LIKE ? LIMIT ?`,
[`%${search_term}%`, `%${search_term}%`, limit || 10]
);
return { content: [{ type: "text", text: JSON.stringify(rows, null, 2) }] };
}
);
// Start server
const transport = new StdioServerTransport();
await server.connect(transport);
Step 3: Register with Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"customer-db": {
"command": "node",
"args": ["./server.js"],
"env": {
"DB_HOST": "localhost",
"DB_USER": "app",
"DB_PASS": "secret",
"DB_NAME": "myapp"
}
}
}
}
Restart Claude Desktop, and you can now ask "Find all customers named Smith" — Claude will call your MCP server, query the database, and return formatted results.
Real Use Cases We've Built
Internal Operations (Our CMD Center)
We built MCP servers for our own CMD Center that connect to Gmail, Google Calendar, and our task management database. Our AI agents use these to schedule meetings, send emails, and update task statuses — all through the standard MCP protocol. When we added Telegram integration, it took 2 hours instead of the 2 days it would have taken with custom code.
Client CRM Integration
A SaaS client needed their support team to query customer data during chat sessions. We built an MCP server that connects to their Salesforce instance, exposing tools for customer lookup, ticket history, and subscription details. Their support agents now use Claude with this MCP server to get instant context during customer calls.
Development Workflow
For custom software projects, we build MCP servers that connect to the client's Jira, GitHub, and deployment pipeline. Developers can ask Claude to "create a ticket for the login bug we discussed" or "show me the last 5 deployments to production" without leaving their IDE.
Document Intelligence
A legal tech client built an MCP server that connects to their document management system. Lawyers can ask Claude to "find all contracts with Company X that mention indemnification clauses" — the MCP server handles the document retrieval and text extraction, Claude handles the analysis.
The MCP Ecosystem in 2026
The ecosystem has grown rapidly since Anthropic open-sourced MCP in late 2024:
Clients that support MCP: Claude Desktop, Claude Code (CLI), Cursor, Windsurf, Cline, Continue, and dozens of custom applications. Any tool that integrates with Claude can use MCP servers.
Pre-built servers: The community has built MCP servers for most major platforms — GitHub, Slack, Notion, Google Workspace, AWS, PostgreSQL, MongoDB, Jira, Linear, and hundreds more. Check the MCP server registry before building your own.
Enterprise adoption: Companies are building internal MCP server catalogs — a library of pre-approved, security-reviewed integrations that any AI application in the organization can use. This "MCP marketplace" pattern is one of the most interesting enterprise trends we're seeing.
Production Deployment Tips
We've deployed MCP servers across dozens of client environments. Here's what we've learned:
Security First
- Principle of least privilege: Each MCP server should have only the database/API permissions it needs. A customer lookup tool shouldn't have write access to the billing system.
- Input validation: Validate every parameter the AI sends. LLMs can hallucinate parameter values — your server must handle garbage gracefully.
- Audit logging: Log every tool call with the user identity, parameters, and results. Essential for compliance and debugging.
Performance
- Connection pooling: Don't create new database connections per tool call. Pool them.
- Timeouts: Set aggressive timeouts (5-10 seconds). A hanging MCP call blocks the entire AI conversation.
- Caching: Cache frequently-requested data (user profiles, config settings) with short TTLs. Saves API calls and reduces latency.
Error Handling
- Return clear, human-readable error messages. The AI will include these in its response to the user.
- Never expose internal stack traces or database errors to the AI — those can leak through to end users.
- Implement circuit breakers for external API calls. If a downstream service is down, fail fast rather than timing out.
Need help building MCP integrations for your organization? Our AI consulting team specializes in enterprise MCP deployments.
Frequently Asked Questions
Is MCP only for Claude, or does it work with other AI models?
MCP is an open standard — any AI application can implement the client side. While Anthropic created it and Claude has the deepest integration, OpenAI, Google, and others are adding MCP support. The protocol itself is model-agnostic.
How is MCP different from function calling / tool use?
Function calling is how an LLM invokes a tool within a single API call. MCP is the protocol that discovers, connects, and manages those tools across applications. MCP servers can expose tools that get used via function calling — they're complementary, not competing.
Can I use MCP with my existing APIs?
Yes — the most common pattern is building an MCP server that wraps your existing REST or GraphQL API. The server translates between MCP's tool format and your API's request/response format. You don't need to rewrite your APIs.
Is MCP secure enough for production with sensitive data?
MCP itself is a transport protocol — security depends on your implementation. Use environment variables for credentials, implement proper authentication, validate inputs, and log everything. For remote MCP servers, use HTTPS with mutual TLS. We've deployed MCP in HIPAA-compliant and SOC 2 environments successfully.