Ooxml Ledger MCP server
Edit Office documents and prove no edit went unrecorded
0 stars71 downloads/wk
Reviews
Write oneNobody has reviewed Ooxml Ledger yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Ooxml Ledger tools (14, 2 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
apply_editsApply `edits` to `session_id`'s document and journal the operations.
close_documentClose `session_id`, discarding its working directory.
commit_documentSeal `session_id` into a receipt, enforcing the accountability gate.
delete_paragraphwrite actionDelete one paragraph of `session_id`'s document and journal the operation.
describe_structureDescribe the document behind `session_id`.
digestDigest `document` under ooxml-canon/1, optionally with per-part digests.
export_receiptExport the receipt matching `document`'s current digest.
find_textSearch `session_id`'s document for `query`.
insert_paragraphwrite actionInsert a paragraph beside the anchor and journal the operation.
list_receiptsList the receipts stored beside `document`.
open_documentOpen `document` and return a session id.
preview_editsReport what `edits` would do to `session_id`'s document.
server_infoVersions, allowed roots, and what this build can and cannot do.
verifyVerify `document`, looking its receipt up by digest unless one is given.
Public scan report
scanner v0.1.10 · 2026-10-03 · same rubric, same numbers if you re-run it
- Code scan41 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 20 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How Ooxml Ledger compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 92/100
- higher than 93% of 48,243 servers
- Tools
- 14
- the typical server has 7
- Tools that change things
- 14%
- typical: 0%. Fewer write tools means less an agent can break
- Downloads a week
- 71
- more than 53% of 12,306 servers with a package
What its tools let an agent do: 9 read · 2 create · 1 change · 1 delete · 1 run or deploy
Install Ooxml Ledger in Claude Code, Cursor or VS Code
claude mcp add mcp-ooxml-ledger -- uvx mcp-ooxml-ledger
What the publisher says
From the Ooxml Ledger repository's README, as published. We do not edit it. Read it on GitHub
mcp-ooxml-ledger
<!-- The MCP registry proves package ownership by fetching this README (served via PyPI, per pyproject.toml's readme = "README.md") and grepping for the marker below. Do not delete it as "stray" — removing it fails registry publication validation. --> <!-- mcp-name: io.github.Anselmoo/mcp-ooxml-ledger -->
An MCP server that edits Office documents and refuses to write one where an edit went unrecorded.
Before sealing a session it replays every recorded operation against the document's baseline and compares the result to what is actually on disk. A change no operation explains means the commit is refused. Of ~18 competing MCP document-editing projects, none gates the write on that check. The refusal is the product.
Setup
uv add mcp-ooxml-ledgerAdd to .mcp.json (project) or claudedesktopconfig.json (desktop — use an absolute path, ${CLAUDEPROJECTDIR} isn't expanded there):
{
"mcpServers": {
"ooxml-ledger": {
"command": "uv",
"args": ["run", "--project", "${CLAUDE_PROJECT_DIR}", "ooxml-ledger-mcp"],
"env": { "OOXML_LEDGER_ROOTS": "${CLAUDE_PROJECT_DIR}" }
}
}
}Needs uv on PATH; nothing else installed globally. Invoking the ooxml-ledger-mcp script directly gives ENOENT — it lives in the project venv, not your shell's PATH.
OOXMLLEDGERROOTS is the security boundary. An os.pathsep-separated list; every
path any tool receives is resolved inside it and refused outside. Unset, it defaults to the
server's working directory — set it deliberately, since export_receipt writes anywhere
inside a root.
Tools
Typical loop:
open_document → find_text → preview_edits → apply_edits → commit_document → verifysid = open_document(document="report.docx")["session_id"]
find_text(sid, query="Q3 revenue") # → part, para_id, para_hash
preview_edits(sid, edits=[...], author="alice") # → what WOULD happen; writes nothing
apply_edits(sid, edits=[...], author="alice", mode="tracked")
commit_document(sid) # → refuses if anything is unaccounted for
verify("report.docx") # → verified | unknown | failedpreviewedits runs the same engine function as applyedits against a throwaway copy, so the two cannot disagree. Batches are all-or-nothing: a failing edit leaves the document byte-identical.
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Ooxml Ledger: common questions
- Is Ooxml Ledger MCP server safe?
- Yes, by our scan: it is graded A (92/100). Read the Ooxml Ledger safety report
- How do I install Ooxml Ledger?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Ooxml Ledger need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is Ooxml Ledger maintained?
- The last commit was 53 days ago (2026-09-13). The latest release is v0.3.0.
- How does Ooxml Ledger compare with other MCP servers?
- safety score 92/100 (higher than 93% of 48,243 servers); tools 14 (the typical server has 7); tools that change things 14% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.