Skip to main content
Glama
orlando-derm

advancedmd-connector

by orlando-derm

advancedmd-connector

advancedmd-connector es el único proceso de la organización que se comunica con AdvancedMD. Cada consumidor de datos de AdvancedMD — los flujos de trabajo de backend (appointment-validator, srt-auths, note-audit, patient-intake), la comprobación de credenciales de admin-console y los agentes de IA (Adam y cualquier agente de Claude Code, Cursor o Desktop) — le envía una llamada de herramienta por HTTP o MCP y recibe un resultado JSON. Es el único que posee las credenciales de AdvancedMD, la única sesión de inicio de sesión y el único reloj de tasa.

Hoy quince procesos tienen cada uno credenciales de AdvancedMD, inician sesión de forma independiente y aplican su propia limitación de tasa frente a los límites por clave de oficina de AdvancedMD (que facturan $0.01 por llamada excedente y rechazan inicios de sesión más frecuentes que aproximadamente uno por minuto). El conector soluciona eso centralizando la sesión y el reloj: un solo proceso, un solo reloj de tasa, una única superficie de herramientas, y los mismos nombres de herramienta y formas de resultado para todos los consumidores existentes. Consulta SPEC.md para ver el contrato completo y docs/CONNECTOR_DECISIONS.md para conocer el motivo de cada decisión.

Arquitectura

 backend workflows ------ JSON tool call ------> +-----------------------------+
 (validator, srt-auths,                          |    advancedmd-connector     |
  note-audit, intake,                            |                             |
  admin-console, chatbot)                        |  HTTP API   MCP surface     |
                                                  |      \        /             |
 agents ----------------- MCP tool call -------> |     receivers (one per      |
 (Adam via remote MCP;                           |       open request)         |
  Cursor, Claude Code,                           |          |                  |
  Desktop via stdio shim                         |     entry queue             |
  or remote MCP)                                 |          |                  |
                                                  |     worker loop  (1 at a    |
                                                  |          |        time)     |
                                                  |      handler                |
                                                  |          |                  |
                                                  |    request queue            |
                                                  |          |                  |
                                                  |     sender loop  (clock,    |
                                                  |          |        session)  |
                                                  +----------|------------------+
                                                             |  XML over HTTPS
                                                             v
                                                        AdvancedMD

Un solo proceso. Un solo puerto (8820 por defecto). Todo lo que está por encima de la caja discontinua es un consumidor; nada fuera de la caja posee credenciales de AMD ni envía XML.

Related MCP server: production-grade-mcp-agentic-system

Ejecutar localmente en cinco comandos

cp .env.example .env                      # fill AMD_USERNAME, AMD_PASSWORD, AMD_OFFICE_KEY
pip install -e ".[dev]"
export $(cat .env | grep -v '^#' | xargs) CONNECTOR_TOKENS_PATH=/tmp/tokens.json
connector tokens add myapp --priority interactive --tools '*'   # prints a token once
uvicorn --factory connector.app:build_app --host 0.0.0.0 --port 8820

GET http://localhost:8820/health debería responder {"status": "starting"} o "ok" una vez que se complete el primer intento de inicio de sesión. docker compose up --build ejecuta lo mismo en contenedores, leyendo el mismo .env.

Conectar un agente

Los nombres de las herramientas, los esquemas de argumentos y las formas de resultado redactadas son idénticos en los tres métodos de conexión (SPEC 12.1), por lo que una configuración de agente puede pasar de uno a otro sin cambiar los prompts.

MCP remoto (agentes alojados, p. ej. Adam): apunta directamente a la superficie streamable-HTTP del conector:

{"mcpServers": {"amd-patients": {"type": "http",
  "url": "http://advancedmd-connector:8820/mcp/patients",
  "headers": {"Authorization": "Bearer <agent token>"}}}}

Se sirven diez rutas: /mcp/patients, /mcp/visits, /mcp/providers, /mcp/codes, /mcp/billing, /mcp/payments, /mcp/masterfiles, /mcp/system, /mcp/ehr y /mcp/all (la unión).

Shim stdio local (agentes en una estación de trabajo): instala el paquete publicado advancedmd-mcp y apúntalo al conector a través de la red; no contiene credenciales ni lógica de herramientas:

