Show HN: MCP server for searching and downloading documents from Anna's Archive
192 iosifache 60 7/9/2025, 9:06:38 PM github.com ↗
I was looking around for an MCP server that could connect Anna's Archive to Claude Desktop, as I wanted to be able to search and download books directly through the interface.
I couldn't find any public implementations, so ended up building one myself.
What it does?
- It searches Anna's Archive by keywords. - It downloads books from search results. - It works directly in Claude Desktop through MCP.
Check out the repository's README for detailed installation and configuration instructions.
The code is fully open source and builds run on GitHub Actions for transparency.
I figured I'd share, since I couldn't be the only one wanting this functionality!
Following a suggestion from @irskep, I've added CLI command support for the search and download features.
This raised a valid concern - while we're focused on building MCP servers, we shouldn't overlook whether users already have preferred (T/G)UIs available. When they don't exist, we should consider user experience and make our functionality accessible through multiple interfaces beyond just MCP.
https://github.com/iosifache/annas-mcp/releases/tag/v0.0.2
Lovely project!
I justified the hours I invested by thinking I could search, download, and explore books directly from Claude Desktop. While the initial steps are achievable with a CLI tool, the integration opens up new possibilities.
Some general thoughts:
- You’ll find the MCP mental model similar to the API one. - MCP integrations make it easier for non-technical users to access tools that were previously too technical. - An MCP integration implicitly respects a contract, unlike CLIs and GUIs which involve human aspects (aesthetics, information organisation, etc.). - MCP is an excuse for people to democratize data access. I wrote about this aspect here: https://x.com/iosifache/status/1941049600162574676?s=46
And BTW, that’s a good idea! The functionality should probably also be exposed via CLI.
An MCP server provides enough metadata and self-documentation that it's quite straightforward to make a MCP-agnostic CLI client that adapts an arbitrary MCP server into a set of flags that allow you to call its explicit tools with explicit arguments - without ever needing to involve an LLM in the mix! You could even have that CLI tool launch the MCP server as a local subprocess, if you wanted - again, all deterministically.
And if you want to have an SDK in any language under the sun, once you have an MCP outputting reasonable tool descriptions, any LLM could make a best-in-class SDK for you in a heartbeat following that language's best practices.
So it's not unreasonable for someone working on a greenfield project to make an MCP server first nowadays!
A CLI tool, while it can do the same, doesn't do that in a standard way, so if it's a tool not in the agents training set or in its context it won't know how to use the tool.
https://news.ycombinator.com/item?id=44518393
MCP: You paste one command to register the MCP and your AI will always know what it is and where/why it should be used.
Or—and please bear with me, I know this may sound insane—you call the command-line tool yourself, reliably, fast, with little overhead, just like it has worked for decades.
I know, I know, soon most people won’t even know how to unzip their pants without spending unnecessary amounts of electricity and waiting for several seconds for an LLM response, but believe me that just using your hands is a solution worth checking out.
The LLM's default web-browsing tool probably won't or can't download books from AA while looking for information on a subject. This enables it to do so.
Are you referring to the JSON index (https://annas-archive.org/faq#api)?
No comments yet
It won't know in this case how to use the ssh command line tool.
MCP provides a standard way to tell an AI agent how and when to use tools. So if you had an SSH MCP server, you'd simply plug that in, now your AI agent automagically has SSH capabilities.
Welcome to Planet Earth.
Claude Desktop also has a built-in file reader [2], so you can ask it to read the file and process the content (e.g., generate a summary or even a meta-summary [3]).
[1] https://github.com/sylphxltd/pdf-reader-mcp [2] https://github.com/modelcontextprotocol/servers/tree/main/sr... [3] https://x.com/iosifache/status/1942247320302547175
Am I correct here?
Does this MCP server allow one to download just a single book?
I remember once using an IPFS based tool to download a single 200-year-old, out-of-copyright copy of "Last of the Mohicans" from Anna's Archive. It worked, but was very very complicated to figure out how to make it work.
No comments yet
How sincere is that statement?
The comparison might be loose, but the problem is similar to releasing a browser. Do you prevent users from accessing websites you think are malicious or illegal? Or do you delegate that responsibility?
I was hesitant about releasing the MCP server as open source software, but I hope (1) it proves useful for others and (2) people understand that the authors of the books they're reading need money to eat, live, and support their families.
I might liken the situation more to releasing a browser and setting thepiratebay as the homepage.
Only for them, not for you.
>Should copyright law only apply to the plebs?
In a practical sense, hasn't that been the case for most laws?
There's no way to protect against this. Anna's Archive doesn't include licence information in their data fields. It would be helpful to integrate with another data source that could warn MCP server users when they're attempting potentially risky actions. Please let me know if you have ideas on how to achieve this.
On a related note, please see this reply:
https://news.ycombinator.com/reply?id=44515205
https://wikipedia.org/wiki/Orphan_works_in_the_United_States
https://martincopenhaver.github.io/files/orphanworks.pdf [PDF]
Estimated 25-50 million books are orphaned works, and their copyright holder may step forward at any time after you've treated it as unlicensed, it's perpetually uncertain (but showing due diligence in finding and contacting the rights holder is considered adequate).
For US works published after 1977 and most works between 1898-1945 the US copyright office has a database:
https://publicrecords.copyright.gov/
but I don't know a good catalog for non-US.
> Their copyright holder may step forward at any time after you've treated it as unlicensed.
Does this mean that Satoshi can just come and claim that a whole industry is using his/her copyrighted material?
The more appropriate coverage for that would be patents, which protect a process while making its methods public. Since Bitcoin is open and not patented, that isn't a concern either. There are, however, methods of using blockchains that are patented.
Satoshi couldn't come forth and say that all bitcoin is violating a patent, but it's possible that some aspect of other blockchains or some aspect of an application layer built on blockchain is covered by a patent. For more details consult a lawyer specializing in IP law (and btw I'm not a lawyer, in case I accidentally gave that impression).
To complicate things further with patents, be careful about reading patents if you plan on possibly building anything related. If it can be shown that you were aware of a (US) patent that you're violating, then any related suit that comes before you may receive triple the damages that were decided in the case. So, it's very likely that there are some applications violating blockchain-related patents. Someone could suddenly come forward and sue a lot of people who were being willfully ignorant about it.
Hopefully that comes close to answering your question, this space is far too small for all the nuances and I'm not an expert on licenses.