MCP Server

Integrations

  • Manages environment variables for API keys and configuration settings through .env files

  • Provides a web API framework for hosting the MCP server, with endpoints for chat interactions and conversation management

  • Provides repository hosting for the MCP server code with instructions for cloning and contributing

Implementación del servidor MCP

Una implementación completa basada en Flask del Protocolo de Contexto de Modelo (MCP) para mejorar las capacidades del modelo de lenguaje grande con herramientas externas.

Descripción general

Este repositorio demuestra cómo crear un servidor que gestiona el Protocolo de Contexto de Modelo (MCP), un método para ampliar las capacidades de LLM mediante la invocación de herramientas directamente en la salida de texto del modelo. A diferencia de la invocación de funciones, MCP coloca las definiciones de herramientas directamente en la ventana de contexto y analiza las respuestas en lenguaje natural del modelo para identificar su uso.

Características

  • 🔧 Implementación completa de MCP : análisis completo, ejecución y manejo de respuestas
  • 🌤️ Herramientas de muestra : Herramientas meteorológicas y de cálculo con validación de parámetros
  • 🔄 Flujo de conversación : mantiene el contexto en múltiples interacciones
  • Análisis basado en expresiones regulares : análisis de texto flexible para invocaciones de herramientas
  • API de Flask : puntos finales de API REST para la integración de chat

Estructura del proyecto

mcp_server/ ├── app.py # Main Flask application ├── mcp_handler.py # MCP parsing and execution ├── mcp_example.py # Standalone MCP example ├── requirements.txt # Dependencies ├── tools/ # Tool implementations │ ├── __init__.py │ ├── weather.py # Weather API tool │ └── calculator.py # Calculator tool └── README.md # This file

Instalación

  1. Clonar el repositorio:
    git clone https://github.com/yourusername/mcp-server.git cd mcp-server
  2. Crear un entorno virtual:
    python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
  3. Instalar dependencias:
    pip install -r requirements.txt
  4. Configurar variables de entorno:
    # Create a .env file with: LLM_API_KEY=your_llm_api_key_here WEATHER_API_KEY=your_weather_api_key_here FLASK_APP=app.py FLASK_ENV=development

Uso

Ejecución del servidor

Inicie el servidor de desarrollo Flask:

flask run

Para producción:

gunicorn app:app

Puntos finales de API

  • POST/chat : Procesar mensajes de chat con MCP
    curl -X POST http://localhost:5000/chat \ -H "Content-Type: application/json" \ -d '{ "messages": [ { "role": "user", "content": "What's the weather like in Boston?" } ] }'

Ejemplo independiente

Ejecute el script de ejemplo para ver MCP en acción:

python mcp_example.py

Cómo funciona

  1. Registro de herramientas : Las herramientas se registran con sus parámetros y lógica de ejecución.
  2. Inyección de definición de herramienta : se agregan descripciones de herramientas con formato XML al mensaje
  3. Procesamiento de respuesta de LLM : los patrones de expresiones regulares identifican las llamadas a herramientas en la salida de texto de LLM
  4. Ejecución de herramientas : los parámetros se analizan y se pasan a los controladores de herramientas adecuados
  5. Inyección de resultados : los resultados de la ejecución de la herramienta se insertan nuevamente en la respuesta.

MCP vs. Llamada a funciones

CaracterísticaMCPLlamada de función
Definición UbicaciónEn el texto de solicitudEn parámetros de API
Formato de invocaciónLenguaje naturalJSON estructurado
ImplementaciónAnálisis de textoIntegración de API
VisibilidadVisible en respuestaPuede estar oculto
Soporte de plataformaCualquier LLM basado en textoRequiere soporte de API

Ejemplo de conversación

Usuario : ¿Cómo es el clima en Boston?

Maestría en Derecho :

I'll check the weather for you. get_weather(location="Boston, MA", unit="fahrenheit")

Después del procesamiento :

I'll check the weather for you. get_weather(location="Boston, MA", unit="fahrenheit") Result from get_weather: { "location": "Boston, MA", "temperature": 72, "unit": "fahrenheit", "conditions": "Partly Cloudy", "humidity": 68, "wind_speed": 5.8 }

