Door43, as you.
door43-mcp 0.5.0 · live at door43.klappy.dev
Door43-mcp is a small MCP server that lets an AI agent use Door43 (DCS, the Gitea host for unfoldingWord's open Bible translation resources) as you. You log in with your own Door43 account; the server keeps the grant and never sees a pasted token. Three tools cover the whole job: read the API reference, run one GET/HEAD request, read the server's own numbers.
Not a helps aggregator, not a multi-host broker, not a token vault, not a write surface, not a cache of DCS content.
Live
- Upstream
- checking…
- Host
- git.door43.org
- Observed
- —
- Server
- 0.5.0 (from
package.json)
Connect in three steps
https://door43.klappy.dev/mcp- Add the MCP URL to your client (Claude, Cursor, or any MCP client that speaks OAuth).
- Log in when the client sends you to git.door43.org and approve the app.
- Ask for
execute GET /user— it returns your Door43 login. You are in.
The three tools
Journeys
whoami — Who is the logged-in user. args: —
execute GET /user fields:["login","id","full_name"]catalog-by-language — Latest catalog entries for one language. args: lang=en stage=prod
execute GET /catalog/search?lang={lang}&stage={stage}&limit=20 fields:["data[].full_name","data[].subject","data[].branch_or_tag_name","data[].zipball_url"]latest-release-zip — The latest release of a repo and its zipball. args: owner* repo*
execute GET /repos/{owner}/{repo}/releases/latest fields:["tag_name","name","published_at","zipball_url"]repo-tree-at-ref — The file tree of a repo at a ref (use recursive:true for the whole tree). args: owner* repo* ref=master
execute GET /repos/{owner}/{repo}/git/trees/{ref}?recursive=true&per_page=1000 fields:["sha","truncated","tree[].path","tree[].type","tree[].sha"]page-through — Walk a paged list: call once, then replay next from each envelope until it is null; hints carries x-total-count. args: limit=50
execute GET /catalog/search?limit={limit}&page=1 fields:["data[].full_name"]read-file-at-pin — One file's content at a pinned sha (the ref the upstream already gave you; never minted here). args: owner* repo* path* sha*
execute GET /repos/{owner}/{repo}/contents/{path}?ref={sha} fields:["name","sha","size","encoding","content"]Each one is docs({recipe:"…", args:{…}}); the server fills the call for you (* required, = default). execute({recipe, args, dry_run:true}) prices it first.
klappy://canon/constraints/mcp-tool-surface-ceiling. Reads only in v1; you can revoke access any time by deleting the app on Door43.