Breaking
- The generated write tools are gone.
put_person, post_events, delete_*, merge, the bulk objects endpoints, transactions and chat are no longer exposed. Generated tools are read-only: every GET and the POST .../query/ searches.
- Writing goes through one tool,
apply_changes. It takes 1 to 20 typed operations (create with the full object, update with only the changed fields, delete), shows the user every change, and writes only after they confirm.
How apply_changes behaves
- The confirmation uses MCP elicitation, on both protocol eras: the question sent mid-call by clients before
2026-07-28, and the "input required" flow from 2026-07-28 on, which Claude Code negotiates by default.
- If an object changes while the user is deciding, they are asked again about what would now be written.
- A client that cannot ask for confirmation writes nothing.
- If a change fails, the earlier ones are undone in one call to Gramps' transactions endpoint, which applies the undo all or nothing.
- Inputs are strict (no unknown keys, object class checked against
type, read-only fields refused, no duplicate targets) and the result is typed.
- The tool asks Claude Code for its own approval prompt on every call.
Known limits
- The preview shows the objects you name, not those Gramps updates as a consequence (a family's members, the referrers of a deleted event).
- The content of
object and changes is validated by Gramps at write time, not by this server.
- Elicitation support is documented for Claude Code; for the Claude apps and Antigravity it is not documented, so those clients may write nothing.
Install
pip install "gramps-mcp @ git+https://github.com/jerive/gramps-mcp@v0.4.0"