MCP server for tangled
tangled-mcp notes#
dependencies#
uv addonly (NEVERuv pip)- atproto from PR #605 (service auth)
- pydantic warning filtered (upstream atproto issue #625)
deployment#
- primary: https://github.com/zzstoatzz/tangled-mcp (FastMCP Cloud)
- mirror: tangled.sh:zzstoatzz.io/tangled-mcp (dogfooding)
git push origin main→ both remotes
tools#
- all accept
owner/repoor@owner/repoformat (e.g.,zzstoatzz/tangled-mcp) - server-side resolution:
- handle → DID (via atproto identity resolution)
- query
sh.tangled.repocollection on owner's PDS - extract knot hostname and repo name from record
- call knot's XRPC endpoint (e.g.,
https://knot1.tangled.sh/xrpc/...)
dev#
- justfile:
setup,test,check,push - versioning: uv-dynamic-versioning (git tags)
- type checking: ty + ruff (I, UP)
- remember that
treeis your friend, better thanlsand a dream - use
jqfor JSON parsing (not python pipes)- example:
curl -s https://pypi.org/pypi/tangled-mcp/json | jq -r '.info.version'
- example:
- never use
sleep- poll/check with actual tools instead
architecture notes#
- repos stored as atproto records in collection
sh.tangled.repo(NOTsh.tangled.repo.repo) - each repo record contains
knotfield indicating hosting server - appview (tangled.org) uses web routes, NOT XRPC
- knots (e.g., knot1.tangled.sh) expose XRPC endpoints for git operations