Skip to content

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_url requires blank_form_attestation: true and takes a URL, never document bytes.
  • get_submission returns metadata and an answer count — never the patient's answers. Answers stay server-side, behind your API key.
  • get_completed_pdf_link returns 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_ref must 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

ToolWhat it does
list_templatesList the organization's active form templatesread-only
import_pdf_from_urlImport a blank PDF intake form (async; requires blank-form attestation)write
get_import_statusPoll an import until its template is readyread-only
create_fill_linkMint a hosted URL where a patient fills the formwrite
get_submissionSubmission metadata + answer count — never answersread-only
get_completed_pdf_linkShort-lived signed download URL for the completed PDFread-only

Install

You'll need an API key from the EasyDocForms app: Settings → Integrations → Partner API (shown exactly once).

sh
go install github.com/easydocforms/easydocforms-mcp/cmd/easydocforms-mcp@latest

Or run the Docker image (no Go toolchain needed):

sh
docker run -i --rm -e EASYDOCFORMS_API_KEY=edfk_live_... ghcr.io/easydocforms/easydocforms-mcp:latest

Claude Code

sh
claude mcp add easydocforms --env EASYDOCFORMS_API_KEY=edfk_live_... -- easydocforms-mcp

Claude Desktop (or any MCP client)

json
{
  "mcpServers": {
    "easydocforms": {
      "command": "easydocforms-mcp",
      "env": { "EASYDOCFORMS_API_KEY": "edfk_live_..." }
    }
  }
}
VariableRequiredPurpose
EASYDOCFORMS_API_KEYyesedfk_live_* Partner API key
EASYDOCFORMS_BASE_URLnoAPI 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].

HIPAA-aware documentation for independent healthcare practices.