Wyrd Scribe

com.wyrdmcp由 wyrdmcp.com 发布v0.2.1更新于 Oct 24, 2026

Creates new pages with provenance and records lineage in a ledger under .wyrd/.

已验证STDIO仅桌面文件与存储知识与记忆

概览

AI 生成的概览

让助手在你明确授权的一个文件夹中创建带来源标记的 Markdown 页面,并在账本中记录其来源脉络。

可以做什么
Wyrd Scribe 是一个仅能创建页面的 MCP 服务器,只在你明确授权的一个文件夹内写入新的 Markdown 页面。其 write_page 工具接收相对路径、页面内容以及 derived_from 条目,跨度可用字节偏移与长度、唯一出现的引文,或两者同时给出。每次成功调用都会先创建页面,再向 .wyrd/lineage.jsonl 追加一条 wyrd.lineage/v1 记录,包含页面哈希与被引用来源。它不能覆盖、重命名或删除页面,也不提供查询来源脉络的工具。
适用场景
当助手需要在知识库中起草新笔记或文档,同时保留每个页面源自哪些既有资料的可审计记录时,适合使用。它适用于以来源追溯为重点、页面创建后不得修改或删除的写作流程。
运行要求
通过 npm 包 wyrd-scribe 以 stdio 在本地运行(需要 Node.js)。授权文件夹必须已包含 .wyrd/ 目录,可通过 --grant 或环境变量 WYRD_GRANT 指定。可选的 HTTP 模式需要 --http、通过 WYRD_WRITE_TOKEN 或 --write-token-file 提供的 Scribe 令牌,非回环地址还需 --http-public 以及 TLS 证书和密钥文件。WYRD_SCRIBE_TIER 选择层级,默认为 A。
安装前请注意
它会在授权文件夹内写入文件并向账本追加记录;账本追加失败时已创建的页面会保留,而在同一路径重试会被拒绝。层级 B 增加受保护的页面覆盖。HTTP 模式需要 WYRD_WRITE_TOKEN 密钥,公开地址还需 TLS 材料;在 POSIX 上令牌文件不得允许组或其他用户读取。其隔离是限定范围的文件夹边界,而非操作系统沙箱,绑定的地址可能通过防火墙、VPN、容器或虚拟机路由被访问到。

安装

在 SourceWeft 中

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

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

wyrd-scribe

wyrd-scribe is a Tier-A MCP server for creating provenance-stamped Markdown pages inside one folder you explicitly grant. Tier A is create-only: it can create a new page and append its lineage record, but it cannot overwrite, rename, or delete a page, and it exposes no lineage-query tool.

Installation and configuration

Install it with npm install -g wyrd-scribe. The executable is wyrd-scribe. Stdio is the default, so an MCP client configuration can launch it directly:

json
{  "command": "wyrd-scribe",  "args": ["--grant", "/absolute/path/to/folder"]}

The granted folder may instead be supplied as WYRD_GRANT. An explicit --grant argument takes precedence over WYRD_GRANT. WYRD_SCRIBE_TIER selects the tier and defaults to A when absent. Tier B adds overwrite_page; tier C is recognised but unavailable.

HTTP and HTTPS

HTTP starts only with --http <port> or --http <host>:<port>. A port alone binds to 127.0.0.1; --http 127.0.0.1:0 asks the system for a free loopback port and prints the actual endpoint to stderr. A concrete non-loopback address also requires --http-public and valid TLS material; startup refuses before listening without both. The route is POST /mcp.

Generate a fresh Scribe token with wyrd-mcp token, independently of the Reader token. Supply exactly one source: WYRD_WRITE_TOKEN or --write-token-file <absolute-path>. The token must be one canonical, unpadded base64url encoding of 32 bytes. Token files may end with one LF or CRLF; on POSIX they must not permit group or world access. The Scribe never reads WYRD_READ_TOKEN.

sh
WYRD_WRITE_TOKEN=<Scribe-token> wyrd-scribe --grant /absolute/path/to/vault --http 127.0.0.1:8788

For network access, generate a certificate with wyrd-mcp cert --host <hostname-or-IP> and configure a concrete interface address. The certificate must be trusted by the client and cover the hostname or IP the client uses. The Reader README documents certificate generation and platform trust steps.

