npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@fhiron/mcp-connector

v0.7.1

Published

Fhiron MCP connector — validación FHIR contra CL Core v1.9.4 con skill `fhiron-cl` embebida (operating contract + 17 recursos descubribles). 10 tools fhiron_*, prompts pre-armados, bilingüe es/en, wizard `init` 1-clic. Compatible con Claude Code, Cursor,

Readme

@fhiron/mcp-connector

Built for FHIR® builders — Conecta tu agente de IA (Claude Desktop, Cursor, Antigravity, Windsurf) con Fhiron Bridge vía Model Context Protocol. Tu IDE valida recursos FHIR contra CL Core v1.9.4 en tiempo real — con errores en español, dígito verificador del RUN chequeado en el editor, ejemplos válidos a un comando, y catálogos chilenos (DEIS · TFC · CIE-10) consultables sin alucinar.

npm MCP CL Core License


Demo

Lo que muestra: Claude crea un Patient CL Core, busca la comuna en DEIS (Las Condes → 13114), detecta puntos en el RUN (cl-run-01), aplica el quick-fix automáticamente y explica el código de error con referencia al perfil oficial.

Para reproducir el flow en tu terminal sin cliente MCP:

node node_modules/@fhiron/mcp-connector/assets/demo-flow.js

Instalación en 30 segundos

Wizard interactivo (recomendado)

npx -y @fhiron/mcp-connector init

Detecta tu IDE, escribe la config con merge no-destructivo y verifica el handshake. Soporta:

  • Claude Desktop · ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
  • Cursor (global o por proyecto) · ~/.cursor/mcp.json o <repo>/.cursor/mcp.json
  • Antigravity · <repo>/.antigravity/mcp.json
  • Windsurf · ~/.codeium/windsurf/mcp_config.json
  • Claude Code (CLI) · ~/.claude.json

Manual

Claude Desktop · ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "fhiron": {
      "command": "npx",
      "args": ["-y", "@fhiron/mcp-connector", "--key", "TU_API_KEY"]
    }
  }
}

Cursor / Antigravity · .cursor/mcp.json o .antigravity/mcp.json

{
  "mcpServers": {
    "fhiron": {
      "command": "npx",
      "args": ["-y", "@fhiron/mcp-connector", "--key", "TU_API_KEY"]
    }
  }
}

Obtén tu API key gratis en fhiron.cl/registro. Plan Free incluye 100 validaciones/mes y todas las tools offline.


Modo bilingüe

# Por defecto: español (CL Core es chileno)
npx -y @fhiron/mcp-connector --key K

# Inglés (jurados internacionales / equipos extranjeros)
npx -y @fhiron/mcp-connector --key K --lang en

# Vía variable de entorno
FHIRON_LANG=en npx -y @fhiron/mcp-connector --key K

El idioma afecta los mensajes "marco" del connector (descripciones de tools, summaries, errores de red). Los mensajes pedagógicos de las reglas CL Core (why, suggestion) se mantienen en español por diseño — son específicos del IG chileno.


Las 10 herramientas

Los nombres canónicos usan el prefijo fhiron_ para diferenciarse de la marca registrada FHIR® (HL7®). Están agrupadas por intención — Validar, Explorar, Reparar — para que un dev nuevo arme el mapa mental en 30 segundos.