Agregar sus propias herramientas

  1. Crear una nueva clase heredando de Tool
  2. Definir parámetros y lógica de ejecución
  3. Regístrese con el controlador MCP

Ejemplo:

class MyTool(Tool): def __init__(self): parameters = [ { "name": "param1", "type": "string", "description": "Description of param1", "required": True } ] super().__init__( name="my_tool", description="Description of my tool", parameters=parameters ) def execute(self, param1): # Tool logic here return {"result": "Processed " + param1}

Flujo de configuración e invocación de MCP

  1. Registro de herramientas :
    • Las herramientas MCP se registran con el controlador
    • Cada herramienta proporciona su nombre, descripción y definiciones de parámetros.
  2. Definición de herramienta Inyección :
    • Las definiciones de herramientas se agregan al mensaje del sistema.
    • El formato sigue la estructura XML para MCP
  3. Procesamiento de respuestas de LLM :
    • LLM genera respuestas que pueden incluir invocaciones de herramientas
    • La coincidencia de patrones identifica las llamadas a herramientas en el texto
    • Los parámetros de la herramienta se analizan y se pasan a los métodos de ejecución de la herramienta.
  4. Ejecución de la herramienta :
    • Las herramientas se ejecutan con los parámetros proporcionados.
    • Los resultados se reintroducen en la conversación.
  5. Gestión de conversaciones :
    • Las respuestas procesadas con resultados de la herramienta se agregan al historial de conversaciones
    • Las futuras solicitudes de LLM incluyen este historial para el contexto

Ejemplo de conversación

He aquí un ejemplo de cómo podría ser una conversación:

Usuario : ¿Cómo es el clima en Boston?

Sistema : envía un mensaje con las definiciones de herramientas MCP a LLM

Respuesta de LLM :

I'll check the weather for you. get_weather(location="Boston, MA", unit="fahrenheit")

Manejador MCP : analiza la respuesta, encuentra la llamada a la herramienta y ejecuta la herramienta meteorológica

Resultado de la ejecución de la herramienta :

Result from get_weather: { "location": "Boston, MA", "temperature": 72, "unit": "fahrenheit", "conditions": "Partly Cloudy", "humidity": 68, "wind_speed": 5.8 }

Respuesta procesada (enviada de vuelta al usuario):

I'll check the weather for you. get_weather(location="Boston, MA", unit="fahrenheit") Result from get_weather: { "location": "Boston, MA", "temperature": 72, "unit": "fahrenheit", "conditions": "Partly Cloudy", "humidity": 68, "wind_speed": 5.8 }

Usuario : ¿Puedes calcular la raíz cuadrada de 144?

Respuesta de LLM :

I can calculate that for you. calculator(expression="sqrt(144)")

Manejador MCP : analiza la respuesta y ejecuta la herramienta de cálculo.

Resultado de la ejecución de la herramienta :

Result from calculator: { "expression": "sqrt(144)", "result": 12.0 }

Respuesta procesada (enviada de vuelta al usuario):

I can calculate that for you. calculator(expression="sqrt(144)") Result from calculator: { "expression": "sqrt(144)", "result": 12.0 } The square root of 144 is 12.

Esto demuestra el flujo completo del uso de la herramienta MCP, desde la invocación basada en texto del LLM hasta la ejecución y el procesamiento de la respuesta.

Licencia

Instituto Tecnológico de Massachusetts (MIT)

Contribuyendo

¡Agradecemos sus contribuciones! No dude en enviar una solicitud de incorporación de cambios.

-
security - not tested
F
license - not found
-
quality - not tested

Un servidor basado en Flask que implementa el Protocolo de Contexto de Modelo para mejorar los LLM con capacidades de herramientas externas a través del lenguaje natural, permitiendo que herramientas como la búsqueda y los cálculos del clima se invoquen directamente en la salida de texto del modelo.

  1. Overview
    1. Features
      1. Project Structure
        1. Installation
          1. Usage
            1. Running the Server
            2. API Endpoints
            3. Standalone Example
          2. How It Works
            1. MCP vs. Function Calling
              1. Example Conversation
                1. Adding Your Own Tools
                  1. MCP Configuration and Invocation Flow
                    1. Example Conversation
                      1. License
                        1. Contributing
                          ID: np0gzeg9av