Docfarm

io.github.lavanry由 GitHub 账号 lavanry 发布v1.0.0更新于 Oct 24, 2026

Publish, edit, share and track HTML docs and decks from chat, with view analytics.

已验证Streamable HTTP可网页运行效率与工作流文件与存储数据与分析

概览

AI 生成的概览

Docfarm 让助手发布、编辑、分享并追踪 HTML 文档和演示稿,包括浏览分析和协作者邀请。

可以做什么
列出并读取用户的文档(含他人分享的文档),获取 HTML、PDF、Markdown 文档的原始文件或限时下载链接。将 HTML 内容或已上传的大文件发布为带分享链接的托管文档,并可预览新文档将获得的链接。通过替换 HTML 片段编辑现有文档、复制文档,或把 PDF 和 PowerPoint 重建为适配手机的 HTML 页面。管理密码保护、访客邮箱收集、下载权限、通知和标题等归属设置,以及删除文档。查看谁读过文档,包括浏览次数、阅读时长和最近访客,并按邮箱邀请协作者。加载 Docfarm 技能和建站规范,并在对话中以内嵌实时视图展示文档。
适用场景
适合把对话产出变成可分享的网页或演示稿、持续就地修改、控制可见范围,并了解收件人是否真的读过。也适合把已有的 PDF 或幻灯片转成适合手机阅读的 HTML。
运行要求
远程 MCP 端点 mcp.doc.farm,通过 streamable HTTP 访问;未声明任何软件包、环境变量或请求头。需要 Docfarm 账号,连接可能同时访问已登录的农场和另行连接的账号。
安装前请注意
多个工具会修改或销毁数据:用已存在的标题发布会就地覆盖该文档并保留其链接,delete_doc 不可撤销,会删除文档、链接、分析数据、评论和存储文件。设置更改可能启用密码保护或邮箱收集,邀请会向第三方发送邮件。覆盖或删除前应先与用户确认。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Docfarm,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.lavanry%2Fdocfarm/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "docfarm": {
      "type": "http",
      "url": "https://mcp.doc.farm/mcp"
    }
  }
}

工具

22

whats_possible

What docfarm can do

Show a grouped overview of everything docfarm can do for the user — reading, editing, sharing, tracking, drafting follow-ups, and collaborating. Call this when the user asks 'what can you do?', 'what does docfarm do?', 'show me what's possible', 'help', or similar capability questions. Cheap and self-contained — no doc lookup needed.

无需输入参数。

get_skills

Loading skills...

Load a Docfarm skill, written instructions for a task that you then follow. docfarm/onboarding is the short tour for someone who has just connected Docfarm. Pass `id` (one id, or an array) for the full skill, `query` to search by keyword, or nothing to list every skill by name and description. When the person asks to use a Docfarm skill by name, call this with that id first.

输入参数idquery

get_build_brief

House standard and this farm's brand

READ THIS FIRST, before writing a single line of HTML for this user. Returns the docfarm house standard (how to pick the page archetype, type scale, spacing, logo rules, motion, budgets and language rules) plus this user's own brand: their colours, their typefaces, and asset tokens for their real logo and any font file they own. About 3,000 tokens and it is the difference between a page that looks like their company and a generic template. Write any asset token verbatim where the file goes (e.g. <img src="DF_ASSET_LOGO_1">), then pass the same doc name as `brand_from` on host_html_content and docfarm swaps in the real bytes. Never paste base64 yourself: the token is smaller, exact and free. Every page published to docfarm is scored against this standard on the way in, so reading it first is how you score well the first time instead of fixing afterwards.

输入参数accountdoc_name

list_docs

List your docs

List the user's docs: first the ones they own, each with its share link, then the ones other people shared with them and how an edit to each behaves (overwrites the original, or makes the user's own copy).

输入参数account

get_doc_status

View doc stats

Who read a doc and how. Returns the share link, total and unique views, average reading time, when it was last opened, and the ten most recent viewers with their time, pages and whether they read to the end. Use it for 'who saw it', 'how is it doing', 'what is the link', and as the material for a follow-up email that refers to what each person actually read. Owner only; viewer data stays with the doc's owner. Identify the doc via doc_name (fuzzy-matched) or slug.

输入参数slugaccountdoc_name

update_doc_settings

Update doc settings

