# Serwer MCP FHIR dla agentów AI

> Połącz Claude Code, Cursor, VS Code lub Claude Desktop z API HL7 FHIR R4 za pośrednictwem MCP: 20 narzędzi do odczytu rekordów, kontekstu gotowego dla AI, zapisu, importu wyników badań laboratoryjnych i resetowania piaskownicy, na 30 syntetycznych pacjentach, za darmo.

Source: https://developers.anpheros.com/pl/guides/mcp

**Anpheros FHIR to zdalny serwer MCP, który umożliwia agentowi AI (Claude, Claude Code, Cursor, VS Code, Claude Desktop) pracę z API danych medycznych HL7 FHIR R4.** Łączy się on na dwa sposoby:

- **Z darmowym kluczem piaskownicy**, dla deweloperów: Twój agent listuje pacjentów, odczytuje ich rekordy jako FHIR lub jako kontekst gotowy dla AI z informacją o pochodzeniu danych, zapisuje obserwacje, importuje wyniki badań laboratoryjnych i resetuje dane testowe, wszystko na 30 syntetycznych pacjentach z realistycznymi historiami chorób.
- **Z OAuth**, dla osoby i jej własnego rekordu: Asystent rejestruje się, osoba loguje się i zatwierdza go na ekranie zgody Anpheros, a następnie asystent może odczytać ten jeden rekord, przez wybrany okres, tylko do odczytu, chyba że osoba zezwoliła na więcej.

Adres serwera: `https://platform.anpheros.com/mcp` (Strumieniowy HTTP, bezstanowy).

## Połączenie z OAuth (Claude i inne asystenty)

Dodaj `https://platform.anpheros.com/mcp` jako niestandardowe połączenie (w Claude: Ustawienia → Połączenia → Dodaj niestandardowe połączenie). Nic więcej nie trzeba konfigurować: asystent wykrywa serwer autoryzacji, rejestruje się i otwiera ekran zgody Anpheros. Tam użytkownik widzi, że jest to asystent AI, co jest odczytywane i wysyłane do firmy zarządzającej asystentem, co może odczytać, na jak długo i dokąd wróci po dokonaniu wyboru. Dostęp jest tylko do odczytu, chyba że poproszono o więcej i zostało to zatwierdzone, a użytkownik może go w każdej chwili odwołać.

Podczas prywatnych testów beta połączenia OAuth wykorzystują rekordy sandbox. Połączenia z rzeczywistymi rekordami zostaną otwarte po zaktualizowaniu polityki prywatności.

## Połącz się z kluczem sandbox (deweloperzy)

