Skip to main content
Glama

Model Context Protocol (MCP) Server

by infinyte

Servidor de Protocolo de Contexto de Modelo (MCP)

Una implementación de servidor simple para el Protocolo de Contexto de Modelo que proporciona una API unificada para múltiples proveedores de modelos de IA.

Características

  • API unificada para múltiples proveedores de IA (Anthropic, OpenAI)
  • Compatibilidad con finalizaciones de chat y finalizaciones heredadas
  • Soporte de llamada de herramientas
  • Manejo de mensajes de contexto/sistema
  • Configuración basada en el entorno
  • Base de datos MongoDB para persistencia y gestión de estado
  • Historial y análisis de ejecución de herramientas

Instalación

# Clone the repository git clone <repository-url> cd testmcp # Install dependencies npm install # Run the interactive setup npm run setup

El script de configuración lo guiará a través de la configuración de las claves API necesarias:

  • ANTHROPIC_API_KEY - Para modelos Claude
  • OPENAI_API_KEY - Para modelos GPT y generación de imágenes DALL-E
  • STABILITY_API_KEY - Para la generación de imágenes de difusión estable
  • GOOGLE_CSE_API_KEY y GOOGLE_CSE_ID : para la funcionalidad de búsqueda web
  • BING_SEARCH_API_KEY - Para búsqueda web de respaldo

También puede editar manualmente el archivo .env si lo prefiere.

Configuración de MongoDB

El servidor MCP utiliza MongoDB para la persistencia de datos. Tiene varias opciones para configurar MongoDB:

Opción 1: Configuración automatizada (recomendada)

Ejecute el script de configuración de MongoDB, que lo guiará a través del proceso:

# Run the MongoDB setup script npm run setup-mongodb

Este script hará lo siguiente:

  1. Comprueba si Docker está disponible
  2. Inicie MongoDB usando Docker Compose (si está disponible)
  3. Configure la conexión en su archivo .env
  4. Verificar la conexión de MongoDB

Opción 2: Configuración manual de Docker

La forma más sencilla de comenzar a utilizar MongoDB es utilizar la configuración de Docker Compose incluida:

# Start MongoDB and Mongo Express in Docker docker compose up -d # Update your .env file with the connection string echo "MONGODB_URI=mongodb://mcpuser:mcppassword@localhost:27017/mcp-server" >> .env

MongoDB estará disponible en mongodb://mcpuser:mcppassword@localhost:27017/mcp-server
Mongo Express (administración web) estará disponible en http://localhost:8081

Opción 3: Instalación local de MongoDB

Si prefiere instalar MongoDB localmente:

  1. Instale MongoDB desde https://www.mongodb.com/try/download/community
  2. Iniciar el servicio MongoDB
  3. Actualice su archivo .env con:
    MONGODB_URI=mongodb://localhost:27017/mcp-server

Opción 4: MongoDB Atlas (Nube)

Para uso en producción, se recomienda MongoDB Atlas:

  1. Crea una cuenta en https://www.mongodb.com/cloud/atlas
  2. Crear un nuevo clúster
  3. Configurar un usuario de base de datos y poner en lista blanca su dirección IP
  4. Obtenga su cadena de conexión y actualice su archivo .env :
    MONGODB_URI=mongodb+srv://<username>:<password>@<cluster>.mongodb.net/mcp-server?retryWrites=true&w=majority

Migración de bases de datos

Para migrar datos existentes a MongoDB:

# Run the migration script npm run migrate-mongodb

Este script hará lo siguiente:

  1. Migrar definiciones de herramientas a MongoDB
  2. Migrar configuraciones (como claves API) a MongoDB
  3. Importar cualquier dato de respaldo si está disponible

Uso

Iniciar el servidor

# Interactive startup (checks for API keys) npm start # Development mode with auto-reload npm run dev # Quick start (skips environment checks) npm run quick-start # Start server with PM2 process manager npm run pm2:start # Start server with PM2 in production mode npm run pm2:start:prod

El servidor se ejecutará en http://localhost:3000 (o el puerto que especificó en .env).

Opciones de inicio
  1. Inicio estándar ( npm start ):
    • Comprueba si las claves API están configuradas
    • Solicitudes de configuración si no se encuentran claves
    • Recomendado para usuarios primerizos
  2. Modo de desarrollo ( npm run dev ):
    • Utiliza nodemon para la recarga automática en caso de cambios de código
    • Todavía realiza comprobaciones del entorno
    • Lo mejor para el desarrollo
  3. Inicio rápido ( npm run quick-start ):
    • Evita todas las comprobaciones del entorno
    • Inicia el servidor inmediatamente
    • Útil cuando sabes que tu configuración es correcta
  4. Modo de producción PM2 ( npm run pm2:start:prod ):
    • Ejecuta el servidor utilizando el administrador de procesos PM2
    • Se reinicia automáticamente si el servidor falla
    • Optimizado para entornos de producción
    • Evita los controles ambientales

