Skip to main content
Glama

MCP Server

by yisu201506

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

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

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. Descripción general
    1. Características
      1. Estructura del proyecto
        1. Instalación
          1. Uso
            1. Ejecución del servidor
            2. Puntos finales de API
            3. Ejemplo independiente
          2. Cómo funciona
            1. MCP vs. Llamada a funciones
              1. Ejemplo de conversación
                1. Agregar sus propias herramientas
                  1. Flujo de configuración e invocación de MCP
                    1. Ejemplo de conversación
                      1. Licencia
                        1. Contribuyendo

                          Related MCP Servers

                          • -
                            security
                            A
                            license
                            -
                            quality
                            A Model Context Protocol server that enables LLMs to interact directly with MongoDB databases, allowing users to query collections, inspect schemas, and manage data through natural language.
                            Last updated -
                            340
                            TypeScript
                            MIT License
                            • Apple
                          • -
                            security
                            A
                            license
                            -
                            quality
                            A Model Context Protocol Server that enables LLMs to interact with and execute REST API calls through natural language prompts, supporting GET/PUT/POST/PATCH operations on configured APIs.
                            Last updated -
                            5
                            Python
                            Apache 2.0
                          • -
                            security
                            A
                            license
                            -
                            quality
                            A Model Context Protocol server that enables LLMs to interact with databases (currently MongoDB) through natural language, supporting operations like querying, inserting, deleting documents, and running aggregation pipelines.
                            Last updated -
                            TypeScript
                            MIT License
                            • Apple
                          • A
                            security
                            F
                            license
                            A
                            quality
                            A Python server implementing the Model Context Protocol to provide customizable prompt templates, resources, and tools that enhance LLM interactions in the continue.dev environment.
                            Last updated -
                            2
                            1
                            Python

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

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