About
Elevenreader — Model Context Protocol server
README
Listen to any document from Claude or Cursor — upload epubs/pdfs, manage TTS reading queue and control playback via ElevenLabs ElevenReader.
MCP server for ElevenReader — ElevenLabs text-to-speech reader.
Quick Start
# 1. Get refresh token: ElevenReader → F12 Console → copy stsTokenManager.refreshToken
# 2. Run via Claude Code (or add to Claude Desktop config below)
claude mcp add elevenreader -e ELEVEN_REFRESH_TOKEN=your-token -- uvx mcp-elevenreader
# 3. Ask Claude: "List my ElevenReader books"
Works with Claude Code, Claude Desktop, Cursor, Kiro and opencode — see Setup below for JSON configs.
Setup
1. Get refresh token
Open https://elevenreader.io, log in, then run in browser console (F12 → Console):
JSON.parse(localStorage.getItem(Object.keys(localStorage).find(k => k.startsWith('firebase:authUser:')))).stsTokenManager.refreshToken
The refresh token is long-lived (months). Access tokens are refreshed automatically.
2. Connect to Claude Code
claude mcp add elevenreader -e ELEVEN_REFRESH_TOKEN=your-token -- uvx mcp-elevenreader
To make it available in all projects, add to ~/.claude/mcp.json:
{
"mcpServers": {
"elevenreader": {
"command": "uvx",
"args": ["mcp-elevenreader"],
"env": {
"ELEVEN_REFRESH_TOKEN": "your-token"
}
}
}
}
Other clients (Claude Desktop / Kiro / Cursor)
{
"mcpServers": {
"elevenreader": {
"command": "uvx",
"args": ["mcp-elevenreader"],
"env": {
"ELEVEN_REFRESH_TOKEN": "your-token"
}
}
}
}
opencode
Add to ~/.config/opencode/opencode.json. Note: opencode uses environment (not env) for MCP server env vars:
{
"mcp": {
"elevenreader": {
"type": "local",
"enabled": true,
"command": ["uvx", "mcp-elevenreader"],
"environment": {
"ELEVEN_REFRESH_TOKEN": "your-token"
}
}
}
}
Config is only read at opencode startup — quit and restart opencode after adding. If the token still isn't picked up, check it's under environment, not env.
Tools
| Tool | Description |
|---|---|
list_reads |
List books paginated (10 per page, compact: title, author, progress) |
list_all_reads |
Full reading history — all books in compact format |
get_read |
Get full details of a specific read (chapters, progress) |
get_read_content |
Get HTML text content of a read |
add_url |
Add URL for TTS reading |
add_document |
Upload epub/pdf file |
add_directory |
Upload all books from a directory (background, with retry) |
upload_status |
Check background upload progress |
delete_read |
Remove from library |
deduplicate |
Find and remove duplicate reads (keeps oldest) |
mark_almost_finished |
Mark books at 97%+ progress as finished |
list_voices |
Available TTS voices |
get_voice |
Voice details |
get_config |
User settings (voice, speed, font) |
update_config |
Change default voice/speed |
get_customer |
Subscription info & credits |
get_collections |
User collections |
get_bookmarks |
Bookmarks for a read |
update_progress |
Update listening position |
Architecture
- Auth: Firebase refresh token → short-lived access token (auto-refreshed, thread-safe)
- Data source:
/v1/reader/collections/booksendpoint (full history, 345+ books) - Caching: 60s TTL on book list, invalidated on mutations (add/delete)
- Upload queue: Background thread with retry (3 attempts), rate limiting, pause for priority uploads
- Thread safety: Locks on token cache and reads cache
Development
git clone https://github.com/MIt9/mcp-elevenreader
cd mcp-elevenreader
uv sync
mcp dev src/mcp_elevenreader/server.py
Requirements
- Python ≥ 3.10
- Dependencies: httpx, mcp
License
MIT
Installing Elevenreader
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/MIt9/mcp-elevenreaderFAQ
Is Elevenreader MCP free?
Yes, Elevenreader MCP is free — one-click install via Unyly at no cost.
Does Elevenreader need an API key?
No, Elevenreader runs without API keys or environment variables.
Is Elevenreader hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Elevenreader in Claude Desktop, Claude Code or Cursor?
Open Elevenreader on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Opencode Omniroute Plugin
OpenCode plugin for the OmniRoute AI Gateway. Drives dynamic model discovery, /connect auth flow, and multi-instance OmniRoute providers via the official @openc
by GitHub ActionsRoblox Studio
Enables AI coding tools to control Roblox Studio for workspace exploration, instance manipulation, and script management. It provides tools for playtesting, sce
by paralovAntigravity Drawio
MCP server that enables AI assistants to create, parse, render, and validate Draw.io diagrams programmatically.
by S-SUJAN-SFetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
by modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
by xuzexin-hzMCP-Agent
A simple, composable framework to build agents using Model Context Protocol by [LastMile AI](https://www.lastmileai.dev)
by lastmile-aiSpring AI MCP Client
Provides auto-configuration for MCP client functionality in Spring Boot applications.
mcp.natoma.ai
A Hosted MCP Platform to discover, install, manage and deploy MCP servers by [Natoma Labs](https://www.natoma.ai)
Compare Elevenreader with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All ai MCPs
