Anchorify + MCP

Anchorify ships a built-in Model Context Protocol server. Point any MCP client at it and the agent gets first-class tools to publish a document to a stable URL, list and update shares, manage access, and read comments, versions, and suggestions — no shelling out to the CLI.

It's the same anchorify npm package: the server is the anchorify mcp subcommand, not a separate install.

Install#

npm i -g anchorify

Get a per-user token at https://anchorify.io/dashboard/settings (it's the same token anchorify login uses).

Configure your MCP client#

Add one stanza. The server authenticates with ANCHORIFY_TOKEN from its environment — put your token there.

Claude Desktop (claude_desktop_config.json), Cursor (.cursor/mcp.json), or any client that speaks stdio MCP:

{
  "mcpServers": {
    "anchorify": {
      "command": "anchorify",
      "args": ["mcp"],
      "env": {
        "ANCHORIFY_TOKEN": "your-token"
      }
    }
  }
}

To target a self-hosted or dev instance, add "ANCHORIFY_HOST": "http://localhost:3737" to env (defaults to https://anchorify.io).

Restart the client; "anchorify" appears in its tool list.

Tools#

Flat tools mirroring the CLI verbs. All take a share argument (a slug, id, path, or full URL) where they act on an existing share — including shares your user doesn't own but has been granted access to, since the resolver applies the same read check as the share page.

Tool What it does
anchorify_publish Publish new content → returns the share URL
anchorify_publish_file Publish a file from disk, including binaries (PDF, images, zips) → returns the share URL
anchorify_update Replace an existing share's content (snapshots a version)
anchorify_list List your shares
anchorify_view Fetch a share's raw source
anchorify_delete Delete a share
anchorify_set_access Set link access (restricted/view/comment/suggest) + indexing
anchorify_set_content_type Change how a share renders (markdown, code, json, slides…) without touching its content
anchorify_set_password Set or clear a view password
anchorify_rename Rename a share's slug (old URL 301s)
anchorify_move Move a share into another project
anchorify_comments_list List comments (with anchors, reactions, and resolved state)
anchorify_comment_add Add a comment (document-level or anchored)
anchorify_comment_reply Reply to a comment — recorded against the one it answers
anchorify_comment_resolve Mark a comment handled (or re-open it)
anchorify_comment_edit Rewrite a comment you wrote
anchorify_comment_delete Soft-delete a comment (yours, or anyone's if you own the doc)
anchorify_versions_list List version history
anchorify_version_restore Restore a share to an older version
anchorify_suggestions_list List a share's pending suggestions, or your own
anchorify_share_analytics Views, unique visitors, downloads + a 30-day series for one share

Example prompts#

  • "Publish this proposal to Anchorify and give me the link."
  • "Upload ./q1-deck.pdf to Anchorify and send me the URL."
  • "List my Anchorify shares and update q3-report with this new draft."
  • "Make client-onboarding view-only and not indexed."
  • "Show me the comments on the pricing-memo share."
  • "Apply every comment on pricing-memo, republish, then reply and resolve each one."
  • "Did the client ever open q1-report? How many times?"
  • "The config-dump share is rendering as prose — it's YAML. Fix it."
  • "Check the view counts on everything I published this month and tell me what got ignored."

Notes#

  • Closing the loop: after applying a comment's feedback and republishing, anchorify_comment_reply + anchorify_comment_resolve are how you record it. Without them the threads stay open on a document where everything has already been fixed, and a human has to reconcile them by hand. There is no bulk resolve — per-comment only.
  • Auth: the server only does what your token can do — your own org's shares. Public reads (anchorify_view on a public share) work without a token; everything else needs ANCHORIFY_TOKEN.
  • Transport: stdio only today. A hosted/remote (SSE + OAuth) server is a future addition.
  • No extra endpoints: the MCP server is a pure client of the same HTTP API the CLI uses, so behavior matches anchorify <verb> exactly.
  • Text vs. files: anchorify_publish carries content as a JSON string, so it can only publish text. Reach for anchorify_publish_file whenever the thing you want to share is a file on disk — it reads the bytes locally and uploads them, and it handles text files too. Pass its share argument to replace an existing share's bytes at the same URL.
  • anchorify_update is text-only. Against a file-backed share it returns 409 {"error":"share is a file, not text"} — its content would be written while the stored bytes kept being served. Use anchorify_publish_file with share instead.