{"mcpServers": {"amd-patients": {"command": "uvx",
  "args": ["advancedmd-mcp", "--domain", "patients"],
  "env": {"ADVANCEDMD_CONNECTOR_URL": "http://100.94.62.115:8820",
          "ADVANCEDMD_CONNECTOR_TOKEN": "<agent token>"}}}}

Plugin de Claude Code: plugin/ declara los nueve servidores stdio con referencias de entorno ${ADVANCEDMD_CONNECTOR_URL} y ${ADVANCEDMD_CONNECTOR_TOKEN}:

claude plugin add <path or repo>/plugin

El mismo plugin/.mcp.json es válido para Cursor y Claude Desktop copiándolo.

Usarlo desde un flujo de trabajo

Los servicios de backend en Python usan el SDK en orlando-derm-backend/lib/advancedmd_connector/, que conserva todos los nombres de método existentes y los resultados tipados:

from lib.advancedmd_connector import AmdConnector

connector = AmdConnector.from_env()          # ADVANCEDMD_CONNECTOR_URL, ADVANCEDMD_CONNECTOR_TOKEN
bundle = await connector.get_patient_bundle(patient_id)
result = await connector.tool("getdemographic", patient_id=patient_id)   # generic call

El SDK no contiene credenciales de AMD, ni XML, ni URL de AMD; es solo HTTP. Consulta SPEC 13 para ver la tabla completa de métodos y el mapeo de excepciones.

Emitir un token

Los tokens se emiten y revocan con la CLI connector incluida, contra el archivo de tabla de tokens (CONNECTOR_TOKENS_PATH):

connector tokens add appointment-validator --priority batch --tools '*'
connector tokens add my-agent --priority interactive --tools getdemographic,lookuppatient
connector tokens list
connector tokens revoke my-agent

Un token en texto plano se imprime una vez al emitirse y nunca se almacena ni puede recuperarse. Consulta docs/OPERATIONS.md para la referencia completa de flags y docs/TOKENS.md para el modelo de tokens.

Dónde mirar cuando algo va lento

  • GET /health (sin token, solo red interna): estado de la sesión, profundidad de la cola de entrada y espera más antigua, profundidad de la cola de solicitudes y uso/límite del reloj de tasa por nivel, todo en una sola llamada.

  • GET /metrics (sin token): texto de Prometheus: recuentos de llamadas a herramientas e histogramas de espera por llamador/herramienta/resultado, recuentos de solicitudes AMD e histogramas de tiempo de POST por nivel, uso/límite/tiempo de suspensión del reloj por nivel, contadores de reinicio de sesión y de rechazo de inicio de sesión, profundidades de cola. Consulta SPEC 18 para ver la lista completa de métricas y las condiciones de alerta en SPEC 18.2.

  • Una respuesta lenta de AMD nunca debe retrasar /health: el bucle del emisor y /health se ejecutan en el mismo bucle de eventos, pero la E/S bloqueante está prohibida (SPEC 4.4), por lo que una llamada AMD colgada se manifiesta como presión de reloj/cola en /health, no como un conector que no responde.

Programación por lotes

El conector en sí no ejecuta trabajos por lotes; serializa lo que envían sus llamadores de prioridad por lotes. Los consumidores actualmente programados contra él (tabla de migración SPEC 22) son appointment-validator (una ejecución nocturna), srt-auths (ejecuciones de escaneo y de eventos) y note-audit (una ejecución diaria). Las solicitudes de prioridad por lotes envejecen hasta su promoción después de BATCH_AGING_MS (60 s por defecto), de modo que un backlog de lotes largo no pueda privar indefinidamente de recursos a las llamadas interactivas (SPEC 5.3); los despliegues deberían evitar igualmente estas ventanas, ya que un reinicio elimina la sesión en memoria (SPEC 16.3).

Lecturas adicionales

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    A
    quality
    F
    maintenance
    MCP server that exposes 300+ AI agents as tools via a single API key. Supports listing agents, invoking any agent with chat-completion style messages, checking agent health, and retrieving platform statistics.
    5
    3
  • A
    license
    Not graded
    quality
    C
    maintenance
    A production-ready MCP server for Method CRM API integration. It enables LLMs to interact with Method CRM data through tools for tables, files, users, events, and API key management.
    3
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.

  • Hosted MCP server exposing US hospital procedure cost data to AI assistants

  • MCP server exposing the Backtest360 engine API as tools for AI agents.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/orlando-derm/advancedmd-connector'

If you have feedback or need assistance with the MCP directory API, please join our Discord server