Suwayomi MCP Server
?? Suwayomi MCP Server
Un servidor Model Context Protocol (MCP) de alto rendimiento que conecta asistentes de codificación de IA y agentes autónomos (Claude Code, Claude Desktop, Cursor, Windsurf, Antigravity) directamente con tu biblioteca de manga y manhwa autoalojada Suwayomi-Server.
? El problema y la solución
El cuello de botella
Los entusiastas del manga, manhwa y novelas ligeras suelen gestionar cientos de títulos y miles de capítulos en múltiples fuentes de extensiones (MangaDex, Webtoons, Asura, Flame, etc.).
Hasta ahora, usar agentes de IA para gestionar esta colección era fragmentado:
Mobile Mihon/Tachiyomi no tiene una API expuesta, lo que requiere un análisis estático frágil de copias de seguridad (
.tachibk) que no puede ejecutar búsquedas en vivo, escribir cambios ni descargar capítulos.Las interfaces de agregadores requieren búsqueda manual, hacer clic en más de 5 pestañas de extensiones y poner en cola manualmente las actualizaciones de capítulos.
La solución
suwayomi-mcp cierra la brecha. Al comunicarse directamente con el motor GraphQL local de Suwayomi a través de JSON-RPC estándar (transporte stdio), tu asistente de IA puede:
Auditar el estado de tu biblioteca en tiempo real (haciendo seguimiento de los capítulos no leídos pendientes, el estado de finalización y los géneros).
Ejecutar búsquedas de texto completo al instante en tu base de datos y añadir títulos en lote a tus favoritos.
Poner en cola y activar descargas de capítulos en segundo plano con una sola frase en lenguaje natural.
Related MCP server: Mealie MCP Server
??? Arquitectura del sistema
+-------------------------------------------------------------------------+
| LLM / AI ASSISTANT |
| (Claude Desktop, Claude Code, Cursor, Windsurf) |
+-------------------------------------------------------------------------+
¦ (Natural Language Intent)
?
+-------------------------------------------------------------------------+
| SUWAYOMI MCP SERVER (FastMCP / Python) |
| • suwayomi_get_library • suwayomi_search_and_add |
| • suwayomi_download_chapters • suwayomi_get_download_status |
+-------------------------------------------------------------------------+
¦ (GraphQL POST JSON / stdio)
?
+-------------------------------------------------------------------------+
| SUWAYOMI-SERVER DAEMON (localhost:4567) |
| • GraphQL Resolver • H2 Database (Library & Metadata) |
| • Source Scrapers • Chapter Downloader Worker |
+-------------------------------------------------------------------------+??? Suite de herramientas y prompts del mundo real
Herramienta | Firma | Qué preguntas en el chat |
|
| "¿Qué manga en mi biblioteca tiene actualmente más de 100 capítulos no leídos?" |
|
| "Encuentra 'Latna Saga' en mi base de datos y añádela a mis favoritos." |
|
| "Descarga los próximos 5 capítulos no leídos de Hand Jumper." |
|
| "Comprueba si el descargador de capítulos de Suwayomi sigue en ejecución." |
?? Requisitos previos
Suwayomi-Server instalado y ejecutándose localmente en el puerto
4567(endpoint predeterminado:http://127.0.0.1:4567/api/graphql).Python 3.10+ instalado en tu sistema.
?? Guía de instalación
?? Configuración en Windows (PowerShell)
# 1. Clone repository
git clone https://github.com/augumenter/suwayomi-mcp.git
cd suwayomi-mcp
# 2. Create and activate virtual environment
python -m venv .venv
.\.venv\Scripts\activate
# 3. Install in editable mode
pip install -e .
# 4. Run automated test suite to verify live connectivity
pytest tests -v?? Configuración en macOS (Terminal / zsh)
# 1. Clone repository
git clone https://github.com/augumenter/suwayomi-mcp.git
cd suwayomi-mcp
# 2. Create and activate virtual environment
python3 -m venv .venv
source .venv/bin/activate
# 3. Install in editable mode
pip install -e .
# 4. Run automated test suite
pytest tests -v?? Configuración en Linux / Docker (Ubuntu / Debian / Arch)
# 1. Clone repository
git clone https://github.com/augumenter/suwayomi-mcp.git
cd suwayomi-mcp
# 2. Create and activate virtual environment
python3 -m venv .venv
source .venv/bin/activate
# 3. Install package
pip install -e .
# 4. Run tests
pytest tests -v?? Configuración del cliente de IA
1. Claude Desktop
Añade esto a tu claude_desktop_config.json:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"suwayomi": {
"command": "C:\\path\\to\\suwayomi-mcp\\.venv\\Scripts\\python.exe",
"args": ["-m", "src.server"],
"cwd": "C:\\path\\to\\suwayomi-mcp",
"env": {
"SUWAYOMI_GRAPHQL_URL": "http://127.0.0.1:4567/api/graphql"
}
}
}
}(En macOS/Linux, reemplaza command con /path/to/suwayomi-mcp/.venv/bin/python)
2. CLI de Claude Code (~/.claude.json)
{
"mcpServers": {
"suwayomi": {
"command": "C:\\path\\to\\suwayomi-mcp\\.venv\\Scripts\\python.exe",
"args": ["-m", "src.server"],
"cwd": "C:\\path\\to\\suwayomi-mcp",
"env": {
"SUWAYOMI_GRAPHQL_URL": "http://127.0.0.1:4567/api/graphql"
}
}
}
}3. Cursor (.cursor/mcp.json)
{
"mcpServers": {
"suwayomi": {
"command": "python",
"args": ["-m", "src.server"],
"env": {
"SUWAYOMI_GRAPHQL_URL": "http://127.0.0.1:4567/api/graphql"
}
}
}
}?? Ejemplos de conversación reales
Ejemplo 1: Auditoría de biblioteca y recomendaciones
User: "Check my library and recommend something intense to read from my unread backlog."
Agent: "I checked your Suwayomi library. Here are your top unread thriller & action series:
1. Hand Jumper (130 unread chapters) - Thriller / Supernatural
2. Psychopath in Murim (30 unread chapters) - Action / Fantasy
3. Lookism (1,237 unread chapters) - Action / Delinquents
Would you like me to queue the next 5 chapters of Hand Jumper for offline reading?"Ejemplo 2: Ingestión automática de títulos
User: "Find Latna Saga and make sure it is added to my library favorites."
Agent: "Found 'Latna Saga: Survival of a Sword King' (ID: 38).
I executed the updateManga mutation and set inLibrary: true. It is now tracked in your favorites."Ejemplo 3: Descarga de capítulos en lote
User: "Download the next 10 unread chapters of Omniscient Reader."
Agent: "Fetched unread chapter IDs [412, 413, 414, 415, 416, 417, 418, 419, 420, 421].
Dispatched enqueueChapterDownloads mutation and triggered the downloader daemon.
Download status: STARTED (10 items in queue)."?? Visualizador interactivo de red neuronal
Este proyecto incluye un Gráfico Sináptico Neuronal animado en tiempo real que visualiza el tránsito de paquetes a través de cada capa del puente MCP.
Para lanzar el visualizador:
python -m http.server 8080 --directory visualizerAbre http://localhost:8080 en tu navegador para interactuar con nodos cinéticos, disparar secuencias de pulsos sinápticos e inspeccionar la telemetría de carga útil en vivo.
?? Solución de problemas y preguntas frecuentes
Unable to connect to remote server (127.0.0.1:4567)
Causa: Suwayomi-Server no se está ejecutando.
Solución: Inicia tu demonio local de Suwayomi (
Suwayomi Launcher.baten Windows osuwayomi-servermediante terminal) y verifica quehttp://localhost:4567carga en tu navegador.
GraphQL Errors: Missing source
Causa: El manga se importó desde una extensión que actualmente está deshabilitada o desinstalada.
Solución: Abre Suwayomi WebUI -> Explorar -> Extensiones y asegúrate de que la extensión correspondiente esté instalada y actualizada.
?? Licencia
Licencia MIT. Copyright (c) 2026 Ileri Nwajei (@augumenter).
Available Tools
4 toolssuwayomi_download_chaptersA
Queue and trigger chapter downloads for a manga.
Args: manga_id: The ID of the manga. count: Number of chapters to download (default: 5). unread_only: If True, only downloads unread, undownloaded chapters. chapter_ids: Explicit list of chapter IDs to download (overrides count/unread_only).
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| manga_id | Yes | ||
| chapter_ids | No | ||
| unread_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It explains the effects of unread_only and chapter_ids, including the override behavior, which is useful. However, it does not disclose side effects, whether downloads are asynchronous, or any prerequisites such as authentication or existing library membership.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the core action, and uses a clean Args list. Every sentence adds necessary information without repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and the parameter semantics are fully covered, the description is largely complete for invoking the tool correctly. The only minor gap is the lack of explicit context about when to use this tool versus the sibling tools, but the operation itself is well-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does. Every parameter is explained with meaningful semantics: manga_id identifies the manga, count sets the number, unread_only filters to unread/undownloaded chapters, and chapter_ids explicitly overrides the other selection parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Queue and trigger') and resource ('chapter downloads for a manga'), making the tool's function immediately clear. It is clearly distinguished from the sibling tools, which focus on status, library retrieval, and search/add operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to initiate chapter downloads, and the parameter behavior clarifies selection logic, but it does not explicitly state when to prefer this tool over siblings or provide exclusion conditions. The usage context is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suwayomi_get_download_statusA
Check the current download queue and active progress.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It states the action (check) implying a read-only operation, which is useful, but does not disclose what information the tool returns or if there are any side effects. The description is minimal but sufficient for a status-checking tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that conveys the core purpose without any fluff. It is appropriately sized for a tool with no parameters and a simple function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no nested objects) and the presence of an output schema, which likely details return values, the description is complete enough for an agent to call it. It could briefly mention what information is returned (e.g., list of downloads, progress percentages), but the output schema may compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to add parameter semantics. Baseline for zero parameters is 4, and the description accurately indicates the tool requires no arguments by not mentioning any.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks the download queue and active progress, identifying a specific verb and resource. It is distinct from siblings like suwayomi_download_chapters, which initiates downloads, so an agent can reasonably infer the difference, though it could explicitly mention that no modifications are made.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it should be used to check download status, which is a common operation, but it does not explicitly state when to use this tool versus others. For instance, it does not mention that this is for monitoring rather than starting downloads, but the context is clear enough for an agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suwayomi_get_libraryA
Fetch your manga/manhwa library state from Suwayomi.
Args: in_library_only: If True, only returns titles marked as in-library favorites. If False, returns all indexed titles. search: Filter titles by keyword, author, or genre (e.g. 'isekai', 'Latna', 'action'). limit: Maximum number of titles to return (default: 50).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| search | No | ||
| in_library_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'Fetch' implies a read-only operation, but it is never explicitly stated that this tool does not modify data or have side effects. The description also does not mention pagination, error handling, rate limits, or authentication requirements. The only behavioral detail given is the default limit of 50, which is a parameter, not a behavior. For a read operation with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one purpose sentence followed by a compact Args list. Every line earns its place, with no filler or redundancy. The purpose is front-loaded, and the parameter details are formatted for easy scanning. This is exemplary efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple fetch operation with three parameters, the description covers all the input semantics clearly. The output schema is present, so return values are handled externally. However, it does not mention potential edge cases like empty results, total count, or pagination beyond the limit parameter. Given the simplicity and the presence of an output schema, this is adequate, though a note about result ordering or default behavior when search is null would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully explain the parameters. It does so effectively: each parameter (in_library_only, search, limit) is described with its meaning and examples (e.g., 'isekai', 'Latna', 'action' for search). It also clarifies the default for limit and the filtering behavior of in_library_only. This adds significant value beyond the bare schema, though it could go further by specifying search matching semantics (e.g., exact match vs. substring) or limit bounds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear, specific statement: 'Fetch your manga/manhwa library state from Suwayumi.' This identifies the exact action (fetch) and resource (library state), distinguishing it from siblings like suwayumi_download_chapters and suwayumi_search_and_add, which perform different operations. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by describing what the tool does, but it does not explicitly state when to choose this tool over the siblings. It lacks guidance on when to use this versus suwayumi_search_and_add (e.g., to view existing library) or the download tools. No exclusions or alternatives are mentioned, so the agent must infer context from the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suwayomi_search_and_addA
Search for manga across your Suwayomi database and optionally add the top match to your library.
Args: query: Manga or manhwa title to search for. auto_add_first: If True, automatically marks the best matching title as inLibrary: true. limit: Maximum search results to return (default: 20).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| auto_add_first | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It discloses the main side effect (adding to library when auto_add_first is true) but does not mention potential errors, rate limits, or what happens when no match is found. The existence of an output schema helps, but the description itself is thin on behavioral nuance beyond the core action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the main purpose, followed by a clean arg list. Every sentence earns its place, with no fluff or redundancy. The structure is easy to scan and parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search-and-add tool with an output schema, the description covers the core functionality and all parameters. It does not explain edge cases (e.g., behavior when auto_add_first is false, or how 'best matching' is determined), but these are minor. Overall it is sufficient for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates by explaining each parameter: query (search title), auto_add_first (marks top match as inLibrary), and limit (max results). This goes beyond the schema's bare types and defaults, giving the agent exactly what it needs to invoke correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Search') and the resource ('manga across your Suwayomi database'), and mentions the optional action of adding to the library. It is distinct from sibling tools like suwayomi_get_library (which only lists) and suwayomi_download_chapters (which handles downloads), so an agent can easily tell when to use it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the primary use case: searching for manga and optionally adding it. However, it does not explicitly state when not to use it or point to alternatives (e.g., 'For browsing the library, use suwayomi_get_library'). The context is clear enough from the action and the sibling names, but explicit routing would be stronger.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.1.0- First observed
suwayomi_download_chapters - First observed
suwayomi_get_download_status - First observed
suwayomi_get_library - First observed
suwayomi_search_and_add
TDQS
Scored across 4 tools
Each tool has a distinct purpose: downloading chapters, checking download status, fetching library state, and searching/adding titles. No overlap exists, so an agent can unambiguously select the right tool.
All tools share the 'suwayomi_' prefix and follow a consistent verb_noun pattern (download_chapters, get_download_status, get_library, search_and_add), making the API predictable and easy to navigate.
With 4 tools, the server is well-scoped for its purpose of managing a manga library and downloads. Each tool earns its place without redundancy or unnecessary bloat.
The tool set covers core workflows—searching, adding, downloading, and checking status—but lacks operations like removing from library, updating reading progress, or listing chapters, leaving notable gaps for full lifecycle management.
Maintenance
Related MCP Connectors
- LeafOAuthapp.readwithleaf
AI assistant integration for Leaf — track books, log reading sessions, and manage your library.
Academic literature search, retrieval, and private library management on top of OpenAlex.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Enables AI assistants to natively interact with the Serpzilla link-building marketplace.
Related MCP Servers
- FlicenseBqualityFmaintenanceEnables AI assistants to manage StashDog inventory through natural language commands, supporting item management, collections, tags, smart search, and URL imports with secure authentication.11-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with Mealie recipe databases, allowing users to manage and query their recipes through natural language conversations.22 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage media automation services like Sonarr, Radarr, Prowlarr, Bazarr, Overseerr, and Plex through natural language commands.7MIT
- AlicenseBqualityBmaintenanceConnects AI assistants to the Hardcover book library, enabling natural language book searches, reading status updates, list management, and library exploration.3935 PyPI9MIT