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

  1. 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
  2. convert_time

    • Converte a hora entre fusos horários
    • Parâmetros:
      • time: Hora no formato HH:MM
      • source_timezone: Fuso horário de origem
      • target_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

CronogramaMarco
2025 Q2MCP v2.0 com desempenho melhorado
2025 Q3Recursos de segurança empresarial
2025 Q4Suporte multimodal
2026 Q1Plataforma de orquestração de serviços
2026 Q2Framework 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!