Like many people, I use the excellent Calibre ebook management software. What I do that is a little different than most is I run Calibre on a home server instead of on a desktop/laptop computer.
If you’re not familiar with this setup, Calibre can be used in a web browser, but it’s not with a web app, it comes with some sort of VNC setup where you use the desktop application. It’s cool that this exists, but it’s not the best experience. It’s especially difficult to use on mobile.
There’s Calibre-Web which is a web app for browsing your Calibre library that I’ve tried. I didn’t love it.
Given how easy it is to build things nowadays, in the last week I thought why not build my own web app myself. That quickly switched to wanting to do an MCP server instead. The way I use Calibre is, I add books, I convert them, I download them and send to my devices; all of that doesn’t need to be a web app, and chat comes with advantages such as being able to look up reviews of the books before you pick out which one to read next.
So I built Lyceum, an MCP app that connects to your Calibre instance using the Calibre content server. You can add it to any chat app that supports MCP, I use it with claude.ai.
Once connected you can do a lot of the things you can do with the Calibre desktop app, and a few extras. A common flow for me is to ask it for a list of books from a certain genre, like western. Then you can ask it to give you more information about one of the books. You can tell it to mark it as read, or to change any of the metadata. You can ask it to search for metadata, which it does on its own using the Google Books API.
If you want to grab a book, you can ask it to provide you a download link, and it will create a signed URL valid for 5 minutes that you can use. You can do the same for uploading books; it gives you a URL, you upload the book, and its in your Calibre library.
It additionally supports device management. This is a feature outside of Calibre. You can connect to devices and send books directly to them, from within chat. Currently it supports Boox and Xteink. Happy to add other devices that can programmatically have books sent to, contributions are more than welcome here, but I don’t have any other devices to test myself.
This has been a fun exploration of what’s possible using MCP, and how to build things for AI that aren’t devtools related. It feels to me that so much of what I read about is using AI for programming. Which is great and all, but things like Lyceum are what I want to improve my daily life outside of work.
I’m excited to keep working on it. I have dreams of breaking the dependency on Calibre entirely, which would make Lyceum much easier to deploy, currently it needs to be deployed as a container somewhere that it can access to your Calibre instance.
Lyceum is currently single-user. Password is provided as an environment variable and it can connect to a single Calibre instance. This might change in the future, but the goal is not to make Lyceum a SaaS, just to make it something that easy to deploy for single user scenarios.