MCP Server for AI Agents
The EasyDocForms MCP server gives AI agents — Claude, and any other Model Context Protocol client — the ability to turn a blank PDF intake packet into a hosted, mobile-friendly fillable form, hand the patient a link, and retrieve the completed, pixel-exact PDF.
Patient data never enters the model
The server is designed so protected health information cannot pass through the agent's context:
- Imports are blank forms only.
import_pdf_from_urlrequiresblank_form_attestation: trueand takes a URL, never document bytes. get_submissionreturns metadata and an answer count — never the patient's answers. Answers stay server-side, behind your API key.get_completed_pdf_linkreturns a ~10-minute signed URL the agent can hand to a human or an EMR without exposing your API key. Treat it like a fax.external_refmust never contain PHI — it's an opaque correlation id (your visit or order number).
This boundary is enforced by construction and guarded by an automated test suite that asserts no PHI-shaped data survives the MCP boundary.
Tools
| Tool | What it does | |
|---|---|---|
list_templates | List the organization's active form templates | read-only |
import_pdf_from_url | Import a blank PDF intake form (async; requires blank-form attestation) | write |
get_import_status | Poll an import until its template is ready | read-only |
create_fill_link | Mint a hosted URL where a patient fills the form | write |
get_submission | Submission metadata + answer count — never answers | read-only |
get_completed_pdf_link | Short-lived signed download URL for the completed PDF | read-only |
Install
You'll need an API key from the EasyDocForms app: Settings → Integrations → Partner API (shown exactly once).
go install github.com/easydocforms/easydocforms-mcp/cmd/easydocforms-mcp@latestOr run the Docker image (no Go toolchain needed):
docker run -i --rm -e EASYDOCFORMS_API_KEY=edfk_live_... ghcr.io/easydocforms/easydocforms-mcp:latestClaude Code
claude mcp add easydocforms --env EASYDOCFORMS_API_KEY=edfk_live_... -- easydocforms-mcpClaude Desktop (or any MCP client)
{
"mcpServers": {
"easydocforms": {
"command": "easydocforms-mcp",
"env": { "EASYDOCFORMS_API_KEY": "edfk_live_..." }
}
}
}| Variable | Required | Purpose |
|---|---|---|
EASYDOCFORMS_API_KEY | yes | edfk_live_* Partner API key |
EASYDOCFORMS_BASE_URL | no | API base URL override |
A typical session
"Import the intake form at https://clinic.example.com/forms/new-patient.pdf (it's blank), then give me a fill link for visit 8675309."
The agent imports the PDF, polls until the template is ready, narrates what the pipeline found (signature blocks, consent sections, anything flagged review_required for staff to double-check in the editor), then mints a link with external_ref: "visit-8675309" and hands back a URL you can text or email to the patient.
After the patient submits:
"Is the PDF for that visit ready?"
The agent looks up the submission (metadata only — never the answers) and returns a short-lived signed download link for the completed PDF.
Under the hood
The server wraps the Partner API via the Go SDK and is open source at github.com/easydocforms/easydocforms-mcp. Questions or access requests: [email protected].