chiarorosa/mcp-server-one
If you are the rightful owner of mcp-server-one and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
MCP Server One is a Model Context Protocol server that integrates multiple public APIs into a single standardized interface, providing tools and resources for interacting with diverse data sources.
MCP Server One
Um servidor Model Context Protocol (MCP) que fornece acesso a várias APIs públicas através de uma interface padronizada. Este servidor demonstra como integrar múltiplas APIs externas em um único servidor MCP, oferecendo recursos, ferramentas e prompts para interação com dados de diferentes fontes.
🚀 Características
APIs Integradas
-
JSONPlaceholder - API fake para desenvolvimento e testes
- Posts, usuários, comentários e todos
- Operações CRUD simuladas
-
Cat Facts API - Fatos interessantes sobre gatos
- Fatos aleatórios e coleções de fatos
-
Official Joke API - Piadas organizadas por categoria
- Piadas aleatórias e por tipo
-
QR code API - Crie QR codes com base em um texto
- Gere uma imagem png QR code de um texto
Funcionalidades MCP
- Resources: Acesso a metadados e informações das APIs
- Tools: Execução de operações específicas das APIs
- Prompts: Templates para análise e inspiração
- Logging: Sistema de logs detalhado
- Context Management: Gerenciamento de contexto com ciclo de vida
📋 Requisitos
- Python 3.11+
- UV (gerenciador de pacotes Python)
- Conexão à internet para APIs externas
🛠️ Instalação
Instalação Rápida
# Clone o repositório
git clone https://github.com/chiarorosa/mcp-server-one.git
cd mcp-server-one
# Instale as dependências
uv sync
# Execute o servidor
uv run mcp-server-one
Instalação Detalhada
1. Clonar o repositório
git clone https://github.com/chiarorosa/mcp-server-one.git
cd mcp-server-one
2. Instalar dependências com UV
# Instalar dependências principais
uv sync
# Instalar dependências de desenvolvimento
uv sync --dev
3. Instalar o pacote em modo de desenvolvimento
uv pip install -e .
Instalação com Makefile (Alternativa)
O projeto inclui um Makefile que facilita a execução dos comandos mais comuns:
# Ver todos os comandos disponíveis
make help
# Instalar dependências
make install
# Executar o servidor
make run
# Executar testes
make test
# Testar conectividade com APIs
make test-apis
# Formatar código
make format
# Executar linting
make lint
# Limpar arquivos temporários
make clean
Comandos principais:
make install
- Equivale auv sync
make run
- Executa o servidor usandorun_server.py
make test
- Executa todos os testesmake format
- Formata o código com black e isortmake lint
- Executa verificações de tipo e linting
Fluxo de trabalho completo com Makefile:
# 1. Instalar dependências
make install
# 2. Executar testes para verificar se tudo está funcionando
make test
# 3. Testar conectividade com APIs externas
make test-apis
# 4. Executar o servidor
make run
🎯 Uso
Executar o servidor
Modo Standard I/O (padrão)
uv run mcp-server-one
# ou
uv run python -m mcp_server_one.main
Modo Server-Sent Events (SSE)
uv run mcp-server-one --transport sse --port 8000
Modo Streamable HTTP
uv run mcp-server-one --transport streamable-http --port 8000
Modo de desenvolvimento
uv run mcp dev src/mcp_server_one/server.py
Testar com MCP Inspector
uv run mcp dev src/mcp_server_one/server.py
Instalar no Claude Desktop
Método 1: Configuração Automática (Mais Fácil)
Use o script de configuração incluído no projeto:
uv run python configure_claude.py
Este script irá:
- Detectar automaticamente o sistema operacional
- Localizar o arquivo de configuração do Claude Desktop
- Adicionar/atualizar a configuração do MCP Server One
- Fornecer instruções para os próximos passos
Método 2: Instalação via CLI do MCP
Pré-requisitos:
- Certifique-se de que o pacote MCP está instalado com o extra CLI:
uv add 'mcp[cli]'
uv sync
Instalação:
uv run mcp install src/mcp_server_one/server.py --name "MCP Server One"
Método 3: Instalação Manual
Se o comando automático não funcionar (erro "Claude app not found"), configure manualmente:
-
Localize o arquivo de configuração do Claude Desktop:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Linux:
~/.config/Claude/claude_desktop_config.json
- Windows:
-
Adicione a configuração do servidor:
{
"mcpServers": {
"mcp-server-one": {
"command": "uv",
"args": [
"run",
"--directory",
"CAMINHO_COMPLETO_DO_PROJETO",
"mcp-server-one"
],
"env": {}
}
}
}
- Substitua
CAMINHO_COMPLETO_DO_PROJETO
pelo caminho absoluto do seu projeto.
Método 4: Usando Python direto
Alternativa usando Python diretamente:
{
"mcpServers": {
"mcp-server-one": {
"command": "python",
"args": ["-m", "mcp_server_one.main"],
"cwd": "CAMINHO_COMPLETO_DO_PROJETO",
"env": {}
}
}
}
Exemplos de Configuração por Sistema Operacional
Windows
{
"mcpServers": {
"mcp-server-one": {
"command": "uv",
"args": [
"run",
"--directory",
"d:\\Code\\mcp-server-one",
"mcp-server-one"
],
"env": {}
}
}
}
macOS/Linux
{
"mcpServers": {
"mcp-server-one": {
"command": "uv",
"args": [
"run",
"--directory",
"/caminho/para/mcp-server-one",
"mcp-server-one"
],
"env": {}
}
}
}
WSL (Windows Subsystem for Linux)
{
"mcpServers": {
"mcp-server-one": {
"command": "wsl",
"args": [
"uv",
"run",
"--directory",
"/mnt/d/Code/mcp-server-one",
"mcp-server-one"
],
"env": {}
}
}
}
Dica: Após editar o arquivo de configuração, reinicie o Claude Desktop para aplicar as mudanças.
📚 Recursos Disponíveis
Resources (Recursos)
posts://all
- Informações sobre todos os postsposts://{post_id}
- Informações sobre um post específicousers://all
- Informações sobre todos os usuáriosapi://status
- Status e documentação das APIs disponíveis
Tools (Ferramentas)
JSONPlaceholder
get_posts(limit?)
- Busca posts (com limite opcional)get_post_by_id(post_id)
- Busca post específicoget_users()
- Busca todos os usuáriosget_user_by_id(user_id)
- Busca usuário específicoget_todos(user_id?)
- Busca todos (opcionalmente de um usuário)create_post(title, body, user_id)
- Cria post (simulado)
Cat Facts
get_cat_fact()
- Fato aleatório sobre gatosget_multiple_cat_facts(limit=5)
- Múltiplos fatos sobre gatos
Jokes
get_random_joke()
- Piada aleatóriaget_jokes_by_type(type)
- Piadas por tipo (programming, general, etc.)
Prompts (Templates)
analyze_post(post_id)
- Análise detalhada de um postuser_profile_analysis(user_id)
- Análise de perfil de usuáriodaily_inspiration()
- Mensagem de inspiração diária
🔧 Configuração
Variáveis de ambiente
O servidor não requer configuração específica, mas você pode personalizar:
export MCP_SERVER_PORT=8000
export MCP_LOG_LEVEL=INFO
🧪 Testes
Executar testes
Usando UV diretamente:
# Todos os testes
uv run pytest
# Testes com cobertura
uv run pytest --cov=mcp_server_one
# Testes específicos
uv run pytest tests/test_api_client.py
# Testes em modo verbose
uv run pytest -v
Usando Makefile (mais fácil):
# Todos os testes
make test
# Testar conectividade com APIs externas
make test-apis
Testes de integração
# Testar APIs reais (requer internet)
uv run pytest tests/test_integration.py
# ou
make test-apis
📊 Desenvolvimento
Estrutura do projeto
mcp-server-one/
├── .git/ # Controle de versão Git
├── .gitignore # Arquivos ignorados pelo Git
├── .venv/ # Ambiente virtual Python
├── claude_desktop_config.md # Documentação de configuração do Claude
├── configure_claude.py # Script de configuração automática do Claude
├── CONTRIBUTING.md # Guia de contribuição
├── DEVELOPMENT.md # Guia de desenvolvimento
├── LICENSE # Licença MIT
├── Makefile # Comandos de automação
├── pyproject.toml # Configuração do projeto e dependências
├── README.md # Documentação principal
├── run_server.py # Script para execução do servidor
├── standalone_server.py # Servidor standalone
├── test_apis.py # Testes das APIs
├── test_import.py # Testes de importação
├── uv.lock # Lock file das dependências
├── src/
│ └── mcp_server_one/
│ ├── __init__.py # Inicialização do pacote
│ ├── api_client.py # Cliente das APIs externas
│ ├── main.py # Ponto de entrada principal
│ └── server.py # Servidor MCP principal
├── tests/
│ ├── __init__.py # Inicialização dos testes
│ └── test_api_client.py # Testes unitários do cliente API
└── examples/
├── simple_demo.py # Demonstração simples
└── test_client.py # Cliente de teste
Arquivos Principais
src/mcp_server_one/main.py
: Ponto de entrada da aplicaçãosrc/mcp_server_one/server.py
: Implementação do servidor MCPsrc/mcp_server_one/api_client.py
: Gerenciador das APIs externasconfigure_claude.py
: Script para configuração automática do Claude Desktoppyproject.toml
: Configuração do projeto, dependências e scripts
Linting e formatação
Usando UV diretamente:
# Formatação com black
uv run black src/ tests/
# Ordenação de imports
uv run isort src/ tests/
# Verificação de tipos
uv run mypy src/
# Linting
uv run flake8 src/ tests/
Usando Makefile (mais fácil):
# Formatar código (black + isort)
make format
# Executar linting (mypy + flake8)
make lint
# Executar testes
make test
# Limpar arquivos temporários
make clean
Adicionar nova API
- Adicione a classe da API em
api_client.py
- Registre no
APIManager
- Adicione tools no
server.py
- Adicione testes em
test_api_client.py
🔍 Exemplos de Uso
1. Buscar posts
# Através do cliente MCP
result = await session.call_tool("get_posts", {"limit": 5})
2. Análise de usuário
# Usar o prompt de análise
prompt = await session.get_prompt("user_profile_analysis", {"user_id": 1})
3. Inspiração diária
# Usar o prompt de inspiração
prompt = await session.get_prompt("daily_inspiration", {})
🤝 Contribuição
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/nova-feature
) - Commit suas mudanças (
git commit -am 'Adiciona nova feature'
) - Push para a branch (
git push origin feature/nova-feature
) - Crie um Pull Request
Diretrizes de contribuição
- Mantenha o código limpo e bem documentado
- Adicione testes para novas funcionalidades
- Siga o estilo de código existente
- Atualize a documentação quando necessário
📝 Licença
Este projeto está sob a licença MIT. Veja o arquivo LICENSE
para detalhes.
🆘 Suporte
Problemas comuns
- Erro de importação do MCP: Certifique-se de que o pacote
mcp
está instalado - APIs não respondem: Verifique sua conexão com a internet
- Porta em uso: Mude a porta com
--port
- Erro "typer is required. Install with 'pip install mcp[cli]'": Execute
uv add 'mcp[cli]'
e depoisuv sync
- Erro "Claude app not found": Use o script de configuração automática (
uv run python configure_claude.py
) ou configure manualmente o arquivo de configuração do Claude Desktop
Nota: Se você encontrar problemas com o ambiente virtual, execute:
rm -rf .venv && uv sync
Logs e debugging
# Modo verbose
uv run mcp-server-one --verbose
# Logs detalhados
uv run mcp dev src/mcp_server_one/server.py --log-level DEBUG
Contato
- Issues: GitHub Issues
- Discussões: GitHub Discussions
🤝 Contribuindo
Contribuições são bem-vindas! Por favor, veja para detalhes sobre como contribuir.
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature
) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature'
) - Push para a branch (
git push origin feature/AmazingFeature
) - Abra um Pull Request
📄 Licença
Este projeto está licenciado sob a Licença MIT - veja o arquivo para detalhes.
🎉 Agradecimentos
- Model Context Protocol pela especificação
- JSONPlaceholder pela API de teste
- Cat Facts API pelos fatos interessantes
- Official Joke API pelas piadas
- QR code API pela geração de QR codes
Feito com ❤️ usando Model Context Protocol e UV