MCP Everything

Un servidor de demostración para el Protocolo de Contexto del Modelo (MCP) que muestra diversas características como herramientas, recursos y avisos en TypeScript y Python.

Documentación

MCP Everything

Nota: Este proyecto fue extraído de https://github.com/modelcontextprotocol/servers/tree/main/src/everything para crear una implementación independiente.

Este proyecto de servidor MCP demuestra varias características del Protocolo de Contexto de Modelo (MCP). Incluye implementaciones de servidor en TypeScript y Python, que sirven como servidores de prueba para los desarrolladores de clientes MCP. Ambas implementaciones buscan paridad funcional, mostrando capacidades como prompts, herramientas, recursos, muestreo, registro y más.

Características Comunes

Herramientas

  1. echo

    • Herramienta simple para devolver mensajes de entrada
    • Entrada:
      • message (string): Mensaje a devolver
    • Devuelve: Contenido de texto con el mensaje devuelto
  2. add

    • Suma dos números
    • Entradas:
      • a (number): Primer número
      • b (number): Segundo número
    • Devuelve: Resultado de texto de la suma
  3. longRunningOperation

    • Demuestra notificaciones de progreso para operaciones largas
    • Entradas:
      • duration (number, predeterminado: 10): Duración en segundos
      • steps (number, predeterminado: 5): Número de pasos de progreso
    • Devuelve: Mensaje de finalización con duración y pasos
    • Envía notificaciones de progreso durante la ejecución
  4. sampleLLM

    • Demuestra la capacidad de muestreo de LLM usando la función de muestreo de MCP
    • Entradas:
      • prompt (string): El prompt a enviar al LLM
      • maxTokens (number, predeterminado: 100): Máximo de tokens a generar
    • Devuelve: Respuesta generada del LLM
  5. getTinyImage

    • Devuelve una pequeña imagen de prueba
    • No requiere entradas
    • Devuelve: Datos de imagen PNG codificados en Base64
  6. printEnv

    • Imprime todas las variables de entorno
    • Útil para depurar la configuración del servidor MCP
    • No requiere entradas
    • Devuelve: Cadena JSON de todas las variables de entorno
  7. annotatedMessage

    • Demuestra cómo se pueden usar anotaciones para proporcionar metadatos sobre el contenido
    • Entradas:
      • messageType (enum: "error" | "success" | "debug"): Tipo de mensaje para demostrar diferentes patrones de anotación
      • includeImage (boolean, predeterminado: false): Si se debe incluir una imagen de ejemplo
    • Devuelve: Contenido con anotaciones variadas

Recursos

El servidor proporciona 100 recursos de prueba en dos formatos:

  • Recursos con número par:

    • Formato de texto plano
    • Patrón de URI: test://static/resource/{even_number}
    • Contenido: Descripción de texto simple
  • Recursos con número impar:

    • Formato de blob binario
    • Patrón de URI: test://static/resource/{odd_number}
    • Contenido: Datos binarios codificados en Base64

Características de los recursos:

  • Soporta paginación (10 elementos por página)
  • Permite suscribirse a actualizaciones de recursos
  • Demuestra plantillas de recursos
  • Actualiza automáticamente los recursos suscritos cada 5 segundos

Prompts

  1. simple_prompt

    • Prompt básico sin argumentos
    • Devuelve: Intercambio de un solo mensaje
  2. complex_prompt

    • Prompt avanzado que demuestra el manejo de argumentos
    • Argumentos requeridos:
      • temperature (number): Configuración de temperatura
    • Argumentos opcionales:
      • style (string): Preferencia de estilo de salida
    • Devuelve: Conversación de múltiples turnos con imágenes

Registro

El servidor envía mensajes de registro de nivel aleatorio cada 15 segundos para demostrar las capacidades de registro de MCP.

Implementación en TypeScript

Ubicación: typescript/

Instalación

Desarrollo Local

# Clone the repository (if not already done)
# git clone https://github.com/modelcontextprotocol/mcp-everything.git
# cd mcp-everything

# Navigate to the TypeScript directory from the repository root
cd typescript

# Install dependencies
npm install

# Build the project
npm run build

# Start the server
npm start

Instalación Global

# Navigate to the TypeScript directory:
# cd path/to/mcp-everything/typescript
# Then install globally from the local package:
npm install -g .

# Run the server 
# (The command name will depend on the 'bin' field in typescript/package.json, 
#  e.g., 'mcp-everything-ts' or 'mcp-everything' if modified)
# Example:
# mcp-everything-ts

Nota: La funcionalidad de instalación global y el comando exacto dependen de la configuración de bin dentro de typescript/package.json.

Docker

# Build the Docker image from the repository root
# (Assumes Dockerfile is updated to handle APP_DIR build argument or typescript context)
docker build -t mcp-everything-ts -f Dockerfile . --build-arg APP_DIR=typescript

# Run the container
docker run -it mcp-everything-ts

Uso con Clientes MCP (por ejemplo, Claude Desktop)

Agregue a la configuración del servidor MCP de su cliente. Es posible que las rutas necesiten ajustes.

Si usa npx con un paquete publicado (por ejemplo, mcp-everything-ts):

{
  "mcpServers": {
    "everything-ts-npx": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-everything-ts" 
        // Replace 'mcp-everything-ts' with the actual package name if different
      ]
    }
  }
}

Si se ejecuta desde una compilación local (asegúrese de que cwd sea el directorio typescript):

{
  "mcpServers": {
    "everything-ts-local": {
      "command": "npm",
      "args": [
        "start"
      ],
      // Ensure 'cwd' points to the 'typescript' directory of this project.
      "cwd": "path/to/mcp-everything/typescript" 
    }
  }
}

Reemplace "path/to/mcp-everything/typescript" con la ruta correcta.


Implementación en Python

Ubicación: python/

Instalación y Configuración

  1. Desde la raíz del repositorio, navegue al directorio de Python:
    cd python
    
  2. (Recomendado) Cree y active un entorno virtual:
    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  3. Instale las dependencias:
    pip install -r requirements.txt
    

Ejecutar el Servidor

Desde el directorio python (y con el entorno virtual activado si se usa):

python mcp_server.py

El servidor escucha mensajes MCP a través de stdio.

Uso con Clientes MCP (por ejemplo, Claude Desktop)

Ejemplo de configuración:

{
  "mcpServers": {
    "everything-py": {
      "command": "python", // Or "path/to/python/venv/bin/python"
      "args": ["mcp_server.py"],
      "cwd": "path/to/mcp-everything/python" // Ensure this is the correct path
    }
  }
}

Reemplace "path/to/mcp-everything/python" con la ruta correcta.

Probar el Servidor mediante GitHub Actions

Nota: La implementación está en progreso. El servidor aún no es completamente funcional.

  • Prueba 1
  • Prueba 2