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
-
echo- Ferramenta simples para ecoar mensagens de entrada
- Entrada:
message(string): Mensagem para ecoar
- Retorna: Conteúdo de texto com a mensagem ecoada
-
add- Soma dois números
- Entradas:
a(número): Primeiro númerob(número): Segundo número
- Retorna: Resultado de texto da adição
-
longRunningOperation- Demonstra notificações de progresso para operações longas
- Entradas:
duration(número, padrão: 10): Duração em segundossteps(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
-
sampleLLM- Demonstra a capacidade de amostragem de LLM usando o recurso de amostragem do MCP
- Entradas:
prompt(string): O prompt a ser enviado ao LLMmaxTokens(número, padrão: 100): Máximo de tokens a gerar
- Retorna: Resposta gerada pelo LLM
-
getTinyImage- Retorna uma pequena imagem de teste
- Nenhuma entrada necessária
- Retorna: Dados de imagem PNG codificados em Base64
-
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
-
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çãoincludeImage(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
-
simple_prompt- Prompt básico sem argumentos
- Retorna: Troca de mensagem única
-
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
- A partir da raiz do repositório, navegue até o diretório Python:
cd python - (Recomendado) Crie e ative um ambiente virtual:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate - 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