Uso del Administrador de procesos PM2

El servidor puede ejecutarse con PM2, un gestor de procesos de producción para aplicaciones Node.js. PM2 ofrece funciones como:

  • Gestión de procesos (reinicio en caso de fallo)
  • Gestión de registros
  • Monitoreo del rendimiento
  • Equilibrio de carga (para múltiples instancias)
Comandos PM2
# Start the server with PM2 npm run pm2:start # Start in production mode npm run pm2:start:prod # View logs npm run pm2:logs # Monitor performance npm run pm2:monit # Restart the server npm run pm2:restart # Stop the server npm run pm2:stop # Remove the server from PM2 npm run pm2:delete

La configuración de PM2 se almacena en ecosystem.config.js . Puede modificar este archivo para cambiar:

  • Nombre del proceso
  • Variables de entorno
  • Límites de memoria
  • Configuración de implementación
  • Número de instancias (para equilibrar la carga)

Puntos finales de API

POST /mcp/:provider

Realice solicitudes a modelos de IA a través de una API unificada.

Parámetros de URL:

  • provider : El proveedor de IA a utilizar ( anthropic u openai )

Cuerpo de la solicitud:

{ "messages": [ { "role": "user", "content": "Your prompt here" } ], "model": "claude-3-opus-20240229", // Optional, provider-specific model name "tools": [...], // Optional, tools for function calling "context": "System message or context" // Optional }

O (formato heredado):

{ "prompt": "Your prompt here", "model": "claude-3-opus-20240229", // Optional "context": "System message or context" // Optional }

Respuesta: Devuelve la respuesta sin procesar de la API del proveedor.

GET /tools/available

Obtenga una lista completa de todas las herramientas disponibles con información detallada.

Parámetros de consulta:

  • format - Formato de respuesta: json (predeterminado), yaml , table o html
  • category - Herramientas de filtrado por categoría (opcional)
  • enabled - Filtrar por estado habilitado: true (predeterminado) o false
  • search : busque herramientas por nombre, descripción o etiquetas
  • provider - Filtrar herramientas por proveedor (por ejemplo, openai , google )
  • limit - Número máximo de herramientas a devolver (para paginación)
  • offset - Desplazamiento para la paginación (predeterminado: 0)

Respuesta (formato JSON):

{ "success": true, "count": 10, "metadata": { "categories": ["web", "image", "utility"], "providers": ["openai", "anthropic", "internal"], "totalCount": 24, "offset": 0, "limit": 10 }, "tools": [ { "name": "web_search", "description": "Search the web for information", "category": "web", "version": "1.0.0", "provider": "google", "enabled": true, "parameters": { "query": { "type": "string", "description": "The search query", "required": true }, "limit": { "type": "number", "description": "Maximum number of results", "required": false, "default": 5 } }, "usage": { "endpoint": "/tools/web/search", "method": "POST", "parameters": { /* same as above */ } }, "metadata": { "createdAt": "2023-10-15T12:00:00Z", "updatedAt": "2024-04-20T09:30:00Z", "usageCount": 1245 } } // ... more tools ] }
GET /health

Punto final de verificación de estado que devuelve el estado 200 si el servidor está en ejecución.

Gestión de datos

Copias de seguridad de bases de datos

Puede crear y administrar copias de seguridad de bases de datos:

# Create a full backup npm run backup-mongodb # Create a backup with execution history npm run backup-mongodb -- --with-executions # List existing backups npm run backup-mongodb -- --list
Prueba de la conexión a la base de datos

Para verificar su configuración de MongoDB:

# Run the database test script npm run test-mongodb

Clientes de ejemplo

Cliente de línea de comandos

Se incluye un cliente de prueba en src/client.js . Para ejecutarlo:

node src/client.js
Cliente web

Hay una interfaz web sencilla disponible en http://localhost:3000 cuando el servidor está en ejecución. Puede usarla para probar la API directamente desde su navegador.

Herramientas disponibles

El servidor MCP proporciona un punto final de descubrimiento de herramientas que permite a los usuarios y agentes de IA enumerar programáticamente todas las herramientas disponibles:

Descubrimiento de herramientas

GET /tools/available : enumera todas las herramientas disponibles con información detallada.

  • Admite múltiples formatos: JSON, YAML, HTML y tabla ASCII
  • Proporciona filtrado por categoría, proveedor y términos de búsqueda.
  • Incluye metadatos detallados y ejemplos de uso para cada herramienta.

Ejemplo de uso:

# Get all tools in JSON format curl http://localhost:3000/tools/available # Get tools in a specific category curl http://localhost:3000/tools/available?category=web # Search for image-related tools curl http://localhost:3000/tools/available?search=image # Get a formatted HTML page of all tools curl http://localhost:3000/tools/available?format=html > tools.html

Herramientas de búsqueda web

El servidor incluye herramientas de búsqueda y recuperación web integradas:

  1. Búsqueda web ( /tools/web/search )
    • Busque en la web información sobre una consulta determinada
    • Parámetros: query (obligatorio), limit (opcional)
    • Requiere: variables de entorno GOOGLE_CSE_API_KEY y GOOGLE_CSE_ID
    • Vuelve a BING_SEARCH_API_KEY si falla la búsqueda de Google
  2. Contenido web ( /tools/web/content )
    • Recuperar y extraer contenido de una URL específica
    • Parámetros: url (obligatorio), useCache (opcional)
  3. Lote web ( /tools/web/batch )
    • Recuperar contenido de múltiples URL en paralelo
    • Parámetros: urls (matriz obligatoria), useCache (opcional)

Herramientas de generación de imágenes

El servidor también incluye herramientas de generación, edición y variación de imágenes:

  1. Generar imagen ( /tools/image/generate )
    • Generar una imagen basada en una indicación de texto
    • Parámetros:
      • prompt (obligatorio): Descripción detallada de la imagen
      • provider (opcional): openai o stability (predeterminado a openai )
      • options (opcionales): opciones específicas del proveedor
  2. Editar imagen ( /tools/image/edit )
    • Editar una imagen existente con un mensaje de texto
    • Parámetros:
      • imagePath (obligatorio): Ruta a la imagen a editar
      • prompt (obligatorio): Descripción de la edición a realizar
      • maskPath (opcional): Ruta a una imagen de máscara
  3. Crear variación de imagen ( /tools/image/variation )
    • Crear una variación de una imagen existente
    • Parámetros:
      • imagePath (obligatorio): Ruta a la imagen para crear variaciones de

Nota: Para utilizar estas herramientas, debe configurar claves API en su archivo .env :

  • Para imágenes OpenAI: OPENAI_API_KEY
  • Para imágenes de IA de estabilidad: STABILITY_API_KEY
  • Para búsqueda web: GOOGLE_CSE_API_KEY y GOOGLE_CSE_ID

Integración de herramientas con modelos de IA

El servidor MCP gestiona automáticamente la llamada y ejecución de herramientas con modelos de IA. Cuando un modelo decide usar una herramienta, el servidor:

  1. Ejecuta la herramienta solicitada con los parámetros proporcionados
  2. Devuelve la respuesta de la herramienta al modelo.
  3. El modelo puede entonces incorporar la respuesta de la herramienta en su respuesta final.
Descubrimiento de herramientas para modelos de IA

Los modelos de IA pueden usar el punto de conexión /tools/available para descubrir qué herramientas están disponibles y cómo usarlas. Esto es especialmente útil para:

  • Descubrimiento dinámico de herramientas durante el tiempo de ejecución
  • Autodocumentación para agentes de IA
  • Permitir que los sistemas de IA se adapten a las capacidades disponibles

Ejemplo de mensaje del sistema para modelos de IA:

You have access to external tools through the MCP server. Before using any tools, you should check what tools are available by calling: GET /tools/available This will return a list of all available tools with their parameters and usage instructions. You can then use these tools by following the provided usage patterns.

Ejemplo de uso de la herramienta

Consulte el directorio /examples para ver un código de muestra que demuestra el uso de la herramienta.

Agregar nuevos proveedores o herramientas

Agregar nuevos proveedores de IA

Para agregar nuevos proveedores de IA:

  1. Agregue el SDK del proveedor al proyecto
  2. Crear una nueva función de controlador en server.js
  3. Agregar un nuevo caso en el controlador de ruta principal

Agregar nuevas herramientas

Para agregar nuevas herramientas al servidor:

  1. Cree una nueva implementación de herramienta en el directorio /src/tools
  2. Agregue la definición de la herramienta a tool-definitions.js
  3. Actualizar las funciones de ejecución de la herramienta en server.js
  4. Agregar nuevos puntos finales de API para el uso directo de la herramienta (si es necesario)

Licencia

ISC

Related MCP Servers

  • -
    security
    A
    license
    -
    quality
    This server facilitates the invocation of AI models from providers like Anthropic, OpenAI, and Groq, enabling users to manage and configure large language model interactions seamlessly.
    Last updated -
    9
    Python
    MIT License
  • -
    security
    -
    license
    -
    quality
    An open standard server implementation that enables AI assistants to directly access APIs and services through Model Context Protocol, built using Cloudflare Workers for scalability.
    Last updated -
    TypeScript
  • -
    security
    F
    license
    -
    quality
    A modern AI service proxy that enables interaction with multiple AI providers (Anthropic Claude, OpenAI) through a unified API, deployed globally using Cloudflare Workers.
    Last updated -
    16
    TypeScript
  • A
    security
    F
    license
    A
    quality
    A Model Context Protocol server that enables AI assistants to interact with the Omi API for retrieving and creating conversations and memories for users.
    Last updated -
    4
    TypeScript

View all related MCP servers

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/infinyte/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server