Skip to main content
Glama

Servidor MCP

Lengua china

Descripción general del proyecto

Basado en FastAPI y MCP (Protocolo de Contexto de Modelo), este proyecto permite la interacción contextual estandarizada entre modelos de IA y entornos de desarrollo. Mejora la escalabilidad y el mantenimiento de las aplicaciones de IA al simplificar la implementación de modelos, proporcionar endpoints API eficientes y garantizar la consistencia en la entrada y salida de los modelos, facilitando a los desarrolladores la integración y gestión de tareas de IA.

MCP (Protocolo de Contexto de Modelo) es un protocolo unificado para la interacción contextual entre modelos de IA y entornos de desarrollo. Este proyecto proporciona una implementación de servidor MCP basada en Python que admite funciones básicas del protocolo MCP, como la inicialización, el muestreo y la gestión de sesiones.

Related MCP server: OpenAI MCP Server

Características

  • JSON-RPC 2.0 : Comunicación de solicitud-respuesta basada en el protocolo estándar JSON-RPC 2.0

  • Conexión SSE : Compatibilidad con conexiones de eventos enviados por el servidor para notificaciones en tiempo real

  • Diseño modular : arquitectura modular para una fácil ampliación y personalización

  • Procesamiento asincrónico : servicio de alto rendimiento que utiliza FastAPI y E/S asincrónica

  • Cliente completo : incluye una implementación de cliente de prueba completa

Estructura del proyecto

mcp_server/ ├── mcp_server.py # MCP server main program ├── mcp_client.py # MCP client test program ├── routers/ │ ├── __init__.py # Router package initialization │ └── base_router.py # Base router implementation ├── requirements.txt # Project dependencies └── README.md # Project documentation

Instalación

  1. Clonar el repositorio:

git clone https://github.com/freedanfan/mcp_server.git cd mcp_server
  1. Instalar dependencias:

pip install -r requirements.txt

Uso

Iniciando el servidor

python mcp_server.py

De forma predeterminada, el servidor se iniciará en 127.0.0.1:12000 . Puede personalizar el host y el puerto mediante variables de entorno:

export MCP_SERVER_HOST=0.0.0.0 export MCP_SERVER_PORT=8000 python mcp_server.py

Ejecución del cliente

Ejecute el cliente en otra terminal:

python mcp_client.py

Si el servidor no se ejecuta en la dirección predeterminada, puede configurar una variable de entorno:

export MCP_SERVER_URL="http://your-server-address:port" python mcp_client.py

Puntos finales de API

El servidor proporciona los siguientes puntos finales de API:

  • Ruta raíz ( / ): proporciona información del servidor

  • Punto final de API ( /api ): maneja solicitudes JSON-RPC

  • Punto final SSE ( /sse ): maneja conexiones SSE

Implementación del protocolo MCP

Flujo de inicialización

  1. El cliente se conecta al servidor a través de SSE

  2. El servidor devuelve la URI del punto final de la API

  3. El cliente envía una solicitud de inicialización con la versión del protocolo y las capacidades

  4. El servidor responde a la solicitud de inicialización, devolviendo las capacidades del servidor.

Solicitud de muestreo

Los clientes pueden enviar solicitudes de muestreo con indicaciones:

{ "jsonrpc": "2.0", "id": "request-id", "method": "sample", "params": { "prompt": "Hello, please introduce yourself." } }

El servidor devolverá los resultados del muestreo:

{ "jsonrpc": "2.0", "id": "request-id", "result": { "content": "This is a response to the prompt...", "usage": { "prompt_tokens": 10, "completion_tokens": 50, "total_tokens": 60 } } }

Cerrar una sesión

Los clientes pueden enviar una solicitud de apagado:

{ "jsonrpc": "2.0", "id": "request-id", "method": "shutdown", "params": {} }

El servidor se apagará correctamente:

{ "jsonrpc": "2.0", "id": "request-id", "result": { "status": "shutting_down" } }

Extensiones de desarrollo

Agregar nuevos métodos

Para agregar nuevos métodos MCP, agregue una función de controlador a la clase MCPServer y regístrela en el método _register_methods :

def handle_new_method(self, params: dict) -> dict: """Handle new method""" logger.info(f"Received new method request: {params}") # Processing logic return {"result": "success"} def _register_methods(self): # Register existing methods self.router.register_method("initialize", self.handle_initialize) self.router.register_method("sample", self.handle_sample) self.router.register_method("shutdown", self.handle_shutdown) # Register new method self.router.register_method("new_method", self.handle_new_method)

Integración de modelos de IA

Para integrar modelos de IA reales, modifique el método handle_sample :

async def handle_sample(self, params: dict) -> dict: """Handle sampling request""" logger.info(f"Received sampling request: {params}") # Get prompt prompt = params.get("prompt", "") # Call AI model API # For example: using OpenAI API response = await openai.ChatCompletion.acreate( model="gpt-4", messages=[{"role": "user", "content": prompt}] ) content = response.choices[0].message.content usage = response.usage return { "content": content, "usage": { "prompt_tokens": usage.prompt_tokens, "completion_tokens": usage.completion_tokens, "total_tokens": usage.total_tokens } }

Solución de problemas

Problemas comunes

  1. Errores de conexión : asegúrese de que el servidor esté en ejecución y que el cliente esté usando la URL del servidor correcta

  2. 405 Método no permitido : asegúrese de que el cliente esté enviando solicitudes al punto final de API correcto

  3. Error de conexión SSE : Verifique las conexiones de red y la configuración del firewall

Explotación florestal

Tanto el servidor como el cliente proporcionan registros detallados. Consulte los registros para obtener más información:

# Increase log level export PYTHONPATH=. python -m logging -v DEBUG -m mcp_server

Referencias

Licencia

Este proyecto está licenciado bajo la Licencia MIT. Consulte el archivo de LICENCIA para más detalles.

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

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/freedanfan/mcp_server'

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