flowchart TD
    ROOT([fhiron_*<br/>10 herramientas])

    ROOT --> V[Validar]
    ROOT --> E[Explorar]
    ROOT --> R[Reparar]

    V --> V1[fhiron_lint<br/>· offline · gratis]
    V --> V2[fhiron_validate<br/>· 1 crédito · principal]
    V --> V3[fhiron_validate_file<br/>· 1 crédito · lee .json]
    V --> V4[fhiron_validate_bundle<br/>· 1 crédito por entry]
    V --> V5[fhiron_score_endpoint<br/>· offline · escanea endpoint]

    E --> E1[fhiron_get_example<br/>· offline · scaffolding]
    E --> E2[fhiron_search_terminology<br/>· offline · DEIS·TFC·CIE-10]
    E --> E3[fhiron_explain_code<br/>· offline · pedagógico]
    E --> E4[fhiron_compare_profiles<br/>· 2 créditos · R4 vs CL Core]

    R --> R1[fhiron_apply_fix<br/>· offline · idempotente]

    classDef root fill:#1e1f24,stroke:#635BFF,stroke-width:2px,color:#fff
    classDef group fill:#1e1f24,stroke:#7C7BFF,stroke-width:1.5px,color:#fff
    classDef tool fill:#0f1115,stroke:#3a3a45,color:#cfcfd6

    class ROOT root
    class V,E,R group
    class V1,V2,V3,V4,V5,E1,E2,E3,E4,R1 tool

Regla práctica: si no tenés un recurso aún, empezá por Explorar (fhiron_get_example, fhiron_search_terminology). Si lo tenés, Validar (lint local → validate). Si el issue trae quickFix, Reparar y volvé a validar.

Validar

Confirman que un recurso, un Bundle o un endpoint cumple CL Core v1.9.4.

| Tool | Costo | Descripción | | -------------------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | fhiron_lint | Gratis (offline) | Linter local offline (cl-* rules). No descuenta cuota. Ideal para auto-corregir antes de gastar un crédito en fhiron_validate. | | fhiron_validate | 1 crédito | Valida un recurso FHIR completo contra CL Core v1.9.4. Corre el linter local primero (gratis) y luego HAPI server-side. Esta es la tool principal de validación. | | fhiron_validate_file | igual que validate | Lee un archivo .json del filesystem local del usuario y lo valida. Read-only. Usá esta tool cuando el usuario menciona un archivo en vez de pegar el JSON inline. | | fhiron_validate_bundle | 1 crédito por entry | Valida un Bundle entry-by-entry contra HAPI. Devuelve matriz pass/fail por entry, agrupada por resourceType. Útil para datasets grandes (50–500 recursos). | | fhiron_score_endpoint | Gratis (no cuota) | Escanea un endpoint FHIR público (URL) y devuelve un FHIR Score 0-100 con grade A-F + recomendaciones por dimensión. Lectura del CapabilityStatement. |

Explorar

Para entender el estándar, ver ejemplos válidos y consultar terminología chilena. La IA debe llamarlas antes de inventar un código o un perfil.

| Tool | Costo | Descripción | | ----------------------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | fhiron_get_example | Gratis (offline) | Devuelve un recurso CL Core válido listo para editar. Cubre Patient, Practitioner, Encounter, Condition, MedicationRequest y 9 más. | | fhiron_search_terminology | Gratis (offline) | Busca en catálogos chilenos: comunas DEIS, establecimientos DEIS, TFC (medicamentos), CIE-10, CSTipoIdentificador. La IA debe consultar, no adivinar. | | fhiron_explain_code | Gratis (offline) | Explica un código de error (cl-run-01, hapi-error, mcp-quota-01) con why (porqué), profileUrl, suggestion y un example. | | fhiron_compare_profiles | 2 créditos | Valida el mismo recurso contra dos perfiles en paralelo (FHIR R4 base + CL Core) y devuelve el diff de errores. Útil para entender qué exige CL Core sobre R4 vanilla. |

Reparar

Aplica correcciones mecánicas obtenidas desde un issue.quickFix.

| Tool | Costo | Descripción | | ------------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------- | | fhiron_apply_fix | Gratis (offline) | Aplica un quickFix obtenido de issues[] directamente sobre el JSON del recurso (RFC 6901 jsonPointer). Idempotente. |

Migración desde v0.4.x

Los nombres anteriores siguen funcionando como aliases retrocompatibles (no aparecen en tools/list):

