Skip to main content
Glama
marqprochat

personaleasy-mcp-server

by marqprochat

personaleasy-mcp-server

Servidor MCP para la API PersonalEasy | EasyDental Cloud | DentalKids.

Herramientas

Tool

Descripción

Parámetros

personaleasy_get_agendamentos

Busca citas en el período

dt_inicio, dt_termino (YYYY-MM-DD), nm_unidade (opcional)

personaleasy_get_kpi_producao

KPIs de producción para dashboard

dt_inicio, dt_termino, nm_unidade (opc.), nm_prestador (opc.)

personaleasy_get_prestador_por_cpf

ID y nombre del prestador por CPF

cpf (formato 999.999.999-99)

personaleasy_get_unidades

Lista unidades de atención activas

—

Todas las herramientas son de solo lectura (readOnlyHint: true).

Related MCP server: open-dental-mcp

Instalación

npm install
npm run build

Credenciales

Las credenciales nunca están en el código. Configúrelas mediante variables de entorno:

  • PERSONALEASY_API_KEY — la api-key (header x-api-key)

  • PERSONALEASY_CLIENT_ID — el ID del cliente

  • PERSONALEASY_BASE_URL — opcional, por defecto https://prsrb.onrender.com/v1/rpc

Para pruebas locales, copie .env.example a .env y complételo. El .env está en .gitignore — no lo versiones ni lo compartas.

Configuración en Claude Code

claude mcp add personaleasy --env PERSONALEASY_API_KEY=SUA_KEY --env PERSONALEASY_CLIENT_ID=SEU_CLIENT_ID -- node D:/MCPS/personaleasy-mcp-server/dist/index.js

Configuración en Claude Desktop

En claude_desktop_config.json:

{
  "mcpServers": {
    "personaleasy": {
      "command": "node",
      "args": ["D:/MCPS/personaleasy-mcp-server/dist/index.js"],
      "env": {
        "PERSONALEASY_API_KEY": "SUA_KEY",
        "PERSONALEASY_CLIENT_ID": "SEU_CLIENT_ID"
      }
    }
  }
}

Despliegue en Easypanel (Docker)

El proyecto tiene dos modos de ejecución:

  • stdio (dist/index.js) — uso local (Claude Code / Claude Desktop)

  • HTTP (dist/http.js) — uso remoto; es el modo usado por el Dockerfile

En Easypanel, cree un servicio del tipo App apuntando a este repositorio (build mediante Dockerfile) y configure las variables de entorno:

Variable

Obligatoria

Descripción

PERSONALEASY_API_KEY

sí

api-key de la API

PERSONALEASY_CLIENT_ID

sí

ID del cliente

MCP_AUTH_TOKEN

recomendada

token Bearer requerido en el endpoint /mcp (genere un valor aleatorio largo)

PORT

no

por defecto 3000

Exponga el puerto 3000 en el servicio. Endpoints:

  • POST /mcp — endpoint MCP (Streamable HTTP, stateless)

  • GET /health — healthcheck

Instancia en producción

  • URL base: https://dk-projetos-mcps.nv8gf3.easypanel.host

  • Healthcheck: GET https://dk-projetos-mcps.nv8gf3.easypanel.host/health → {"status":"ok"}

  • Endpoint MCP: POST https://dk-projetos-mcps.nv8gf3.easypanel.host/mcp

Para conectar un cliente MCP a esta instancia:

claude mcp add --transport http personaleasy https://dk-projetos-mcps.nv8gf3.easypanel.host/mcp --header "Authorization: Bearer SEU_MCP_AUTH_TOKEN"

Reemplace SEU_MCP_AUTH_TOKEN por el valor configurado en la variable MCP_AUTH_TOKEN del servicio en Easypanel.

Importante: sin MCP_AUTH_TOKEN configurado en el servicio, cualquier persona con esa URL puede consultar los datos de la clínica. Confirme que la variable está definida en producción.

API subyacente

Todas las llamadas van a un único endpoint RPC:

POST {BASE_URL}
Headers: x-api-key
Body: { "clientId": "...", "method": "RPCGet...", "params": { ... } }

Métodos usados: RPCGetAgendamentos, RPCGetKPIPrd, RPCGetPrestadorCPF, RPCGetUnidadeAtendimento.

Available Tools

4 tools
personaleasy_get_agendamentosBuscar agendamentosA
Read-only

Retorna os agendamentos no período informado. Opcionalmente filtra por unidade de atendimento (use personaleasy_get_unidades para descobrir os nomes válidos).

ParametersJSON Schema
NameRequiredDescriptionDefault
dt_inicioYesData inicial do período, formato YYYY-MM-DD (ex.: 2026-01-01)
dt_terminoYesData final do período, formato YYYY-MM-DD (ex.: 2026-01-31)
nm_unidadeNoNome da unidade de atendimento para filtrar (ex.: 'Valinhos'). Vazio retorna todas.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and completeness. The description adds that it returns appointments in a period, but does not disclose any additional behavioral traits (e.g., error handling, performance, or what happens with invalid dates). It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences that cover purpose, optional filtering, and a cross-reference. Every word earns its place with no filler or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the annotations covering read-only and open-world aspects, the description omits any information about the return value format (e.g., fields, structure). Since there is no output schema, the agent is left guessing what the response looks like. Additionally, it does not mention date range limits or error scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds value by telling the agent that the nm_unidade parameter can be filled using personaleasy_get_unidades, providing a cross-reference beyond the schema's inline description. This helps the agent understand where to obtain valid values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns appointments within a specified date period, with optional filtering by unit. The verb 'retorna' and resource 'agendamentos' are explicit. It distinguishes from sibling tools like personaleasy_get_kpi_producao (KPIs) and personaleasy_get_prestador_por_cpf (provider lookup) by focusing on schedule data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a helpful cross-reference to personaleasy_get_unidades for discovering valid unit names, but it does not give explicit guidance on when to use this tool versus alternatives (e.g., when to use personaleasy_get_prestador_por_cpf instead). No 'when not to use' or context for choosing among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

