About easydocforms
easydocforms is an MCP server for healthcare organizations that turns blank PDF intake forms into hosted fill links and retrieves completed PDFs. Patient answers remain server-side; the agent context receives only submission metadata and an answer count.
Key features
- 01Import blank PDFs and poll processing status
- 02List organization form templates
- 03Create patient fill links
- 04Retrieve submission metadata without answers
- 05Create short-lived PDF download links
Use cases
- 01Turn new-patient forms into online intake flows
- 02Send patients a form link
- 03Check whether a form submission is ready
- 04Retrieve a completed PDF for a human or EMR
MCP support
The stdio MCP server connects to the EasyDocForms Partner API through tools. It provides tools for form import, templates, fill links, submission metadata, and completed-PDF links; patient answers are not returned to the agent.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
docker run -i --rm -e EASYDOCFORMS_API_KEY -e EASYDOCFORMS_BASE_URL ghcr.io/easydocforms/easydocforms-mcp:0.1.2EASYDOCFORMS_API_KEYSecretEasyDocForms Partner API key (edfk_live_*), created under Settings → Integrations → Partner APIEASYDOCFORMS_BASE_URLOptional API base URL overrideLocal servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
ghcr.io/easydocforms/easydocforms-mcp:0.1.2stdioTools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEeasydocforms-mcp
An MCP server for healthcare intake forms: give an AI agent 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 — without any PHI ever entering the agent's context.
Built on EasyDocForms, whose document-understanding pipeline (field detection, checkbox semantics, consent blocks, signature models) runs healthcare intake in production. This server wraps the Partner API via the easydocforms-go SDK.
The PHI boundary (read this first)
This server is designed so protected health information never passes through the model:
- 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).
Tools
| Tool | What it does |
|---|---|
import_pdf_from_url | Import a blank PDF intake form (async; requires blank-form attestation) |
get_import_status | Poll an import until its template is ready |
list_templates | List the organization's active form templates |
create_fill_link | Mint a hosted URL where a patient fills the form |
get_submission | Submission metadata + answer count — never answers |
get_completed_pdf_link | Short-lived signed download URL for the completed PDF |
Install
go install github.com/easydocforms/easydocforms-mcp/cmd/easydocforms-mcp@latest
You'll need an API key from the EasyDocForms app: Settings → Integrations → Partner API (shown exactly once).
Or run the Docker image (no Go toolchain needed):
docker run -i --rm -e EASYDOCFORMS_API_KEY=edfk_live_... ghcr.io/easydocforms/easydocforms-mcp:latest
Claude Code
claude mcp add easydocforms --env EASYDOCFORMS_API_KEY=edfk_live_... -- easydocforms-mcp
Claude Desktop (or any MCP client)
{
"mcpServers": {
"easydocforms": {
"command": "easydocforms-mcp",
"env": { "EASYDOCFORMS_API_KEY": "edfk_live_..." }
}
}
}
Environment
| Variable | Required | Purpose |
|---|---|---|
EASYDOCFORMS_API_KEY | yes | edfk_live_* Partner API key |
EASYDOCFORMS_BASE_URL | no | API base URL override |
Try it
With MCP Inspector:
EASYDOCFORMS_API_KEY=edfk_live_... npx @modelcontextprotocol/inspector easydocforms-mcp
A typical agent 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, polls, mints a link with external_ref: "visit-8675309", and hands back a URL. After the patient submits, "Is the PDF for that visit ready?" → get_submission + get_completed_pdf_link.
Transport
stdio only, credentials from the environment — per the MCP spec's guidance for locally-run servers. A hosted remote variant (Streamable HTTP + OAuth 2.1) is planned as a second wave.
Development
go test ./... -race
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.