Change a doc the user OWNS: password protection (password_on / password_value), ask viewers for their email before viewing (ask_name), allow file downloads (allow_downloads), view notifications for the owner (notify), and the doc's title (title). Only the fields you pass are changed. Renaming changes the display title only and keeps the link. To change the link itself, the part after the last slash, pass new_slug. That breaks the old link for everyone who has it, so the first call changes nothing and returns a warning with both links. Pass it on, and only after the person says yes, call again with the same new_slug and confirm_new_link true. Identify the doc via doc_name (fuzzy-matched) or slug.

输入参数slugtitlenotifyaccountask_namedoc_namenew_slugpassword_onpassword_valueallow_downloadsconfirm_new_link

delete_doc

Delete a doc

Permanently delete a doc the user OWNS — removes the document, its share link(s), all view/analytics data, chat, comments, suggestions, collaborators, and the stored file. IRREVERSIBLE. Only the owner can delete. Confirm with the user before calling if there's any ambiguity. Identify the doc via `doc_name` (fuzzy-matched) or `slug`.

输入参数slugaccountdoc_name

invite_collaborator

Invite a collaborator

Invite someone to collaborate on a doc the user OWNS, by email, so it lands in their docfarm. If they're already a docfarm user the doc appears in their farm immediately; if not, it waits until they sign up with that address, and the result says whether an invite email went out. REQUIRES the collaborator's `email` AND `allow_overwrite` (true = their edits overwrite the original; false = their edits fork into a copy they own, auto-shared back to the inviter). If you don't have the email, ask for it. If the user hasn't said whether the person should edit directly or only make a copy, ask before calling, don't guess. Identify the doc via `doc_name` (fuzzy-matched) or `slug`.

输入参数slugemail必填accountdoc_nameallow_overwrite必填

host_html_content

Host an HTML doc

Host an HTML doc on docfarm and return its share link. A name that exactly matches an existing doc's title, ignoring case and surrounding spaces, overwrites that doc in place, keeping its share link, password, and view stats, so anyone holding the URL sees the new version. Any other name creates a new doc. A similar but different name, such as "Pricing" next to "Pricing final", also creates a new doc and leaves the other one untouched, and the response names that doc so you can offer to update it instead. To update a doc, reuse its exact title. Takes the HTML inline, so it works in any environment. For a small change to an existing doc, `get_doc_html` + `patch_doc` sends far less content. Every page is scored against the docfarm house standard on the way in and the score comes back in the response; call `get_build_brief` BEFORE you write the HTML so you meet the standard first time rather than fixing afterwards. Before you publish a NEW doc, call `suggest_link`, show the person the link it returns and ask whether they want a different ending, then pass the ending they settle on as `slug`.

输入参数html必填name必填slugaccountreplacebrand_from

duplicate_doc

Duplicate a doc server-side

Server-side copy of any HTML doc the user can read (their own OR shared with them) into their own farm under a new name. THE fast path for building a modified version of an existing doc: content never passes through your context — duplicate in ~1s, then use patch_doc for the differences. Vastly faster than get_doc_html + re-hosting.

输入参数slugaccountdoc_namenew_name必填

get_upload_url

Get direct-upload URL

Step 1 of 2 for hosting a large HTML file that is already on disk, without sending its bytes through the model's context. Returns a short-lived signed upload URL; upload the file to it with a direct HTTP PUT (Content-Type: text/html), then call `finalize_upload` with the returned upload_path and a doc name. Requires a shell and unrestricted outbound HTTP, so the PUT will not succeed where outbound network access is restricted; `host_html_content` accepts the HTML inline and works in any environment.

输入参数account

finalize_upload

Publish an uploaded doc

FAST PATH step 2/2: after PUTting the file to the signed URL from `get_upload_url`, call this to publish. NEW name → new doc + share link. Name matching an EXISTING HTML doc → updated in place, same share link. Verifies the uploaded object exists before publishing.

输入参数name必填slugaccountupload_path必填

get_doc_html

Read a doc's HTML

Read the current HTML body of any docfarm HTML doc the user has access to — their own docs OR docs other people have shared with them (as collaborator or via share link). Returns title, share URL, the caller's role (owner / collaborator / reader), and the full HTML. ESSENTIAL precursor to `patch_doc`: call this first whenever the user asks for any change to a doc you don't have in context, so you can see what's there and construct accurate before/after snippets. Pass `doc_name` (easiest, fuzzy-matched) or `slug`. Embedded base64 images are stripped to placeholders by default (huge docs become readable in one call), so hosting a stripped copy back would drop those images from the doc; edit via patch_doc, or re-fetch with strip_data_uris: false for the byte-exact original. Large docs page via offset/max_chars — the response tells you the offset for the next slice.

输入参数slugoffsetaccountdoc_namemax_charsstrip_data_uris

