
Ao3 Mcp
io.github.ArturLysPublished by GitHub account ArturLysv0.1.2Updated Oct 27, 2026
Search AO3 and have fics read by a secondary model before they're recommended
Overview
Searches AO3 fanfiction and has a secondary Gemini model read full fics, returning structured reports and rankings to the assistant.
- What you can do
- Search AO3 works with fandom, ship, character, tag, rating, word count, completion and sorting filters, including AO3 search-operator syntax.
- Resolve fuzzy wording to canonical AO3 tags, fandoms, ships and character names via live autocomplete.
- Fetch a work's metadata card with tags, stats, summary and series info.
- Read 1–20 full fics with a secondary Gemini model and get per-fic reports on plot, characters, style, verbatim prose samples and content notes, plus a comparison ranking.
- When to use it
- Useful when you want fic recommendations grounded in the actual text rather than author blurbs, or when writing fiction or roleplay with an AI and need style and pacing references from real fics on a given trope.
- Requirements
- Runs locally as a Python 3.10+ package installed with pip. Needs a Gemini API key, passed with the --api-key argument or the GEMINI_API_KEY environment variable; the free tier is described as sufficient. Optional settings choose the reader model, backup model and AO3 request interval. Network access to AO3 and Google's Gemini API is required.
Installation
In SourceWeft
- Open Ao3 Mcp in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
ao3-mcp
[PyPI] [CI] [Python 3.10+] [License: MIT]
An MCP (Model Context Protocol) server that connects AI agents — Claude, Cursor, or any MCP client — to the Archive of Our Own. Search AO3 fanfiction with full filters, resolve fuzzy wording to canonical tags, and get fics actually read before they're recommended.
The trick: your agent never reads fic text. It delegates reading to a cheap secondary model (Gemini), which digests whole fics — even 150k-word novels — and returns structured reports. Your agent's context stays clean; the recommendations are based on the real text, not the blurb.
Why this beats blurb-based recommendations
An AO3 blurb is an ad written by the author. This server's workflow is: search wide (40–60 results), have the reader model read the shortlist — up to 20 full fics in one call — and recommend only what was actually read, with verbatim prose samples so quality is judged from the text itself.
Not just for finding your next read
If you write with an AI — fanfic, original fiction, roleplay — this doubles as an inspiration engine. Mid-scene, your agent can pull up how real fic authors handle the exact beat you're on:
The reader reports back with structure, style notes, and verbatim prose samples, so the model gets grounded in how the trope is actually written — not what it imagines fanfic sounds like. Works the same for roleplay: pull reports on fics that nail a character's voice and feed them in as style reference.
Install
Requires Python 3.10+ and a free Gemini API key:
Go to aistudio.google.com/api-keys, sign in with any Google account, and click "Create API key". The free tier is enough — no billing setup needed.
Add to your agent
Point command at ao3-mcp and pass your key with --api-key:
Prefer to keep the key out of the args list? Drop --api-key and pass it in an env
block instead — the server reads GEMINI_API_KEY from the environment as a fallback:
Claude Code
Cursor
Cursor Settings → MCP → New MCP Server, paste the JSON config above.
Google Antigravity
Add the JSON config above to .gemini/antigravity/mcp_config.json.
VS Code / Copilot
Then just ask:
Launch params
Tools
Fic downloads are cached locally for 24h, so re-reading a fic with a new question costs no AO3 requests.
Good to know
- AO3 has no API — this scrapes its (clean) HTML, one request at a time, throttled to one every 0.6s by default (tune with
--min-interval) and honoringRetry-After. AO3 is volunteer-run; the politeness is deliberate. - Cloudflare: AO3 blocks plain HTTP clients. This uses
curl_cffiwith a mobile-Safari TLS fingerprint, which passes as of writing. If requests start failing with 403 +cf-mitigated: challenge, changeIMPERSONATEinao3.py. - Privacy: fic text goes to Google's Gemini API for reading; nothing else leaves your machine, no telemetry.
- Adult content: AO3 hosts works across all ratings. The server passes through whatever your search scopes — use the
ratingfilter and AO3's warning tags to control what gets fetched.
Make it yours
It's a small, single-purpose server — a few hundred readable lines with no framework magic. Fork it and edit anything: rewrite the reader's prompt, swap in a different model, change the throttle, add a tool. That's the intended way to use it.
Run it from source:
Credits
- AO3 access approach builds on ao3_api by wendytg.
- All fanworks belong to their authors on the Archive of Our Own, a project of the Organization for Transformative Works.
License
MIT
Source: README.md at commit 3e596e5
Tools
0Version history
1- v0.1.2LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts