Multi Server MCP
Um aplicativo FastAPI abrangente que hospeda vários servidores MCP, cada um fornecendo acesso a diferentes APIs e serviços públicos. (Multi server MCP)
Documentação
Projeto Multi-Server MCP FastAPI
Um aplicativo FastAPI abrangente que hospeda múltiplos servidores Model Context Protocol (MCP), cada um fornecendo acesso a diferentes APIs e serviços públicos.
Demonstração de Trabalho
🚀 Recursos
Este projeto inclui 5 servidores MCP diferentes:
- Servidor de Clima – Integração com a API OpenWeatherMap para dados meteorológicos
- Servidor de Notícias – Integração com a NewsAPI para artigos de notícias recentes
- Servidor de Moedas – Taxas de câmbio e conversão de moedas
- Servidor de Citações – Citações inspiradoras e fatos aleatórios
📋 Pré-requisitos
- Python 3.13+
- Gerenciador de pacotes UV
- Chaves de API para serviços externos (consulte a seção de Configuração)
📁 Estrutura do Projeto
fastapi-multi-server-mcp/
├── main.py # FastAPI application entry point
├── requirements.txt # Python dependencies
├── pyproject.toml # UV project configuration
├── .env.example # Environment variables template
├── README.md # This file
├── servers/ # MCP servers directory
│ ├── __init__.py
│ ├── weather_server.py # Weather API MCP server
│ ├── news_server.py # News API MCP server
│ ├── currency_server.py # Currency API MCP server
│ └── quote_server.py # Quotes API MCP server
├── utils/ # Utility modules
│ ├── __init__.py
│ ├── api_clients.py # HTTP client utilities
│ └── config.py # Configuration management
├── tests/ # Test suite
│ ├── __init__.py
│ ├── test_weather.py
│ ├── test_news.py
│ ├── test_currency.py
│ └── test_quote.py
└── docs/ # Documentation
├── api_reference.md
└── deployment.md
🛠️ Instalação
Usando UV (Recomendado)
# Clone the repository
git clone <your-repo-url>
cd fastapi-multi-server-mcp
# Create virtual environment and install dependencies
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv pip install -r requirements.txt
Usando pip
pip install -r requirements.txt
🔧 Configuração
Crie um arquivo .env no diretório raiz com suas chaves de API:
# Weather API (OpenWeatherMap)
OPENWEATHER_API_KEY=your_openweather_api_key
# News API
NEWS_API_KEY=your_news_api_key
# Exchange Rates API
EXCHANGE_RATES_API_KEY=your_exchange_rates_api_key
# Server Configuration
PORT=10000
HOST=0.0.0.0
Obtendo Chaves de API
- OpenWeatherMap: Registre-se em openweathermap.org
- NewsAPI: Obtenha uma chave de API gratuita em newsapi.org
- Exchange Rates: Registre-se em exchangerate-api.com
- Quote API: Obtenha uma chave de API gratuita em quotesapi.com
🏃♂️ Executando o Aplicativo
Desenvolvimento
# Using UV
uv run uvicorn main:app --reload --host 0.0.0.0 --port 10000 --reload
# Using `npx` to debug the running application,
npx @modelcontextprotocol/inspector uv run uvicorn main:app
Para conectar um servidor específico ao inspector,
Defina,
-
Tipo de Transporte:
StreamableHTTP -
URLs:
- para notícias: http://localhost:10000/news/mcp/
- para clima: http://localhost:10000/weather/mcp/
- para moedas: http://localhost:10000/currency/mcp/
- para citações: http://localhost:10000/quotes/mcp/
- Clique em conectar, abrirá a janela do inspector assim:
Servidor de Citações:

Servidor de Notícias:

Servidor de Clima:

Servidor de Moedas:

A partir de junho de 2025, Windsurf e Cursor suportam dois tipos de transporte para servidores MCP: stdio e /sse, mas não StreamableHTTP. Portanto, usar stdio ou /sse como tipo de transporte é recomendado. Mas com o inspector, você pode conectar ao servidor MCP rodando no FastAPI com qualquer tipo de transporte.
Produção
# Using Gunicorn
gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:10000
📚 Endpoints da API
Após executar tudo com sucesso,
Seu servidor FastAPI estará disponível em: http://localhost:10000, documentação em http://localhost:10000/docs e seus servidores MCP estarão disponíveis em:
- Servidor de Clima: http://localhost:10000/weather
- Servidor de Notícias: http://localhost:10000/news
- Servidor de Moedas: http://localhost:10000/currency
- Servidor de Citações: http://localhost:10000/quotes
🧪 Testes
# Run all tests
pytest
# Run with coverage
pytest --cov=.
# Run specific server tests
pytest tests/test_weather.py
🛠️ Ferramentas Disponíveis por Servidor
🖼️ Clique para ver os detalhes da ferramenta
Servidor de Clima (/weather)
get_current_weather - Obter clima atual para uma cidade
get_weather_forecast - Obter previsão do tempo para 5 dias
get_weather_by_coordinates - Obter clima por latitude/longitude
Servidor de Notícias (/news)
get_top_headlines - Obter principais manchetes de notícias
search_news - Pesquisar artigos de notícias por palavra-chave
get_news_by_category - Obter notícias por categoria (negócios, tecnologia, esportes, etc.)
Servidor de Moedas (/currency)
get_exchange_rates - Obter taxas de câmbio atuais
convert_currency - Converter entre moedas
get_supported_currencies - Listar todas as moedas suportadas
Servidor de Citações (/quotes)
get_random_quote - Obter uma citação inspiradora aleatória
get_quote_by_category - Obter citações por categoria
get_random_fact - Obter um fato interessante aleatório
🚀 Implantação
Docker
Você pode implantar este projeto usando Docker. Um exemplo de Dockerfile está incluído:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 10000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "10000"]
Variáveis de Ambiente para Produção
PORT=10000
HOST=0.0.0.0
LOG_LEVEL=info
WORKERS=4
📝 Licença
Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE.md para detalhes.
📚 Suporte e Documentação
- Consulte a documentação no diretório
docs/ - Revise os arquivos de teste para exemplos de uso
🔄 Atualizações e Roteiro
- Adicionar suporte a WebSocket para dados em tempo real
- Implementar cache para respostas de API
- Adicionar limitação de taxa e autenticação
- Criar painel web para monitoramento
- Adicionar mais integrações de API (Spotify, Twitter, etc.)