get_doc_url

Get download URL

Get a time-limited signed URL that downloads the raw file of any doc the user has access to — HTML, PDF, Markdown, anything stored on docfarm. Use this when you need to hand the file off to another tool or LLM, when the user asks for a download link, or when the doc isn't HTML (where get_doc_html doesn't apply). URL expires after `ttl_seconds` (default 3600, max 86400).

输入参数slugaccountdoc_namettl_secondsdownload_filename

patch_doc

Edit a doc (snippet patch)

Edit an existing hosted doc by replacing a snippet of its HTML. DEFAULT TOOL for ANY edit to a doc the user already has — typo, copy change, restyle, new section, anything. ~50 tokens instead of ~7000 for re-hosting. Workflow: (1) if you don't have the current HTML in context, call `get_doc_html` first to read it. (2) construct `before_snippet` as a unique chunk of the existing HTML and `after_snippet` as its replacement. Pass EITHER `doc_name` (easiest) OR `slug`. Ambiguous match → fails with context for each candidate. Preserves share link, password, view counts, comments. Patching sends only the changed snippet, so it costs far less than re-sending a whole doc. For several edits at once ("fix the typo AND change the CTA AND update the date") pass a `patches` array instead of before/after: all of them land atomically or none do, each validated after the previous one applied.

输入参数slugaccountpatchesdoc_nameafter_snippetbefore_snippetoccurrence_index

rebuild_doc

Rebuild a deck as a live page

Rebuild a PDF or PowerPoint the user already has on docfarm into a live HTML page built to the house standard, keeping every fact and reorganising the layout so it reads on a phone. This is the retrofit: it does NOT reproduce the original layout, it rewrites the document into one of four archetypes. Takes about three minutes, so this tool STARTS the rebuild and returns immediately with a rebuild_id. Tell the user it is building, then call `check_rebuild` to collect it. PDF and PowerPoint only today. Before you start, ask the user whether they have another doc in their farm whose brand this should match, and pass it as `brand_from`. It is one question and it is the difference between their brand and a generic page, because an HTML doc in their farm usually carries the real logo file and sometimes the real typeface. Do not ask them how it should look: the shape of the page is decided from what the document is for.

输入参数slugaccountdoc_namebrand_from

check_rebuild

Collect a finished rebuild

Check a rebuild started by `rebuild_doc` and publish it when it is done. Returns the current stage while it is still building, so call it again after a pause. When the rebuild has finished this publishes it as a new HTML doc in the user's farm and returns the share link and the quality scores. Safe to call repeatedly: publishing twice returns the same doc.

输入参数nameaccountrebuild_id必填

show_doc

Show a doc in the chat

Open a doc inside the chat as a live view of the page. In hosts that render MCP Apps (claude.ai, Claude Desktop, Claude mobile) the doc appears in the conversation; the person can read it, switch on Edit text, click any heading or paragraph, retype it and save, and the share link shows the change at once. Call it when they ask to see, preview, check or hand-edit a doc, and whenever they paste a doc.farm link into the conversation: open it with show_doc first, then answer. host_html_content, patch_doc and duplicate_doc already show this view after they run, so do not call show_doc straight after them. Text-only hosts get the share link.

输入参数slugaccountdoc_name

app_read_doc

Doc view, read

Used by the docfarm doc view inside the chat, not by the assistant. Returns a doc's HTML annotated for in-place text editing plus a content revision. Assistants read docs with get_doc_html instead.

输入参数slug必填account

app_apply_edits

Doc view, save text edits

Used by the docfarm doc view inside the chat, not by the assistant. Saves text the person retyped in the view as exact edits of the stored HTML, guarded by the revision app_read_doc returned. Assistants edit docs with patch_doc instead.

输入参数rev必填slug必填edits必填account

list_accounts

List connected farms

List the farms this connection can reach: the signed-in account, plus the connected account when the person has one (docfarm's work/personal split, two separate farms held by one person). Call this FIRST whenever a request could concern either farm, or when the person says "my personal", "my work", "my other account", or names an address that is not the signed-in one. Then pass `account` on the tool you actually want. Docs, links, viewers and analytics never mix between the two.

无需输入参数。

版本历史

1
  1. v1.0.0最新Oct 11, 2026

评分

已满足适用检查项的 83%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分

    请声明包含 README 的 GitHub 仓库,或在 OAuth 受保护资源元数据中提供 resource_documentation。

  • 许可证不适用

    托管服务按其提供方的条款使用,因此这里不要求许可证。此检查项不计入百分比。