LLMling

Um servidor MCP com um backend LLMling que utiliza arquivos YAML para configurar aplicações de LLM.

Documentação

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

Leia a documentação!

Manual do Servidor LLMling

Visão Geral

mcp-server-llmling é um servidor para o Protocolo de Chat de Máquina (MCP) que fornece um sistema de configuração baseado em YAML para aplicações LLM.

LLMLing, o backend, fornece um sistema de configuração baseado em YAML para aplicações LLM. Ele permite configurar servidores MCP personalizados que servem conteúdo definido em arquivos YAML.

  • Declaração Estática: Defina o ambiente do seu LLM em YAML - sem necessidade de código
  • Protocolo MCP: Construído sobre o Protocolo de Chat de Máquina (MCP) para interação padronizada com LLM
  • Tipos de Componentes:
    • Recursos: Provedores de conteúdo (arquivos, texto, saída de CLI, etc.)
    • Prompts: Modelos de mensagem com argumentos
    • Ferramentas: Funções Python chamáveis pelo LLM

A configuração YAML cria um ambiente completo que fornece ao LLM:

  • Acesso a conteúdo via recursos
  • Prompts estruturados para interação consistente
  • Ferramentas para estender capacidades

Principais Recursos

1. Gerenciamento de Recursos

  • Carregar e gerenciar diferentes tipos de recursos:
    • Arquivos de texto (PathResource)
    • Conteúdo de texto bruto (TextResource)
    • Saída de comando CLI (CLIResource)
    • Código-fonte Python (SourceResource)
    • Resultados de chamáveis Python (CallableResource)
    • Imagens (ImageResource)
  • Suporte para monitoramento de recursos / hot-reload
  • Pipelines de processamento de recursos
  • Acesso a recursos baseado em URI

2. Sistema de Ferramentas

  • Registrar e executar funções Python como ferramentas LLM
  • Suporte para ferramentas baseadas em OpenAPI
  • Descoberta de ferramentas baseada em pontos de entrada
  • Validação de ferramentas e verificação de parâmetros
  • Respostas estruturadas de ferramentas

3. Gerenciamento de Prompts

  • Prompts estáticos com suporte a modelos
  • Prompts dinâmicos a partir de funções Python
  • Prompts baseados em arquivos
  • Validação de argumentos de prompt
  • Sugestões de conclusão para argumentos de prompt

4. Múltiplas Opções de Transporte

  • Comunicação baseada em Stdio (padrão)
  • Server-Sent Events (SSE) / HTTP transmissível para clientes web
  • Suporte para implementações de transporte personalizadas

Uso

Com o Editor Zed

Adicione LLMLing como um servidor de contexto no seu settings.json:

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

Com o Claude Desktop

Configure LLMLing no seu claude_desktop_config.json:

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

Início Manual do Servidor

Inicie o servidor diretamente da linha de comando:

# 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. Usando 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. Configuração de Recursos

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

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

4. Configuração de Ferramentas

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, você pode instalar o Redocly CLI para agrupar e resolver especificações OpenAPI antes de usá-las com LLMLing. Isso ajuda a garantir que as referências do seu esquema sejam resolvidas corretamente e que a especificação esteja formatada corretamente. Se o redocly estiver instalado, ele será usado automaticamente.

Configuração do Servidor

O servidor é configurado através de um arquivo YAML com as seguintes seções:

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

O servidor implementa o protocolo MCP que suporta:

  1. Operações de Recursos

    • Listar recursos disponíveis
    • Ler conteúdo de recursos
    • Observar mudanças em recursos
  2. Operações de Ferramentas

    • Listar ferramentas disponíveis
    • Executar ferramentas com parâmetros
    • Obter esquemas de ferramentas
  3. Operações de Prompt

    • Listar prompts disponíveis
    • Obter prompts formatados
    • Obter conclusões para argumentos de prompt
  4. Notificações

    • Mudanças em recursos
    • Atualizações de lista de ferramentas/prompts
    • Atualizações de progresso
    • Mensagens de log