sh
WYRD_WRITE_TOKEN=<Scribe-token> wyrd-scribe --grant /absolute/path/to/vault --http 192.168.1.20:8788 --http-public --tls-cert /absolute/path/to/wyrd-cert.pem --tls-key /absolute/path/to/wyrd-key.pem

Every request needs Authorization: Bearer <Scribe-token>. Origin, when present, must exactly match a startup-disclosed allowed Origin. HTTP request bodies are capped at 1 MiB including the encoded JSON envelope; stdio has no such cap. A write already admitted finishes even when its client disconnects, and graceful shutdown waits for its page and ledger append without a timeout. Every cited source remains inside the same granted folder. Firewall, VPN, container and virtual machine routing can expose a bound address; the Scribe checks the address once at startup.

write_page

Tier A exposes write_page with this exact input shape:

json
{  "path": "Notes/new-page.md",  "content": "Page text\n",  "derived_from": [    {      "source": "Sources/source.md",      "spans": [        { "offset": 0, "length": 9 },        { "quote": "source text" },        { "offset": 0, "length": 9, "quote": "source te" }      ]    }  ]}

path and every derived_from[].source are relative to the granted folder. Each span is exactly one of: byte offset plus positive byte length; a non-empty, uniquely occurring quote; or all three fields, in which case the bytes and quote must agree. Unknown input keys are refused.

The granted folder must already contain a .wyrd/ directory. The Scribe does not create that directory. On the first eligible write it mints .wyrd/scribe.json with this shape:

json
{  "schema": "wyrd.scribe/v1",  "vault_id": "a server-minted UUID v4",  "write_frontmatter": false}

write_frontmatter defaults to false. Set it to true in the vault configuration to opt into a wyrd_lineage key in created pages.

Outcomes and recovery

A successful call creates the page first and then appends one LF-terminated JSON record to .wyrd/lineage.jsonl. If the ledger append fails after page creation, the page is retained. The result is PAGE_WRITTEN_LEDGER_FAILED, includes the created-page information and underlying cause, and may report retained bytes. Inspect the retained page and ledger before repairing or retrying; a retry at the same page path is create-only and will refuse EXISTS.

Each ledger line is a wyrd.lineage/v1 object with event: "page_written", a server-minted event_id, recorded_at, the wyrd-scribe writer and version, the vault UUID, the created page's path and SHA-256 content identity, and a sources array. Every source carries its grant-relative path and content identity; every span records byte offset and length plus stored quote text, byte counts, full-quote SHA-256, and whether the stored text was truncated.

When frontmatter projection is enabled, the created page receives one wyrd_lineage key containing single-line JSON. The projection carries the schema, event, event ID, timestamp, writer, vault, and sources. It deliberately omits the page identity and page content hash; event_id joins it to the complete ledger record.

Security boundary and limits

All granted-folder reads and writes go through wyrd-fence. The containment guarantees, hard-link limits, residual filesystem races, and recovery consequences are defined in the Fence's authoritative Security boundary and limits section. The Scribe additionally refuses directly addressed Arc/ targets. Tier A creates pages exclusively; Tier B can replace a page only with its expected SHA-256. These controls are a scoped filesystem boundary, not an operating-system sandbox.

Privacy and data flow

The server uses stdio by default and opens a network listener only with --http. It reads the vault configuration and cited source bytes inside the granted folder. Tier A writes the new page, the minted config when needed, and the lineage ledger there; Tier B can also replace a page. The connected MCP client receives tool metadata and the structured result or refusal, including lineage and recovery information. Initialization instructions also disclose the granted folder's canonical absolute path. The Scribe does not return uncited source-file contents.

Build and test from source

From the workspace root:

sh
npm installnpm --workspace wyrd-fence run buildnpm --workspace wyrd-mcp run buildnpm --workspace wyrd-scribe test

The package's test lifecycle builds the Reader prerequisite before running the Scribe suite.

Release notes

0.2.1 — 2026-10-19

Updates the exact wyrd-fence dependency to 0.4.0. No Scribe tool behavior changes.

License

Apache-2.0. See LICENSE.

来源:packages/wyrd-scribe/README.md,提交 2ab2c20

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

3
  1. v0.2.1最新Oct 20, 2026
  2. v0.2.0Oct 6, 2026
  3. v0.1.1Sep 23, 2026

评分

已满足适用检查项的 50%

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

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分