MCP Server
Um serviço de backend que fornece ferramentas, recursos e prompts para modelos de IA utilizando o Model Context Protocol (MCP).
Documentação
MCP Server - Model Context Protocol
📖 Introdução ao MCP Server
Model Context Protocol (MCP) é um protocolo aberto desenvolvido pela Anthropic para padronizar a forma como os modelos de IA interagem com fontes de dados e ferramentas externas. O MCP Server é um componente importante nesse ecossistema, atuando como ponte entre os modelos de IA e os diversos serviços, bancos de dados e APIs.
🔑 Conceitos principais
- MCP Server: É um serviço backend que fornece ferramentas (tools), recursos (resources) e prompts para modelos de IA
- Protocolo padrão: Utiliza JSON-RPC 2.0 para garantir compatibilidade entre sistemas
- Arquitetura Cliente-Servidor: Aplicações de IA (clientes) comunicam-se com servidores MCP via WebSocket ou stdio
🌟 Uso na prática
1. Integração com Banco de Dados
AI Model ↔ MCP Server ↔ Database (MySQL, PostgreSQL, MongoDB)
- Permite que a IA consulte e analise dados diretamente
- Gera automaticamente relatórios e insights a partir do banco de dados
2. Conexão com APIs Externas
AI Model ↔ MCP Server ↔ External APIs (Weather, Stock, Social Media)
- Obtém dados em tempo real de serviços web
- Executa tarefas de automação
3. Gerenciamento de Sistema de Arquivos
AI Model ↔ MCP Server ↔ Local/Cloud Storage
- Lê, grava e processa arquivos
- Faz backup e sincroniza dados
🚀 Casos de Uso Comuns
1. Business Intelligence e Análise de Dados
- Descrição: Analisa automaticamente dados de negócios
- Exemplo: Gera relatórios de receita mensal a partir do banco de dados de vendas
# MCP Server cung cấp tool để query database
tools = [
{
"name": "query_sales_db",
"description": "Query sales database",
"parameters": {"query": "string"}
}
]
2. Automação de Suporte ao Cliente
- Descrição: Atende clientes por meio de chatbot de IA
- Exemplo: Consulta informações de pedidos, atualiza status de tickets
tools = [
{
"name": "get_order_status",
"description": "Get customer order status",
"parameters": {"order_id": "string"}
}
]
3. Gerenciamento de Conteúdo
- Descrição: Gerencia e cria conteúdo automaticamente
- Exemplo: Cria posts de blog automaticamente, atualiza CMS
tools = [
{
"name": "publish_content",
"description": "Publish content to CMS",
"parameters": {"title": "string", "content": "string"}
}
]
4. DevOps e Monitoramento
- Descrição: Monitora sistemas e automatiza deploys
- Exemplo: Verifica a saúde do servidor, faz deploy de aplicações
tools = [
{
"name": "check_server_health",
"description": "Check server health status",
"parameters": {"server_id": "string"}
}
]
5. Integração com E-commerce
- Descrição: Gerencia loja online por meio de IA
- Exemplo: Atualiza inventário, processa pedidos, atendimento ao cliente
🛠️ Como Criar um MCP Server
Passo 1: Configurar o ambiente
# Python
pip install mcp
# Node.js
npm install @modelcontextprotocol/sdk
# TypeScript
npm install @modelcontextprotocol/sdk typescript
Passo 2: Criar um MCP Server básico (Python)
#!/usr/bin/env python3
import asyncio
import json
from mcp.server import Server
from mcp.server.models import InitializationOptions
from mcp.server.stdio import stdio_server
from mcp.types import TextContent, Tool
server = Server("my-mcp-server")
@server.list_tools()
async def handle_list_tools() -> list[Tool]:
"""Danh sách các tools có sẵn"""
return [
Tool(
name="echo",
description="Echo back the input",
inputSchema={
"type": "object",
"properties": {
"message": {"type": "string"}
},
"required": ["message"]
}
)
]
@server.call_tool()
async def handle_call_tool(name: str, arguments: dict) -> list[TextContent]:
"""Xử lý tool calls"""
if name == "echo":
message = arguments.get("message", "")
return [TextContent(type="text", text=f"Echo: {message}")]
else:
raise ValueError(f"Unknown tool: {name}")
async def main():
async with stdio_server() as (read_stream, write_stream):
await server.run(
read_stream,
write_stream,
InitializationOptions(
server_name="my-mcp-server",
server_version="1.0.0",
capabilities=server.get_capabilities()
)
)
if __name__ == "__main__":
asyncio.run(main())
Passo 3: Criar um MCP Server com TypeScript
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import {
CallToolRequestSchema,
ListToolsRequestSchema,
} from '@modelcontextprotocol/sdk/types.js';
class MyMCPServer {
private server: Server;
constructor() {
this.server = new Server(
{
name: 'my-mcp-server',
version: '1.0.0',
},
{
capabilities: {
tools: {},
},
}
);
this.setupHandlers();
}
private setupHandlers() {
this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [
{
name: 'calculator',
description: 'Perform basic math operations',
inputSchema: {
type: 'object',
properties: {
operation: { type: 'string', enum: ['add', 'subtract', 'multiply', 'divide'] },
a: { type: 'number' },
b: { type: 'number' },
},
required: ['operation', 'a', 'b'],
},
},
],
}));
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { name, arguments: args } = request.params;
if (name === 'calculator') {
const { operation, a, b } = args as any;
let result: number;
switch (operation) {
case 'add':
result = a + b;
break;
case 'subtract':
result = a - b;
break;
case 'multiply':
result = a * b;
break;
case 'divide':
result = a / b;
break;
default:
throw new Error(`Unknown operation: ${operation}`);
}
return {
content: [{ type: 'text', text: `Result: ${result}` }],
};
}
throw new Error(`Unknown tool: ${name}`);
});
}
async run() {
const transport = new StdioServerTransport();
await this.server.connect(transport);
}
}
const server = new MyMCPServer();
server.run().catch(console.error);
Passo 4: Configurar o cliente para usar o MCP Server
{
"mcpServers": {
"my-server": {
"command": "python",
"args": ["path/to/your/mcp_server.py"]
}
}
}
Passo 5: Testar o MCP Server
# Test với stdio
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | python mcp_server.py
📁 Projetos no Repositório
🕐 MCP Time Server (Node.js)
Localização: mcp-time-node/
Um MCP Server escrito em Node.js que fornece funcionalidades relacionadas ao tempo:
✨ Recursos
- Get Current Time: Obtém a hora atual no fuso horário especificado
- Convert Time: Converte a hora entre diferentes fusos horários
- IANA Timezone Support: Suporte completo aos fusos horários conforme o padrão IANA
🚀 Como usar
# Chạy với Node.js trực tiếp
cd mcp-time-node
npm install
npm start
# Chạy demo
npm run demo
# Chạy với Docker
docker build -t mcp-time-server .
docker run -i --rm mcp-time-server
📋 Ferramentas Disponíveis
-
get_current_time
- Obtém a hora atual
- Parâmetro:
timezone(nome do fuso horário IANA) - Exemplo:
Asia/Ho_Chi_Minh,America/New_York,Europe/London
-
convert_time
- Converte a hora entre fusos horários
- Parâmetros:
time: Hora no formato HH:MMsource_timezone: Fuso horário de origemtarget_timezone: Fuso horário de destino
🐳 Suporte a Docker
O projeto foi containerizado com Dockerfile otimizado para produção:
- Imagem base:
node:18-alpine - Segurança: Usuário não-root
- Tamanho: Pegada mínima
⚙️ Integração com VS Code MCP
Já configurado em .vscode/mcp.json com 2 opções:
- mcp-time-node: Executa diretamente com Node.js
- mcp-time-docker: Executa com contêiner Docker
💡 Exemplo de uso
// Lấy thời gian hiện tại ở Việt Nam
{
"name": "get_current_time",
"arguments": {
"timezone": "Asia/Ho_Chi_Minh"
}
}
// Chuyển đổi 14:30 từ Việt Nam sang New York
{
"name": "convert_time",
"arguments": {
"time": "14:30",
"source_timezone": "Asia/Ho_Chi_Minh",
"target_timezone": "America/New_York"
}
}
🔮 Futuro do MCP
1. Ecossistema em expansão
- Mais provedores: Bancos de dados, serviços em nuvem, dispositivos IoT
- Comunidade: Ferramentas e extensões de código aberto
- Padronização: Tornar-se o padrão da indústria para integrações de IA
2. Melhorias de desempenho
- Mecanismos de cache: Otimizar o tempo de resposta
- Processamento paralelo: Processar múltiplas solicitações simultaneamente
- Balanceamento de carga: Distribuir carga para aplicações de alto tráfego
3. Melhorias de segurança
- Autenticação e Autorização: Tokens OAuth2, JWT
- Criptografia de dados: Criptografia de ponta a ponta
- Registro de auditoria: Rastrear e registrar todas as interações
4. Recursos nativos de IA
- Consciência de contexto: Entender melhor o contexto de conversas anteriores
- Capacidades de aprendizado: Aprender e melhorar o desempenho
- Suporte multimodal: Processar texto, imagens, áudio, vídeo
5. Adoção empresarial
- Segurança de nível empresarial: Conformidade com GDPR, HIPAA
- Escalabilidade: Suportar milhões de conexões simultâneas
- Monitoramento e Análise: Painéis e métricas detalhadas
6. Tendências de integração
Current: AI ↔ MCP Server ↔ Single Service
Future: AI ↔ MCP Server ↔ Multiple Services (Orchestration)
- Orquestração de serviços: Um servidor MCP gerencia múltiplos serviços
- Automação de fluxos de trabalho: Automatizar processos de negócios complexos
- Colaboração em tempo real: Múltiplos agentes de IA trabalhando juntos
📈 Roadmap previsto
| Cronograma | Marco |
|---|---|
| 2025 Q2 | MCP v2.0 com desempenho melhorado |
| 2025 Q3 | Recursos de segurança empresarial |
| 2025 Q4 | Suporte multimodal |
| 2026 Q1 | Plataforma de orquestração de serviços |
| 2026 Q2 | Framework de colaboração de agentes de IA |
🎯 Conclusão
O MCP Server está se tornando a espinha dorsal para a integração de IA em sistemas reais. Com a capacidade de conectar de forma flexível modelos de IA e serviços externos, o MCP abre inúmeras possibilidades para automação e aplicações inteligentes.
Principais conclusões:
- ✅ Protocolo padronizado para integrações de IA
- ✅ Fácil de implementar e manter
- ✅ Ecossistema em forte crescimento
- ✅ Futuro muito promissor com adoção empresarial
Comece com o MCP Server hoje mesmo para aproveitar o poder da IA em suas aplicações!