| Nombre v0.4.x | → Canónico v0.5.0 | | ------------------------------- | ----------------------- | | fhiron_validate_fhir_resource | fhiron_validate | | fhiron_fhir_lint_local | fhiron_lint | | fhiron_fhir_apply_quickfix | fhiron_apply_fix | | fhiron_fhir_lint_run | (deprecada — usar fhiron_validate con un Patient mínimo) | | validate_fhir_resource, fhir_validate, fhir_lint_local, fhir_lint_run, fhir_apply_quickfix | aliases legacy v0.3.x — siguen aceptados |


Estructura del feedback (las 4 preguntas)

Cada issue responde:

{
  "code": "cl-run-01",                                           // qué (estable, máquina-legible)
  "severity": "error",
  "path": "Patient.identifier[0].value",                          // dónde (FHIRPath)
  "message": "El RUN no debe incluir puntos. Formato esperado: 12345678-5 (perfil RUNcl · CL Core v1.9.4).",
  "why": "El perfil RUNcl de CL Core normaliza el RUN al cuerpo numérico sin separadores...",  // porqué
  "profileUrl": "https://hl7chile.cl/fhir/ig/clcore/StructureDefinition/RUNcl",  // dónde se indica
  "docsUrl": "https://docs.fhiron.cl/errores/cl-run-01",         // más info
  "suggestion": "Aplica el quickFix incluido o quita los puntos manualmente...",
  "example": { "identifier": [{ "system": "...CSIdentificadores", "value": "12345678-5" }] },
  "quickFix": {                                                  // solución mecánica
    "title": "Quitar puntos automáticamente",
    "jsonPointer": "/identifier/0/value",
    "replacement": "12345678-5"
  }
}

Resources MCP (resources/list)

El servidor expone contexto FHIR Chile que el agente IA puede leer sin pedirlo:

| URI | MIME | Contenido | | ------------------------------------------------ | -------------------------- | ------------------------------------------------------------------------- | | fhiron://profiles/cl-core/v1.9.4 | application/json | Catálogo de StructureDefinitions y CodeSystems del IG. | | fhiron://examples/{ResourceType} | application/fhir+json | Ejemplo válido CL Core por cada uno de los 13 recursos cubiertos. | | fhiron://catalogs/{system} | application/json | DEIS comunas, DEIS establecimientos, TFC, CIE-10, CSIdentificadores. | | fhiron://docs/{topic} | text/markdown | Mini-docs: run-format, comunas-deis, tfc, identificadores, mcp-overview. | | fhiron://errors | application/json | Catálogo completo de códigos cl-*, hapi-* y mcp-* con metadatos. |


Prompts MCP (prompts/list)

Slash-commands listos para usar en Claude Desktop / Cursor:

| Nombre | Argumentos | Descripción | | ------------------- | -------------------------------- | ------------------------------------------------------------------------ | | validar-recurso | recurso | Valida + auto-aplica quickFix + reporta con why/suggestion. | | crear-paciente-cl | nombre, run, comuna | Genera un Patient CL Core válido con los datos provistos. | | auditar-bundle | bundle | Lint entry por entry, tabla de errores por recurso, resumen final. | | explicar-error | code | Pedagogía completa de un código de error. | | buscar-codigo | system, query | Busca un código en DEIS / TFC / CIE-10 / CSIdentificadores. |


Reglas locales (cl-*)

35+ reglas offline cubriendo los 13 recursos más comunes de CL Core v1.9.4.

Formato y estructura

| Código | Severidad | Descripción | | ------------ | --------- | ---------------------------------------------------------------------------- | | cl-json-01 | error | JSON inválido (string de entrada no parseable). | | cl-json-02 | error | El argumento no es un objeto FHIR. | | cl-json-03 | error | Falta resourceType. | | cl-json-04 | warning | resourceType no es un tipo oficial de FHIR R4 (el servidor lo rechazará). |

RUN chileno (perfil RUNcl)

| Código | Severidad | Descripción | | ------------ | --------- | ---------------------------------------------------------------------------- | | cl-run-01 | error | RUN con puntos — incluye quickFix que los elimina automáticamente. | | cl-run-02 | error | Identifier con system RUN pero sin value. | | cl-run-03 | error | Dígito verificador incorrecto. | | cl-run-04 | warning | System legacy hl7chile.cl/identificador/run obsoleto. |

