
Portugal Medicines
io.github.ThiagoJacobLannesPublished by GitHub account ThiagoJacobLannesv0.1.1Updated Nov 3, 2026
Medicine shortages (Infarmed) and pharmacies on duty or open now in Portugal.
Overview
Portugal Medicines's local MCP server; no sign-in required; STDIO.
No AI overview yet: these facts come from the registry entry and the server itself.
Installation
In SourceWeft
- Open Portugal Medicines in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
portugal-medicines-mcp
[!WARNING] Deprecated — use portugal-mcp instead. This server now lives on as the
medicamentosfeature of portugal-mcp, together with IPMA weather, INE, Banco de Portugal, Parliament, public contracts and more. Install withuvx portugal-mcp(addPORTUGAL_MCP_FEATURES=medicamentosto load only this part). Tool names:availability→medicine_availability,where_to_get_help→medicine_help;pharmaciesandfind_medicine_nearkeep their names. This repository gets no further updates.
MCP server that helps answer "I need medicine X in city Y. What do I do?" in Portugal, so Claude (or any MCP client) can say whether a medicine has a reported shortage, which pharmacies are on duty or open now, and who to call.
Read-only, no key, no account. It uses only public sources. Not affiliated with Infarmed, the SNS, SPMS, the Associação Nacional das Farmácias or farmaciasdeservico.net.
Pharmacy stock is not public in Portugal. Only pharmacies and distributors can see it. This server never says a pharmacy has a medicine: call the pharmacy, or call Linha 1400, to confirm.
Not medical advice. It is informational only. Never switch, stop or substitute a medicine without a pharmacist or doctor. In an emergency call 112. For health advice call SNS 24 on 808 24 24 24.
Tools
find_medicine_near
The one-shot answer. Checks the medicine's availability, lists the pharmacies on duty today and the ones open now in the city (nearest first if you give a position), and returns the help lines and next steps.
Parameters: medicine, city (or lat / lon), limit.
availability
Is a medicine in shortage? Searches by brand or active substance (Portuguese names work best: "quetiapina", "Ozempic", "ácido acetilsalicílico"; add a strength or form to narrow it). It checks three things Infarmed publishes on www.infarmed.pt:
- shortages under monitoring: the situations Infarmed is actively following, with its advice and circulars;
- export temporarily suspended: the monthly list of medicines whose export or distribution to other EU countries is suspended because of shortage or supply risk in Portugal;
- prior-notification list (LNP): the quarterly list of medicines with availability concerns or critical medicines.
The latest lists are found automatically on Infarmed's availability page. status is one or more of monitored_shortage, export_suspended, prior_notification, no_issue_in_published_lists. "No issue" does not prove the medicine is available: see What this server does not do.
Parameters: medicine, limit.
pharmacies
Pharmacies in a municipality (concelho), with address, phone, coordinates, today's hours, whether each one is open now and whether it is on duty today (official roster, duty day 09:00 to 09:00), with the duty type (for example "Permanente - Aberta 24h"). Sorted: on duty first, then open now, then distance.
Parameters: city (municipality, town or parish: "Lisboa", "Porto", "Alvalade, Lisboa"), lat / lon (adds distance_km; with no city, the municipality is found from the coordinate), radius_km, on_duty_only, open_now_only, limit. Only one municipality is covered per call.
where_to_get_help
The help lines below, each with the page it was checked on.
Help lines
Install
Quickest (needs uv): no clone needed, it runs straight from PyPI.
For Claude Desktop, use "command": "uvx", "args": ["portugal-medicines-mcp"].
From source:
Requires Python 3.10+.
On Windows, if you keep code in a cloud-synced folder (Google Drive, OneDrive), create the virtual environment outside it. Sync clients drop desktop.ini files into folders, which can crash packages on startup.
Add to Claude Code
Add to Claude Desktop
Merge claude_desktop_config.snippet.json into your Claude Desktop claude_desktop_config.json, then restart Claude Desktop:
Data sources
Data from these sources keeps the source's terms. The code in this repository is MIT-licensed.
What this server does not do
- No pharmacy stock. It is not public, and this server does not try to get it.
- No Infomed and no full shortage search. Infarmed's medicine database (Infomed) and its per-medicine shortage and discontinuation search are on
extranet.infarmed.pt, and that host'srobots.txtsaysDisallow: /for all automated clients. The online Prontuário Terapêutico (app10.infarmed.pt/prontuario/) is disallowed too. So this server does not search medicines, list presentations, prices, reimbursement or generics, or look up the full shortage database. Use those sites in a browser. If Infarmed publishes an open dataset or allows automated access, these features can be added. - No keys taken from other people's apps or web pages, and no bypassing of bot protection.
How it works
The server uses httpx with one session, a User-Agent naming this project, and at most one request per second per site. It reads Infarmed's availability page and the two spreadsheets it links (re-read every 6 hours, so the new monthly list is picked up automatically), and the farmaciasdeservico.net pages for one municipality (two pages, cached for 15 minutes). Medicine names are matched without regard to accents or case. If a page or spreadsheet changes shape, the tool returns a clear {"error": ...} instead of guessing.
License
MIT
Source: README.md at commit 2955366
Tools
0Version history
2- v0.1.1LatestNov 3, 2026
- v0.1.0Nov 1, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts