Skip to content
Pedro Gomes
All work

Clínica Aurora MCP server

The clinic schedule published as a Model Context Protocol server, so any MCP client can book, reschedule and cancel through it. The business rules are enforced on the server, not requested in a prompt.

A successful initialize request and capabilities returned by the Aurora MCP endpoint

Who has this problem

An MCP integration needs to separate proposing a schedule change from committing it. The server binds each proposal to a single-use token, checks business policy again at commit and records the decision. Human approval must be collected and enforced by the MCP client or surrounding workflow.

My role

MCP server integrated with the clinic API and its deterministic policy engine.

How to try it

  1. A browser cannot open this endpoint: it speaks a protocol, not a page. A GET returns 406 on purpose.
  2. POST to https://aurora.pgdev.com.br/mcp with Content-Type: application/json, Accept: application/json, text/event-stream and an initialize call. Complete initialization before calling tools/list with the returned session id.
  3. Or connect a compatible MCP client to that URL and inspect the available tools.

Decisions I made

  • Every write takes two calls. The first returns a proposal and a single-use token without touching the schedule; the second submits that operation with the token and the server checks policy again. The token binds the operation; the MCP client is responsible for human approval.
  • The business rules are a deterministic policy engine behind the tools, not instructions in the system prompt. A write the policy refuses comes back as a refusal with the rule code, and the model is told to read ler_politica before promising anything to anyone.
  • Read tools expose the policy and rule-coded decision records so an MCP client can inspect why an operation was allowed or refused.
  • It is the same clinic the chat demo uses, so the two can be compared side by side: one shows a person talking to an agent, the other shows another agent plugging into the same guarded schedule.
  • Protocol version 2025-06-18, streamable HTTP with session ids, running behind Traefik as its own service.

Limits that remain

  • It serves the demo schedule only, the same one the chat demo uses, and that schedule resets on its own.