1. Zaloguj się na [platform.anpheros.com/dashboard](https://platform.anpheros.com/dashboard/) za pomocą Google i wybierz **Get a sandbox key**. Otrzymasz klucz `sk_test_…` i projekt z 30 syntetycznymi pacjentami.
2. Umieść klucz w zmiennej środowiskowej, na przykład `ANPHEROS_KEY`, i dodaj serwer do swojego narzędzia.

**Claude Code**

```bash
claude mcp add --transport http anpheros-fhir https://platform.anpheros.com/mcp --header "Authorization: Bearer $ANPHEROS_KEY"
```

**Cursor** (`~/.cursor/mcp.json` lub `.cursor/mcp.json` w projekcie)

```json
{
  "mcpServers": {
    "anpheros-fhir": {
      "url": "https://platform.anpheros.com/mcp",
      "headers": { "Authorization": "Bearer ${env:ANPHEROS_KEY}" }
    }
  }
}
```

**VS Code** (`.vscode/mcp.json`)

```json
{
  "servers": {
    "anpheros-fhir": {
      "type": "http",
      "url": "https://platform.anpheros.com/mcp",
      "headers": { "Authorization": "Bearer ${env:ANPHEROS_KEY}" }
    }
  }
}
```

**Claude Desktop** (`claude_desktop_config.json`, przez mostek `mcp-remote`)

```json
{
  "mcpServers": {
    "anpheros-fhir": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://platform.anpheros.com/mcp", "--header", "Authorization: Bearer ${ANPHEROS_KEY}"],
      "env": { "ANPHEROS_KEY": "sk_test_…" }
    }
  }
}
```

Następnie zadaj swojemu agentowi coś w stylu: *"Wylistuj pacjentów z sandboxa, wybierz tego z cukrzycą i podsumuj jej HbA1c z ostatnich sześciu miesięcy."*

## Narzędzia

| Narzędzie | Co robi |
|---|---|
| `list_patients` | pacjenci projektu: 30 syntetycznych person i wszyscy, których utworzyłeś |
| `get_patient_context` | kontekst gotowy do użycia przez AI dla jednego pacjenta, w ramach limitu tokenów, każdy element oznaczony źródłem |
| `get_patient_summary` | Międzynarodowe Podsumowanie Pacjenta (FHIR `$summary`), w języku, o który prosisz |
| `get_timeline` | rekord w kolejności datowej według typów zasobów |
| `get_health_patterns` | beta: co się zmieniło i co się powtarza, każde znalezisko ze swoim okresem, dowodami i ograniczeniami; nie diagnozy ([przewodnik](https://developers.anpheros.com/pl/guides/health-patterns)) |
| `get_pattern_evidence` | beta: każdy zasób stojący za jednym znaleziskiem |
| `get_series` | beta: jedna miara jako jedna wartość dziennie, z jakością danych |
| `compare_periods` | beta: jedna miara w dwóch wybranych okresach |
| `search_fhir` | standardowe wyszukiwanie FHIR R4, zwracające Bundle |
| `read_fhir_resource` | jeden zasób lub jego wcześniejsza wersja |
| `get_provenance` | kto napisał zasób, kiedy i z jakiego systemu |
| `lookup_code` | kody LOINC według tekstu lub kodu (dla leków, użyj `search_health_terms`) |
| `search_health_terms` | publiczny katalog objawów, schorzeń i terapii, według nazwy w 20 językach, synonimu, marki lub kodu ([przewodnik](https://developers.anpheros.com/pl/guides/anpheros-search)) |
| `get_health_term` | jeden wpis katalogowy z jego kodami, nazwami, podsumowaniem MedlinePlus, linkami do źródeł i cytowanymi wskazaniami EMA / FDA |
| `validate_fhir_resource` | sprawdza zasób bez jego zapisywania |
| `create_fhir_resource` | waliduje, a następnie zapisuje zasób |
| `create_patient` | nowy, wymyślony pacjent w projekcie |
| `import_lab_report` | raport laboratoryjny w formacie CSV, HL7 v2 ORU^R01 lub JSON staje się Obserwacjami laboratoryjnymi |
| `sandbox_status` | zapisuje używane dzisiaj, pacjentów, magazyn, resetuje |
| `reset_sandbox` | przywraca 30 syntetycznych pacjentów (prosi o potwierdzenie) |

Narzędzia do odczytu są oznaczone jako tylko do odczytu, a reset jako niszczący, dzięki czemu klienci mogą pytać przed ryzykownymi działaniami. Serwer oferuje również listę syntetycznych pacjentów jako zasób oraz trzy podpowiedzi: podsumowanie dla lekarza, import CSV laboratorium i budowanie integracji na API.

## Jak to działa

- **Te same zasady co API.** Każde narzędzie wywołuje publiczne API za pomocą Twojego klucza: te same zakresy, limity żądań, walidacja i audyt. Klucz tylko do odczytu nie może zapisywać.
- **Pochodzenie danych.** Wszystko, co zapisuje agent, jest rejestrowane ze źródłem `urn:anpheros:mcp`, dzięki czemu zawsze można określić, co pochodzi od agenta.
- **Dane pacjenta to dane.** Wyniki narzędzi zawierają informację, że zawartość rekordu nigdy nie powinna być traktowana jako instrukcje, co stanowi podstawowe zabezpieczenie przed wstrzyknięciem promptu za pośrednictwem dokumentacji medycznej.
- **Jeden rekord, za zgodą.** Klucze produkcyjne API (`sk_live_…`) są odrzucane, ponieważ mają dostęp do każdego pacjenta projektu. Rzeczywisty rekord trafia do asystenta tylko poprzez OAuth, po jego zatwierdzeniu przez osobę, a każdy odczyt jest rejestrowany w historii dostępu tej osoby.
- **Standardowe odkrywanie.** Bez poświadczeń serwer odpowiada kodem 401 z nagłówkiem `WWW-Authenticate` wskazującym na jego metadane zasobów chronionych przez OAuth (RFC 9728); asystenci rejestrują się poprzez dynamiczną rejestrację klienta (RFC 7591), z PKCE. Rejestracja akceptuje tylko adresy loopback, schematy aplikacji znanych edytorów i domeny zwrotne znanych asystentów AI.

## Często zadawane pytania

### Czym jest serwer MCP?
MCP (Model Context Protocol) to otwarty protokół, za pomocą którego agenci AI i asystenci kodowania wywołują zewnętrzne narzędzia. Serwer MCP dla FHIR pozwala agentowi na bezpośrednie odczytywanie i zapisywanie historii medycznych, zamiast wklejania danych do czatu.

### Czy jest to darmowe?
Tak. Serwer MCP działa na darmowym środowisku sandbox: 30 syntetycznych pacjentów na projekt, do 10 000 zapisów dziennie, bez karty.

### Czy asystent może odczytać dane prawdziwego pacjenta?
Tylko za pośrednictwem OAuth, po tym jak dana osoba zatwierdzi asystenta na ekranie zgody, na wybrany przez siebie okres, i tylko jego własne dane (lub dane osoby, którą się opiekuje). Podczas prywatnej wersji beta, połączenia OAuth korzystają z danych z sandbox.

### Z której wersji FHIR korzysta?
HL7 FHIR R4 (4.0.1), to samo API co https://platform.anpheros.com/fhir/R4, z International Patient Summary i widokiem REST tych samych danych.

### Czy działa z ChatGPT?
Konektory ChatGPT używają OAuth z dynamiczną rejestracją klienta, którą serwer obsługuje, a jego domena zwrotna jest akceptowana. Przepływ został przetestowany z oficjalnym klientem MCP SDK; jeśli połączenie ChatGPT się nie powiedzie, napisz na adres support@anpheros.com. Claude Code, Cursor i VS Code również działają z kluczem sandbox.

## Powiązane

- [Jak nadać agentowi AI dostęp do dokumentacji medycznej](https://developers.anpheros.com/pl/guides/ai-agent-access-medical-records): samouczek krok po kroku w Pythonie
- [Darmowa baza danych FHIR i piaskownica](https://developers.anpheros.com/pl/guides/free-fhir-database)
- [Agenci AI i dane medyczne](https://developers.anpheros.com/pl/guides/ai-agents-medical-data)
- [Aplikacje LLM i dane dotyczące opieki zdrowotnej](https://developers.anpheros.com/pl/guides/llm-healthcare-data)
- [API opieki zdrowotnej z zgodą pacjenta](https://developers.anpheros.com/pl/guides/healthcare-api-patient-consent)