Patient (CorePacienteCl)

| Código | Severidad | Descripción | | ---------------- | --------- | ------------------------------------------ | | cl-patient-01 | error | Falta identifier. | | cl-patient-02 | error | Falta name. | | cl-patient-03 | error | Elemento de name sin family ni given.| | cl-patient-04 | warning | gender recomendado. |

Practitioner (CorePrestadorCl)

| Código | Severidad | Descripción | | --------------------- | --------- | ----------------------- | | cl-practitioner-01 | error | Falta identifier. | | cl-practitioner-02 | error | Falta name. |

Observation

| Código | Severidad | Descripción | | ----------- | --------- | ---------------- | | cl-obs-01 | error | Falta status. | | cl-obs-02 | error | Falta code. | | cl-obs-03 | error | Falta subject. |

Medication (CoreMedicamentoCl)

| Código | Severidad | Descripción | | ----------- | --------- | -------------------------------------------------------- | | cl-med-01 | error | Falta code. | | cl-med-02 | warning | Sistema de codificación no reconocido (TFC/SNOMED/RxNorm recomendados). |

MedicationRequest

| Código | Severidad | Descripción | | ---------------- | --------- | -------------------------------------------- | | cl-medreq-01 | error | Falta status. | | cl-medreq-02 | error | Falta intent. | | cl-medreq-03 | error | Falta subject. | | cl-medreq-04 | error | Falta medication[x]. |

Encounter (CoreEncounterCl)

| Código | Severidad | Descripción | | ----------- | --------- | -------------------- | | cl-enc-01 | error | Falta status. | | cl-enc-02 | error | Falta class. | | cl-enc-03 | error | Falta subject. |

Condition / AllergyIntolerance / Procedure / Coverage / Organization / Immunization / DiagnosticReport / Bundle

Lista completa de códigos (cl-cond-*, cl-allergy-*, cl-proc-*, cl-cov-*, cl-org-*, cl-imm-*, cl-dr-*, cl-bundle-*) en docs.fhiron.cl y en Fhironstack/skills.


Compatibilidad MCP

  • Spec: soporta protocolVersion 2025-03-26 (con annotations) y negocia automáticamente con clientes en 2024-11-05.
  • Capabilities declaradas: tools, resources, prompts, logging.
  • Notifications: emite notifications/message (level=info) cuando el cliente declara logging capability — útil para mostrar progreso en Claude Desktop.

Verificar con el MCP Inspector oficial

cd packages/mcp-connector
FHIRON_API_KEY=tu_key npm run inspect

Seguridad

  • La API key se pasa por argumento o env var FHIRON_API_KEY. Nunca se persiste en disco (excepto cuando el wizard init la escribe en el config del IDE — ahí queda en plain text bajo tu control).
  • Todo el tráfico va por HTTPS a https://fhiron.cl/api/validate con header X-API-Key.
  • El conector no expone filesystem ni shell — solo las 7 tools declaradas.
  • Los errores de red, autenticación y cuota se devuelven como content[] en el idioma activo, nunca escapan como errores JSON-RPC crudos.
  • El subcomando init hace merge no-destructivo sobre la config existente — preserva otros mcpServers y otras keys top-level.

Stack

  • Node.js >= 20.9 (built-in fetch, node:test, AbortSignal.timeout).
  • Zero deps runtime salvo @fhiron/linter (también zero-deps).
  • CommonJS — el mismo módulo corre en el Web Worker del dashboard, en el MCP connector y en el servidor.

Tests

npm test    # 51 tests con stub HTTP local (node:test, sin dependencies)

Fhiron — Built for FHIR® builders. Hecho en Chile 🇨🇱 con MIT license.


FHIR® is the registered trademark of Health Level Seven International and the use does not constitute endorsement by HL7.