personaleasy_get_kpi_producaoKPIs de produçãoA
Read-only

Retorna dados de produção (KPIs de dashboard) no período informado. Filtros opcionais por unidade e por prestador.

ParametersJSON Schema
NameRequiredDescriptionDefault
dt_inicioYesData inicial do período, formato YYYY-MM-DD
dt_terminoYesData final do período, formato YYYY-MM-DD
nm_unidadeNoNome da unidade para filtrar. Vazio retorna todas.
nm_prestadorNoNome do prestador para filtrar. Vazio retorna todos.

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is clear. The description adds no behavioral contradictions and is consistent with annotations, which is sufficient. No additional behavioral details are needed beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that efficiently conveys the core purpose and filter options. It is front-loaded with the main action ('Retorna dados de produção') and uses no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has 4 parameters with complete schema descriptions, no output schema, and is a simple read-only KPI retrieval, the description adequately covers the tool's functionality. It does not need to explain return values explicitly since the dashboard KPI context is implied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all four parameters with descriptions, formats, and defaults. The description adds no new information about parameters beyond what the schema provides, meeting the baseline but not exceeding it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool returns production KPI (dashboard) data within a given period, mentioning optional filters for unit and provider. While it effectively describes the tool's purpose, it does not explicitly distinguish itself from sibling tools beyond implying it focuses on production KPIs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates when to use the tool (when production KPI data is needed) and notes optional filters, but it offers no guidance on when to NOT use it or how it compares to sibling tools (e.g., scheduling or provider lookups). Usage context is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

personaleasy_get_prestador_por_cpfBuscar prestador por CPFA
Read-only

Retorna o ID e o Nome do prestador a partir do CPF.

ParametersJSON Schema
NameRequiredDescriptionDefault
cpfYesCPF do prestador no formato 999.999.999-99

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the tool is known to be safe and side-effect-free. The description adds that it returns only ID and Nome, which is useful context. However, it does not explain what happens if the CPF is not found (likely empty or error? no indication).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no unnecessary words. It immediately states the output fields and the input key. Perfectly concise for a simple lookup tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (1 parameter, no output schema, simple lookup), the description is mostly adequate. However, it lacks mention of error handling (e.g., CPF not found) and does not specify if the result is guaranteed to be unique. Completeness is acceptable but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (only one parameter 'cpf' with format and description). The description does not add further meaning beyond what the schema already provides—it repeats the purpose. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Retorna o ID e o Nome do prestador a partir do CPF' clearly states the verb (retorna) and resource (prestador por CPF), specifying the key fields returned (ID, Nome). It distinguishes from sibling tools which handle appointments, KPIs, and units.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for searching a provider by CPF, but does not explicitly state when to use this tool versus alternatives, nor does it mention any prerequisites (e.g., need for exactly matching CPF). No guidance on when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

personaleasy_get_unidadesListar unidades ativasA
Read-only

Retorna o ID e o Nome das unidades de atendimento ativas.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, covering safety and data volatility. The description adds that it returns ID and Name of active units. No further behavioral traits (e.g., pagination, ordering, result limits) are disclosed, which would be useful but are not critical given the tool's simplicity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that directly conveys the action, resource, and output fields. Every word is necessary and there is no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read-only listing tool with openWorldHint, the description covers the essential output (ID and Name of active units). The lack of output schema is compensated by the explicit mention of fields. It does not mention response structure or potential edge cases (e.g., empty list), but these are minor omissions given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters (100% coverage by definition). The description correctly implies no inputs are needed. With zero parameters, the baseline is 4; the description does not need to add parameter-level detail beyond stating the output.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Retorna' (returns) and the resource 'unidades de atendimento ativas' (active service units), specifying that ID and Name are provided. It distinguishes well from sibling tools, which cover appointments, KPI, and provider lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied by the tool's purpose—use it to list active units. However, there is no explicit guidance on when to prefer this tool over alternatives, nor any prerequisites or caveats. For a simple parameterless tool, this is adequate but not exemplary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv1.0.0
    • First observedpersonaleasy_get_agendamentos
    • First observedpersonaleasy_get_kpi_producao
    • First observedpersonaleasy_get_prestador_por_cpf
    • First observedpersonaleasy_get_unidades

TDQS

A3.8/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct resource: appointments (agendamentos), production KPIs, provider lookup by CPF, and units. There is no overlap in purpose, and the descriptions clearly differentiate them.

Naming Consistency4/5

All tools follow the pattern `personaleasy_get_<resource>`, using the same prefix and verb. The resource names are in Portuguese, which is consistent with the domain, though the prefix adds redundancy.

Tool Count4/5

Four tools is appropriate for a focused server that provides read-only access to core entities (appointments, KPIs, providers, units). It is not too few for the apparent scope, and each tool serves a clear purpose.

Completeness3/5

The tool set covers reading key entities, but there are obvious gaps: no filtering by provider for appointments, no tool for patients or procedures, and only a CPF-based lookup for providers. Write operations (create, update, delete) are absent, limiting the surface to querying.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    MCP server for the DataGate billing platform API, providing read-only tools to manage customers, invoices, products, agreements, sites, and payments.
    13
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables interaction with Open Dental practice management software, allowing reading of patients, appointments, providers, procedures, and recalls, as well as writing communications back to patient charts via MCP clients.
    14
    7
    MIT