MCP (Model Context Protocol): The Anthropic Standard Unifying AI Agents
Hello HaWkers, in 2026 we're witnessing something rare in the tech industry: competing companies adopting the same open standard. The Model Context Protocol (MCP), created by Anthropic, is being called the "USB-C of AI" and has already been adopted by OpenAI, Microsoft, and Google.
Why is this protocol so important? And how does it change the way we build applications with AI agents?
The Fragmentation Problem
Each company had its own solution.
Before MCP
How connecting AI to tools used to work:
OpenAI Function Calling:
// OpenAI-specific format
const tools = [{
type: "function",
function: {
name: "get_weather",
description: "Get weather for a location",
parameters: {
type: "object",
properties: {
location: { type: "string" }
}
}
}
}];Anthropic Tool Use:
// Anthropic-specific format
const tools = [{
name: "get_weather",
description: "Get weather for a location",
input_schema: {
type: "object",
properties: {
location: { type: "string" }
}
}
}];Google Gemini Functions:
// Yet another different format
const tools = [{
functionDeclarations: [{
name: "get_weather",
description: "Get weather for a location",
parameters: {
type: "OBJECT",
properties: {
location: { type: "STRING" }
}
}
}]
}];Three different formats to do the same thing. Developers needed to maintain separate code for each provider.
What is MCP
Open and universal protocol.
MCP Architecture
How it works:
┌─────────────────────────────────────────────────────────┐
│ MCP Host (Client) │
│ (Claude, GPT, Gemini, etc.) │
└────────────────────────┬────────────────────────────────┘
│
MCP Protocol
(JSON-RPC 2.0)
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ MCP Server │ │ MCP Server │ │ MCP Server │
│ (GitHub) │ │ (Slack) │ │ (Database) │
└──────────────┘ └──────────────┘ └──────────────┘Fundamental Concepts
Three types of resources:
1. Tools:
// Actions the agent can execute
{
"name": "create_issue",
"description": "Create a GitHub issue",
"inputSchema": {
"type": "object",
"properties": {
"title": { "type": "string" },
"body": { "type": "string" },
"repo": { "type": "string" }
},
"required": ["title", "repo"]
}
}2. Resources:
// Data the agent can access
{
"uri": "github://repos/user/project/issues",
"name": "Project Issues",
"mimeType": "application/json",
"description": "List of open issues in the project"
}3. Prompts (Templates):
// Pre-defined interaction templates
{
"name": "code_review",
"description": "Review code changes",
"arguments": [
{
"name": "pr_url",
"description": "Pull request URL",
"required": true
}
]
}
Implementing an MCP Server
Creating your own integration.
Basic Server
MCP Server structure:
// mcp-server.js
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
const server = new Server({
name: 'my-mcp-server',
version: '1.0.0',
}, {
capabilities: {
tools: {},
resources: {},
},
});
// Define available tools
server.setRequestHandler('tools/list', async () => {
return {
tools: [
{
name: 'search_database',
description: 'Search records in the database',
inputSchema: {
type: 'object',
properties: {
query: {
type: 'string',
description: 'Search query'
},
limit: {
type: 'number',
description: 'Max results',
default: 10
}
},
required: ['query']
}
}
]
};
});
// Implement tool execution
server.setRequestHandler('tools/call', async (request) => {
const { name, arguments: args } = request.params;
if (name === 'search_database') {
const results = await searchDB(args.query, args.limit);
return {
content: [
{
type: 'text',
text: JSON.stringify(results, null, 2)
}
]
};
}
throw new Error(`Unknown tool: ${name}`);
});
// Start server
const transport = new StdioServerTransport();
await server.connect(transport);Server with Resources
Exposing data to the agent:
// List available resources
server.setRequestHandler('resources/list', async () => {
return {
resources: [
{
uri: 'myapp://users/active',
name: 'Active Users',
description: 'List of currently active users',
mimeType: 'application/json'
},
{
uri: 'myapp://metrics/daily',
name: 'Daily Metrics',
description: 'Today\'s application metrics',
mimeType: 'application/json'
}
]
};
});
// Read resource content
server.setRequestHandler('resources/read', async (request) => {
const { uri } = request.params;
if (uri === 'myapp://users/active') {
const users = await getActiveUsers();
return {
contents: [
{
uri,
mimeType: 'application/json',
text: JSON.stringify(users)
}
]
};
}
if (uri === 'myapp://metrics/daily') {
const metrics = await getDailyMetrics();
return {
contents: [
{
uri,
mimeType: 'application/json',
text: JSON.stringify(metrics)
}
]
};
}
throw new Error(`Resource not found: ${uri}`);
});
Popular MCP Servers
Ready-to-use integrations.
Official Servers
Available from Anthropic:
GitHub:
npx @anthropic/mcp-server-github- Create/edit issues and PRs
- Search code in repository
- Access commit history
Slack:
npx @anthropic/mcp-server-slack- Send messages
- List channels
- Search history
PostgreSQL:
npx @anthropic/mcp-server-postgres- Execute queries
- List tables
- Access schema
Filesystem:
npx @anthropic/mcp-server-filesystem- Read/write files
- List directories
- Search content
Configuration in Claude Desktop
How to connect servers:
// ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["@anthropic/mcp-server-github"],
"env": {
"GITHUB_TOKEN": "ghp_xxxxxxxxxxxx"
}
},
"postgres": {
"command": "npx",
"args": ["@anthropic/mcp-server-postgres"],
"env": {
"DATABASE_URL": "postgresql://user:pass@localhost/db"
}
},
"custom": {
"command": "node",
"args": ["/path/to/my-mcp-server.js"]
}
}
}
Industry Adoption
Who is using MCP.
OpenAI and Microsoft
Official announcement in January 2026:
- OpenAI adopted MCP for GPT-4 and GPT-5
- Microsoft integrated into Copilot
- Azure AI Services supports MCP natively
Immediate benefits:
- Developers write one integration, works on all models
- Shared ecosystem of MCP servers
- 70% reduction in integration code
Gradual implementation:
- Gemini Pro supports MCP since December 2025
- Google Cloud offers managed MCP servers
- Vertex AI has native support
Open Source Community
Explosive growth:
GitHub Statistics (January 2026):
- 500+ public MCP servers
- 12k+ stars on main repository
- 200+ active contributors
Popular community servers:
- Notion MCP Server
- Jira MCP Server
- AWS MCP Server
- Linear MCP Server
- Figma MCP Server
Advanced Use Cases
Practical MCP applications.
DevOps Agent
Automated workflow:
// The agent can use multiple MCP servers
// to create a complete workflow
// 1. Receives alert from PagerDuty (MCP Server)
// 2. Searches logs in DataDog (MCP Server)
// 3. Identifies the problem
// 4. Creates issue on GitHub (MCP Server)
// 5. Notifies on Slack (MCP Server)
// 6. Suggests fix and opens PR (MCP Server)
// User prompt:
// "Investigate the high latency alert and create
// an issue with your analysis"
// The agent automatically:
// - Queries metrics
// - Analyzes logs
// - Correlates events
// - Documents findings
// - Notifies teamData Analysis Agent
Access to multiple sources:
// Connected MCP servers:
// - PostgreSQL (transactional data)
// - BigQuery (analytical data)
// - Notion (documentation)
// - Slack (business context)
// Prompt: "Analyze last quarter sales
// and compare with goals defined in Notion"
// The agent:
// 1. Fetches goals from Notion
// 2. Queries sales from PostgreSQL
// 3. Aggregations in BigQuery
// 4. Generates report
// 5. Posts summary on SlackSecurity and Best Practices
How to implement securely.
Access Control
Limiting permissions:
// Define permission scope
const server = new Server({
name: 'secure-mcp-server',
version: '1.0.0',
}, {
capabilities: {
tools: {
// Read-only tools
allowedOperations: ['read', 'search']
},
resources: {
// Specific resources
allowedPatterns: ['myapp://public/*']
},
},
});
// Validate inputs
server.setRequestHandler('tools/call', async (request) => {
const { name, arguments: args } = request.params;
// Sanitize inputs
const sanitizedArgs = sanitize(args);
// Check rate limits
await checkRateLimit(request.context.clientId);
// Audit log
await logAccess({
tool: name,
args: sanitizedArgs,
client: request.context.clientId,
timestamp: new Date()
});
return executeTool(name, sanitizedArgs);
});The Model Context Protocol represents a fundamental shift in how we build AI applications. For the first time, we have an open standard adopted by all major players. This reduces fragmentation, accelerates development, and creates a robust ecosystem of integrations.
If you want to learn more about AI agents in practice, I recommend checking out another article: n8n and AI Agent Workflows where you'll discover how to create intelligent automations without code.
Let's go! 🦅
🎯 Join Developers Who Are Evolving
Thousands of developers already use our material to accelerate their studies and achieve better positions in the market.
Why invest in structured knowledge?
Learning in an organized way with practical examples makes all the difference in your journey as a developer.
Start now:
- 1x of $4.90 on card
- or $4.90 at sight
"Excellent material for those who want to go deeper!" - John, Developer

