mcp-servicos-pt
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-servicos-pt Que tempo vai fazer em Lisboa amanhã?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-servicos-pt
Servidor MCP de serviços portugueses. Primeiro conector: IPMA (meteorologia) — API pública, sem chave, sem autenticação.
Estrutura
src/mcp_servicos_pt/
├── server.py # monta o servidor, regista conectores
├── __main__.py # ponto de entrada (`python -m mcp_servicos_pt`)
├── core/connector.py # contrato que cada conector cumpre
└── connectors/ipma/
├── client.py # HTTP puro, fala com api.ipma.pt — sem MCP
├── models.py # traduz a resposta bruta para JSON legível
└── connector.py # regista as tools no servidor MCPRelated MCP server: IPMA MCP Server
Instalar
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"Testar a lógica (sem rede)
pytest tests/ -vCorrer o servidor e testar com o MCP Inspector
O Inspector é a ferramenta oficial para testar um servidor MCP visualmente, sem precisar de configurar o Claude Desktop.
npx @modelcontextprotocol/inspector python -m mcp_servicos_ptAbre o URL que aparece no terminal, clica em "List Tools" e devem
aparecer listar_localidades_pt e previsao_tempo_pt. Chama
listar_localidades_pt primeiro para obteres um globalIdLocal
válido, e usa-o depois em previsao_tempo_pt.
Ligar ao Claude Desktop
No ficheiro de configuração do Claude Desktop
(~/Library/Application Support/Claude/claude_desktop_config.json
no macOS, ou o equivalente no Windows/Linux), acrescenta:
{
"mcpServers": {
"servicos-pt": {
"command": "/caminho/completo/para/.venv/bin/python",
"args": ["-m", "mcp_servicos_pt"],
"cwd": "/caminho/completo/para/mcp-servicos-pt"
}
}
}Reinicia o Claude Desktop e pergunta algo como "que tempo vai fazer em Lisboa nos próximos dias?" — o modelo deve encadear as duas tools sozinho.
Nota importante sobre os nomes dos campos do IPMA
Este projeto foi construído num ambiente sem acesso de rede a
api.ipma.pt, por isso os nomes dos campos em models.py (tMin,
tMax, idWeatherType, forecastDate, ...) vêm da documentação
pública conhecida do IPMA, mas não foram confirmados com uma
chamada real. O código foi escrito de forma defensiva (usa .get()
em vez de aceder direto às chaves), por isso não deve rebentar mesmo
que um nome tenha mudado — mas antes de confiares nos valores,
corre listar_localidades_pt e previsao_tempo_pt no teu ambiente,
compara com a resposta bruta em https://api.ipma.pt/open-data/ e
ajusta models.py se algum campo não bater certo. O resto da
arquitetura não muda.
Próximo passo
Para adicionar um segundo serviço (ex. dados.gov.pt):
Cria
connectors/dados_gov/{client,models,connector}.pyseguindo exatamente o mesmo padrão do IPMA.Regista-o em
server.py:DadosGovConnector().register(mcp)
Nada no núcleo precisa de mudar.
Available Tools
2 toolslistar_localidades_ptA
Lista os distritos e ilhas portugueses conhecidos pelo IPMA.
Cada entrada inclui um globalIdLocal — o identificador
necessário para pedir a previsão do tempo dessa localidade
com a tool previsao_tempo_pt.
Inputs: no named parameters. Returns: result
previsao_tempo_ptA
Devolve a previsão diária do tempo (temperatura, chuva,
vento) para uma localidade portuguesa, identificada pelo
globalIdLocal obtido em listar_localidades_pt.
Inputs: global_id_local (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 2 tools
Each tool has a clearly distinct purpose: one lists available localities, and the other returns the forecast for a selected locality. The descriptions explicitly reference each other, leaving no ambiguity about when to use which.
Both names share the same '_pt' suffix and snake_case style, but one uses a verb ('listar') while the other uses a noun ('previsao') instead of a verb form like 'obter_previsao'. This is a minor inconsistency that does not hurt readability.
Two tools is minimal, but it is a reasonable size for the narrow, read-only weather forecast domain. The pair forms a clean two-step workflow with no redundant tools.
For the stated purpose of providing IPMA weather forecasts for Portuguese localities, the surface is complete: you can discover locations and retrieve the forecast. No update, delete, or write operations are relevant to this domain.
Related MCP Connectors
Current weather and forecast lookup as an agent tool.
Portugal public data: weather, INE, Parliament, contracts, SNS, fuel, transit, power cuts.
Global weather via Open-Meteo: forecast, historical, marine, air quality, geocoding, elevation.
IPMA Portugal MCP — weather, UV, sea state, and earthquakes from the Instituto Português do Mar e…
Related MCP Servers
- AlicenseBqualityCmaintenanceProvides access to Portuguese meteorological data from IPMA (Instituto Português do Mar e da Atmosfera), including weather forecasts, warnings, UV index, seismic data, and weather station observations for cities in Portugal.6MIT
- AlicenseAqualityDmaintenanceProvides access to Portuguese weather data from IPMA (Instituto Português do Mar e da Atmosfera), including weather forecasts, meteorological warnings, seismic data, UV index, and real-time observations from weather stations across Portugal.6MIT
- AlicenseAqualityDmaintenanceProvides comprehensive access to Portuguese weather data from IPMA, including forecasts, warnings, sea state, fire risk, UV index, seismic activity, and weather station observations for all Portuguese cities and islands.10MIT
- AlicenseNot gradedqualityCmaintenanceProvides weather, UV, sea state, and earthquake data from IPMA Portugal through an MCP gateway, enabling natural language queries for Portuguese meteorological and seismic information.119 npmMIT