[Release] gramps-web-mcp-rs - yet another MCP server for Gramps Web

Hi all,

I’d been using cabout-me/gramps-mcp for a while - credit where it’s due, without it I probably wouldn’t have started this at all. I kept running into a few methods it didn’t cover, though, and it doesn’t look actively maintained anymore, so I decided to write my own, based on it but on a different stack: Rust instead of Python: gramps-web-mcp-rs.

Differences so far: a smaller Docker image, and a larger set of tools: it covers the full Gramps Web API surface I could find (search, get, create, update, delete, merge across all object types: people, families, events, places, sources, citations, media, repositories, etc.), with test coverage.

Like the original, I see this as an MCP server and use it that way - standalone, so it can be combined with other MCPs (web search, filesystem, etc.) in the same agent, rather than living inside an internal chatbot.

On GQL: I experimented with adding it (it’s sitting in a branch), but didn’t include it in the release because results weren’t good enough. I didn’t manage to get an LLM to reliably write correct GQL syntax from a natural-language question; it burned a lot of tokens on retries and still got the syntax wrong often enough that I wouldn’t ship it as-is.

It also has a read-only mode that disables the write tools entirely at the server level, rather than relying only on the Gramps Web account’s permissions, and also saves tokens, since the model never even sees schemas for tools it can’t call.

There’s also dsblank/gramps-ez-mcp, which takes a different route: talking to the Gramps database directly instead of going through Gramps Web.

Repo: GitHub - Alexey-N-Chernyshov/gramps-web-mcp-rs: MCP server for Gramps Web genealogy API, written in Rust. Inspired by gramps-mcp — more tools, test coverage, smaller image, optional read-only mode.

Would be glad for feedback from anyone running Gramps Web, especially if you hit API behavior that seems off when driven this way rather than through the normal UI. That’s where most of the interesting edge cases have shown up so far.

Very cool!

One question: do you log what the MCP system is doing? Do you know what it is doing well/wrong? How much it costs? Try Opik :slight_smile: Open source, but I do work for Comet.

Also, there is a drop-in replacement for GQL that is more Pythonic and should be easier for the LLM to write: GitHub - dsblank/object-ql: A Python query system for querying Objects · GitHub

Someday there will be a SQL-based version :crossed_fingers:

Thanks for the suggestion! It’s a thin wrapper that just translates REST API calls to stdio, so logs go to stderr using standard Rust tracing with configurable levels per module, so the calling agent can see what’s happening. Usually the calling agent logs all tool calls and responses on its side anyway, which is quite convenient and what I actually use in practice.

On token costs, the MCP server itself doesn’t spend any, it’s all on the agent side. Opik doesn’t really fit here. I’ve tried to optimize responses by adding pagination and reducing the number of
tools. I could add a rough estimate on my side from response sizes (~4 bytes per token), but tracking it on the agent side seems more natural. What I’ve noticed is that the biggest token
drain is when the agent starts guessing GQL syntax: retrying operators, trying with and without quotes, that kind of trial-and-error loop.

Will definitely take a look at object-ql, thanks!

I also see potential in pairing this MCP with a set of conventions, something like a skills.md, covering how to properly format complex names, locations, citations and similar things. That way less experienced Gramps users (like myself) could manage their trees correctly without having to know all the details upfront.

Thanks for the OQL suggestion — I added support for it in the test build, and I’m genuinely impressed with the results. Claude handles even fairly complex queries very well and grasps the syntax immediately. I was able to answer things like “who’s married to someone named X” or “how many families have 5+ children” in a single query, which saves a lot of tokens compared to the multi-step approach I’d need otherwise. This is a nice contrast to GQL, whose syntax Claude struggled to get right. Really happy with how OQL turned out, thanks!

There is an inquiry on the Facebook “Gramps for Genealogists” group about whether the Claude extension has helped.

I am not sure is this is even the plugin about which they are asking.

Perhaps someone with an informed opinion could respond to that posting?

Done. IMHO, those people using the FB group would get better exposure and better answers if they used this forum. In that vein (so you don’t have to go to FB) I post my answer here:

Has anyone used the Claude add on? Or any AI extension? Did/Has it helped?

What Claude addon are you referring? In general, I think you might be talking about an MCP server that can be used in any AI environment, including Claude. Here is a summary of all of the MCP activities in Gramps:

and a new one that looks especially promising:

[I noticed that when you add links in FB they wrap in a tracker. Not cool. Use FB at your own risk.]

Agree wholeheartedly. I try to strip the tracker when cross-posting. But that adds a lot of extra labor.

I also agree that we should try to nudge advanced topics to Discourse. Facebook is doing more and more information hiding. And that is only 1 reason to be suspicious of their platform.