MCP Server

Un servicio backend que proporciona herramientas, recursos y avisos para modelos de IA que utilizan el Protocolo de Contexto de Modelo (MCP).

Documentación

MCP Server - Model Context Protocol

📖 Introducción a MCP Server

Model Context Protocol (MCP) es un protocolo abierto desarrollado por Anthropic para estandarizar la forma en que los modelos de IA interactúan con fuentes de datos y herramientas externas. MCP Server es un componente importante en este ecosistema, actuando como puente entre los modelos de IA y los diferentes servicios, bases de datos y API.

🔑 Conceptos fundamentales

  • MCP Server: Es un servicio backend que proporciona herramientas (tools), recursos (resources) y prompts para los modelos de IA
  • Protocolo estándar: Utiliza JSON-RPC 2.0 para garantizar la compatibilidad entre sistemas
  • Arquitectura Cliente-Servidor: Las aplicaciones de IA (clientes) se comunican con los servidores MCP a través de WebSocket o stdio

🌟 Uso en la práctica

1. Integración de bases de datos

AI Model ↔ MCP Server ↔ Database (MySQL, PostgreSQL, MongoDB)
  • Permite a la IA consultar y analizar datos directamente
  • Genera automáticamente informes e insights desde la base de datos

2. Conexión con API externas

AI Model ↔ MCP Server ↔ External APIs (Weather, Stock, Social Media)
  • Obtiene datos en tiempo real de servicios web
  • Realiza tareas de automatización

3. Gestión del sistema de archivos

AI Model ↔ MCP Server ↔ Local/Cloud Storage
  • Leer, escribir y procesar archivos
  • Realizar copias de seguridad y sincronizar datos

🚀 Casos de uso más comunes

1. Business Intelligence y Analytics

  • Descripción: Análisis automático de datos empresariales
  • Ejemplo: Generar informes de ingresos mensuales desde la base de datos de ventas
# MCP Server cung cấp tool để query database
tools = [
    {
        "name": "query_sales_db",
        "description": "Query sales database",
        "parameters": {"query": "string"}
    }
]

2. Automatización de atención al cliente

  • Descripción: Atención al cliente mediante chatbot de IA
  • Ejemplo: Consultar información de pedidos, actualizar el estado de tickets
tools = [
    {
        "name": "get_order_status",
        "description": "Get customer order status",
        "parameters": {"order_id": "string"}
    }
]

3. Gestión de contenidos

  • Descripción: Gestión y creación automática de contenidos
  • Ejemplo: Creación automática de publicaciones de blog, actualización de CMS
tools = [
    {
        "name": "publish_content",
        "description": "Publish content to CMS",
        "parameters": {"title": "string", "content": "string"}
    }
]

4. DevOps y Monitoreo

  • Descripción: Monitoreo del sistema y automatización de despliegues
  • Ejemplo: Verificar el estado de los servidores, desplegar aplicaciones
tools = [
    {
        "name": "check_server_health",
        "description": "Check server health status",
        "parameters": {"server_id": "string"}
    }
]

5. Integración de comercio electrónico

  • Descripción: Gestión de tienda online mediante IA
  • Ejemplo: Actualizar inventario, procesar pedidos, atención al cliente

🛠️ Cómo crear un MCP Server

Paso 1: Configuración del entorno

# Python
pip install mcp

# Node.js
npm install @modelcontextprotocol/sdk

# TypeScript
npm install @modelcontextprotocol/sdk typescript

Paso 2: Crear un 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())

Paso 3: Crear un MCP Server con 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);

Paso 4: Configurar el Cliente para usar el MCP Server

{
  "mcpServers": {
    "my-server": {
      "command": "python",
      "args": ["path/to/your/mcp_server.py"]
    }
  }
}

Paso 5: Probar el MCP Server

# Test với stdio
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | python mcp_server.py

📁 Proyectos en el Repositorio

🕐 MCP Time Server (Node.js)

Ubicación: mcp-time-node/

