MCP Everything

Um servidor de demonstração para o Model Context Protocol (MCP) que exibe vários recursos como ferramentas, recursos e prompts em TypeScript e Python.

Documentação

MCP Everything

Nota: Este projeto foi extraído de https://github.com/modelcontextprotocol/servers/tree/main/src/everything para criar uma implementação independente.

Este projeto de servidor MCP demonstra vários recursos do Model Context Protocol (MCP). Inclui implementações de servidor em TypeScript e Python, servindo como servidores de teste para construtores de clientes MCP. Ambas as implementações visam paridade funcional, exibindo capacidades como prompts, ferramentas, recursos, amostragem, registro de logs e mais.

Recursos Comuns

Ferramentas

  1. echo

    • Ferramenta simples para ecoar mensagens de entrada
    • Entrada:
      • message (string): Mensagem para ecoar
    • Retorna: Conteúdo de texto com a mensagem ecoada
  2. add

    • Soma dois números
    • Entradas:
      • a (número): Primeiro número
      • b (número): Segundo número
    • Retorna: Resultado de texto da adição
  3. longRunningOperation

    • Demonstra notificações de progresso para operações longas
    • Entradas:
      • duration (número, padrão: 10): Duração em segundos
      • steps (número, padrão: 5): Número de etapas de progresso
    • Retorna: Mensagem de conclusão com duração e etapas
    • Envia notificações de progresso durante a execução
  4. sampleLLM

    • Demonstra a capacidade de amostragem de LLM usando o recurso de amostragem do MCP
    • Entradas:
      • prompt (string): O prompt a ser enviado ao LLM
      • maxTokens (número, padrão: 100): Máximo de tokens a gerar
    • Retorna: Resposta gerada pelo LLM
  5. getTinyImage

    • Retorna uma pequena imagem de teste
    • Nenhuma entrada necessária
    • Retorna: Dados de imagem PNG codificados em Base64
  6. printEnv

    • Imprime todas as variáveis de ambiente
    • Útil para depurar a configuração do servidor MCP
    • Nenhuma entrada necessária
    • Retorna: String JSON de todas as variáveis de ambiente
  7. annotatedMessage

    • Demonstra como anotações podem ser usadas para fornecer metadados sobre o conteúdo
    • Entradas:
      • messageType (enum: "error" | "success" | "debug"): Tipo de mensagem para demonstrar diferentes padrões de anotação
      • includeImage (booleano, padrão: false): Se deve incluir uma imagem de exemplo
    • Retorna: Conteúdo com anotações variadas

Recursos

O servidor fornece 100 recursos de teste em dois formatos:

  • Recursos de número par:

    • Formato de texto simples
    • Padrão de URI: test://static/resource/{even_number}
    • Conteúdo: Descrição de texto simples
  • Recursos de número ímpar:

    • Formato de blob binário
    • Padrão de URI: test://static/resource/{odd_number}
    • Conteúdo: Dados binários codificados em Base64

Funcionalidades dos recursos:

  • Suporta paginação (10 itens por página)
  • Permite assinar atualizações de recursos
  • Demonstra modelos de recursos
  • Atualiza automaticamente os recursos assinados a cada 5 segundos

Prompts

  1. simple_prompt

    • Prompt básico sem argumentos
    • Retorna: Troca de mensagem única
  2. complex_prompt

    • Prompt avançado demonstrando o tratamento de argumentos
    • Argumentos obrigatórios:
      • temperature (número): Configuração de temperatura
    • Argumentos opcionais:
      • style (string): Preferência de estilo de saída
    • Retorna: Conversa de múltiplas etapas com imagens

Registro de Logs

O servidor envia mensagens de log de níveis aleatórios a cada 15 segundos para demonstrar as capacidades de registro de logs do MCP.

Implementação em TypeScript

Localização: typescript/

Instalação

Desenvolvimento Local

# Clone the repository (if not already done)
# git clone https://github.com/modelcontextprotocol/mcp-everything.git
# cd mcp-everything

# Navigate to the TypeScript directory from the repository root
cd typescript

# Install dependencies
npm install

# Build the project
npm run build

# Start the server
npm start

Instalação Global

# Navigate to the TypeScript directory:
# cd path/to/mcp-everything/typescript
# Then install globally from the local package:
npm install -g .

# Run the server 
# (The command name will depend on the 'bin' field in typescript/package.json, 
#  e.g., 'mcp-everything-ts' or 'mcp-everything' if modified)
# Example:
# mcp-everything-ts

Nota: A funcionalidade de instalação global e o comando exato dependem da configuração bin dentro de typescript/package.json.

Docker

# Build the Docker image from the repository root
# (Assumes Dockerfile is updated to handle APP_DIR build argument or typescript context)
docker build -t mcp-everything-ts -f Dockerfile . --build-arg APP_DIR=typescript

# Run the container
docker run -it mcp-everything-ts

Uso com Clientes MCP (ex.: Claude Desktop)

Adicione à configuração do servidor MCP do seu cliente. Os caminhos podem precisar de ajustes.

Se estiver usando npx com um pacote publicado (ex.: mcp-everything-ts):

{
  "mcpServers": {
    "everything-ts-npx": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-everything-ts" 
        // Replace 'mcp-everything-ts' with the actual package name if different
      ]
    }
  }
}

Se estiver executando a partir de uma compilação local (garanta que cwd seja o diretório typescript):

{
  "mcpServers": {
    "everything-ts-local": {
      "command": "npm",
      "args": [
        "start"
      ],
      // Ensure 'cwd' points to the 'typescript' directory of this project.
      "cwd": "path/to/mcp-everything/typescript" 
    }
  }
}

Substitua "path/to/mcp-everything/typescript" pelo caminho correto.


Implementação em Python

Localização: python/

Instalação e Configuração

  1. A partir da raiz do repositório, navegue até o diretório Python:
    cd python
    
  2. (Recomendado) Crie e ative um ambiente virtual:
    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  3. Instale as dependências:
    pip install -r requirements.txt
    

Executando o Servidor

Dentro do diretório python (e com o ambiente virtual ativado, se usado):

python mcp_server.py

O servidor escuta mensagens MCP via stdio.

Uso com Clientes MCP (ex.: Claude Desktop)

Exemplo de configuração:

{
  "mcpServers": {
    "everything-py": {
      "command": "python", // Or "path/to/python/venv/bin/python"
      "args": ["mcp_server.py"],
      "cwd": "path/to/mcp-everything/python" // Ensure this is the correct path
    }
  }
}

Substitua "path/to/mcp-everything/python" pelo caminho correto.

Testando o Servidor via GitHub Actions

Nota: A implementação está em andamento. O servidor ainda não está totalmente funcional.

  • Teste 1
  • Teste 2