LLMling

Un servidor MCP con un backend LLMling que utiliza archivos YAML para configurar aplicaciones de LLM.

Documentación

mcp-server-llmling

PyPI License Package status Monthly downloads Distribution format Wheel availability Python version Implementation Releases Github Contributors Github Discussions Github Forks Github Issues Github Issues Github Watchers Github Stars Github Repository size Github last commit Github release date Github language count Github commits this month Package status PyUp

¡Lee la documentación!

Manual del Servidor LLMling

Resumen

mcp-server-llmling es un servidor para el Protocolo de Chat de Máquinas (MCP) que proporciona un sistema de configuración basado en YAML para aplicaciones LLM.

LLMLing, el backend, proporciona un sistema de configuración basado en YAML para aplicaciones LLM. Permite configurar servidores MCP personalizados que sirven contenido definido en archivos YAML.

  • Declaración Estática: Define el entorno de tu LLM en YAML - sin necesidad de código
  • Protocolo MCP: Construido sobre el Protocolo de Chat de Máquinas (MCP) para la interacción estandarizada con LLM
  • Tipos de Componentes:
    • Recursos: Proveedores de contenido (archivos, texto, salida de CLI, etc.)
    • Prompts: Plantillas de mensajes con argumentos
    • Herramientas: Funciones de Python invocables por el LLM

La configuración YAML crea un entorno completo que proporciona al LLM:

  • Acceso a contenido mediante recursos
  • Prompts estructurados para una interacción consistente
  • Herramientas para ampliar capacidades

Características Clave

1. Gestión de Recursos

  • Cargar y gestionar diferentes tipos de recursos:
    • Archivos de texto (PathResource)
    • Contenido de texto sin formato (TextResource)
    • Salida de comandos CLI (CLIResource)
    • Código fuente de Python (SourceResource)
    • Resultados de funciones invocables de Python (CallableResource)
    • Imágenes (ImageResource)
  • Soporte para vigilancia de recursos/recarga en caliente
  • Pipelines de procesamiento de recursos
  • Acceso a recursos basado en URI

2. Sistema de Herramientas

  • Registrar y ejecutar funciones de Python como herramientas LLM
  • Soporte para herramientas basadas en OpenAPI
  • Descubrimiento de herramientas basado en puntos de entrada
  • Validación de herramientas y verificación de parámetros
  • Respuestas estructuradas de herramientas

3. Gestión de Prompts

  • Prompts estáticos con soporte de plantillas
  • Prompts dinámicos desde funciones de Python
  • Prompts basados en archivos
  • Validación de argumentos de prompts
  • Sugerencias de autocompletado para argumentos de prompts

4. Múltiples Opciones de Transporte

  • Comunicación basada en Stdio (predeterminada)
  • Eventos enviados por el servidor (SSE) / HTTP transmisible para clientes web
  • Soporte para implementaciones de transporte personalizadas

Uso

Con el Editor Zed

Añade LLMLing como servidor de contexto en tu settings.json:

{
  "context_servers": {
    "llmling": {
      "command": {
        "env": {},
        "label": "llmling",
        "path": "uvx",
        "args": [
          "mcp-server-llmling",
          "start",
          "path/to/your/config.yml"
        ]
      },
      "settings": {}
    }
  }
}

Con Claude Desktop

Configura LLMLing en tu claude_desktop_config.json:

{
  "mcpServers": {
    "llmling": {
      "command": "uvx",
      "args": [
        "mcp-server-llmling",
        "start",
        "path/to/your/config.yml"
      ],
      "env": {}
    }
  }
}

Inicio Manual del Servidor

Inicia el servidor directamente desde la línea de comandos:

# Latest version
uvx mcp-server-llmling@latest

1. Uso programático

from llmling import RuntimeConfig
from mcp_server_llmling import LLMLingServer

async def main() -> None:
    async with RuntimeConfig.open(config) as runtime:
        server = LLMLingServer(runtime, enable_injection=True)
        await server.start()

asyncio.run(main())

2. Uso de Transporte Personalizado

from llmling import RuntimeConfig
from mcp_server_llmling import LLMLingServer

async def main() -> None:
    async with RuntimeConfig.open(config) as runtime:
        server = LLMLingServer(
            config,
            transport="sse",
            transport_options={
                "host": "localhost",
                "port": 3001,
                "cors_origins": ["http://localhost:3000"]
            }
        )
        await server.start()

asyncio.run(main())

3. Configuración de Recursos

resources:
  python_code:
    type: path
    path: "./src/**/*.py"
    watch:
      enabled: true
      patterns:
        - "*.py"
        - "!**/__pycache__/**"

  api_docs:
    type: text
    content: |
      API Documentation
      ================
      ...

4. Configuración de Herramientas

tools:
  analyze_code:
    import_path: "mymodule.tools.analyze_code"
    description: "Analyze Python code structure"

toolsets:
  api:
    type: openapi
    spec: "https://api.example.com/openapi.json"

[!TIP] Para esquemas OpenAPI, puedes instalar Redocly CLI para agrupar y resolver especificaciones OpenAPI antes de usarlas con LLMLing. Esto ayuda a garantizar que las referencias de tu esquema se resuelvan correctamente y que la especificación tenga el formato adecuado. Si redocly está instalado, se utilizará automáticamente.

Configuración del Servidor

El servidor se configura mediante un archivo YAML con las siguientes secciones:

global_settings:
  timeout: 30
  max_retries: 3
  log_level: "INFO"
  requirements: []
  pip_index_url: null
  extra_paths: []

resources:
  # Resource definitions...

tools:
  # Tool definitions...

toolsets:
  # Toolset definitions...

prompts:
  # Prompt definitions...

Protocolo MCP

El servidor implementa el protocolo MCP que soporta:

  1. Operaciones de Recursos

    • Listar recursos disponibles
    • Leer contenido de recursos
    • Vigilar cambios en recursos
  2. Operaciones de Herramientas

    • Listar herramientas disponibles
    • Ejecutar herramientas con parámetros
    • Obtener esquemas de herramientas
  3. Operaciones de Prompts

    • Listar prompts disponibles
    • Obtener prompts formateados
    • Obtener autocompletados para argumentos de prompts
  4. Notificaciones

    • Cambios en recursos
    • Actualizaciones de listas de herramientas/prompts
    • Actualizaciones de progreso
    • Mensajes de registro