Un MCP Server escrito en Node.js que proporciona funciones relacionadas con el tiempo:

✨ Características

  • Get Current Time: Obtener la hora actual según la zona horaria especificada
  • Convert Time: Convertir la hora entre diferentes zonas horarias
  • IANA Timezone Support: Compatibilidad completa con las zonas horarias según el estándar IANA

🚀 Cómo 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

📋 Herramientas disponibles

  1. get_current_time

    • Obtener la hora actual
    • Parámetro: timezone (nombre de zona horaria IANA)
    • Ejemplo: Asia/Ho_Chi_Minh, America/New_York, Europe/London
  2. convert_time

    • Convertir la hora entre zonas horarias
    • Parámetros:
      • time: Hora en formato HH:MM
      • source_timezone: Zona horaria de origen
      • target_timezone: Zona horaria de destino

🐳 Soporte Docker

El proyecto está containerizado con Dockerfile optimizado para producción:

  • Imagen base: node:18-alpine
  • Seguridad: Usuario no root
  • Tamaño: Huella mínima

⚙️ Integración con VS Code MCP

Ya configurado en .vscode/mcp.json con 2 opciones:

  • mcp-time-node: Se ejecuta directamente con Node.js
  • mcp-time-docker: Se ejecuta con contenedor Docker

💡 Ejemplo 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 de MCP

1. Ecosistema en expansión

  • Más proveedores: Bases de datos, servicios en la nube, dispositivos IoT
  • Impulsado por la comunidad: Herramientas y extensiones de código abierto
  • Estandarización: Convertirse en el estándar de la industria para integraciones de IA

2. Mejoras de rendimiento

  • Mecanismos de caché: Optimizar el tiempo de respuesta
  • Procesamiento paralelo: Manejar múltiples solicitudes simultáneamente
  • Balanceo de carga: Distribuir la carga para aplicaciones de alto tráfico

3. Mejoras de seguridad

  • Autenticación y autorización: OAuth2, tokens JWT
  • Cifrado de datos: Cifrado de extremo a extremo
  • Registro de auditoría: Seguimiento y registro de todas las interacciones

4. Funciones nativas de IA

  • Conciencia del contexto: Comprender mejor el contexto de conversaciones anteriores
  • Capacidades de aprendizaje: Autoaprendizaje y mejora del rendimiento
  • Soporte multimodal: Procesamiento de texto, imágenes, audio y video

5. Adopción empresarial

  • Seguridad de nivel empresarial: Cumplimiento con GDPR, HIPAA
  • Escalabilidad: Soporte para millones de conexiones concurrentes
  • Monitoreo y análisis: Panel de control y métricas detalladas

6. Tendencias de integración

Current: AI ↔ MCP Server ↔ Single Service
Future:  AI ↔ MCP Server ↔ Multiple Services (Orchestration)
  • Orquestación de servicios: Un MCP server gestiona múltiples servicios
  • Automatización de flujos de trabajo: Automatización de procesos empresariales complejos
  • Colaboración en tiempo real: Múltiples agentes de IA trabajando juntos

📈 Roadmap previsto

TimelineMilestone
2025 Q2MCP v2.0 con rendimiento mejorado
2025 Q3Funciones de seguridad empresarial
2025 Q4Soporte multimodal
2026 Q1Plataforma de orquestación de servicios
2026 Q2Framework de colaboración de agentes de IA

🎯 Conclusión

MCP Server se está convirtiendo en la columna vertebral para la integración de IA en sistemas reales. Con la capacidad de conectar de forma flexible los modelos de IA con servicios externos, MCP abre un sinfín de posibilidades para la automatización y las aplicaciones inteligentes.

Conclusiones clave:

  • ✅ Protocolo estandarizado para integraciones de IA
  • ✅ Fácil de implementar y mantener
  • ✅ Ecosistema en fuerte crecimiento
  • ✅ Futuro muy prometedor con la adopción empresarial

¡Comienza con MCP Server hoy mismo para aprovechar el poder de la IA en tus aplicaciones!