EasyDocForms

Healthcare intake for agents: import blank PDFs, create patient fill links, fetch completed PDFs.

OtherGov0.1.2

easydocforms-mcp

CI

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_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).

Tools

ToolWhat it does
import_pdf_from_urlImport a blank PDF intake form (async; requires blank-form attestation)
get_import_statusPoll an import until its template is ready
list_templatesList the organization's active form templates
create_fill_linkMint a hosted URL where a patient fills the form
get_submissionSubmission metadata + answer count — never answers
get_completed_pdf_linkShort-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

VariableRequiredPurpose
EASYDOCFORMS_API_KEYyesedfk_live_* Partner API key
EASYDOCFORMS_BASE_URLnoAPI 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

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
docker run -i --rm ghcr.io/easydocforms/easydocforms-mcp:0.1.2

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "com-easydocforms-easydocforms-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/easydocforms/easydocforms-mcp:0.1.2"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

ghcr.io/easydocforms/easydocforms-mcp:0.1.2docker

Compatible MCP Clients

EasyDocForms works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More