Suwayomi MCP Server
?? Suwayomi MCP Server
Высокопроизводительный Model Context Protocol (MCP) сервер, который подключает ИИ-ассистентов для программирования и автономных агентов (Claude Code, Claude Desktop, Cursor, Windsurf, Antigravity) напрямую к вашей самостоятельно размещённой библиотеке манги и манхвы Suwayomi-Server.
? Проблема и решение
Узкое место
Энтузиасты манги, манхвы и ранобэ часто управляют сотнями тайтлов и тысячами глав из множества источников-расширений (MangaDex, Webtoons, Asura, Flame и т. д.).
До сих пор использование ИИ-агентов для управления этой коллекцией было фрагментированным:
Мобильные Mihon/Tachiyomi не имеют открытого API, что требует хрупкого разбора статических резервных копий (
.tachibk), который не может выполнять живые поиски, вносить изменения или скачивать главы.Интерфейсы агрегаторов требуют ручного поиска, кликов по 5+ вкладкам расширений и ручной постановки обновлений глав в очередь.
Решение
suwayomi-mcp устраняет этот разрыв. Общаясь напрямую с локальным GraphQL-движком Suwayomi через стандартный JSON-RPC (транспорт stdio), ваш ИИ-ассистент может:
Проверять состояние вашей библиотеки в реальном времени (отслеживая отставание по непрочитанным главам, статус завершения и жанры).
Выполнять мгновенный полнотекстовый поиск по вашей базе данных и массово добавлять тайтлы в избранное.
Ставить в очередь и запускать фоновую загрузку глав одной фразой на естественном языке.
Related MCP server: Mealie MCP Server
??? Архитектура системы
+-------------------------------------------------------------------------+
| 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 |
+-------------------------------------------------------------------------+??? Набор инструментов и примеры реальных запросов
Инструмент | Сигнатура | Что вы пишете в чате |
|
| «Какая манга в моей библиотеке сейчас имеет более 100 непрочитанных глав?» |
|
| «Найди „Latna Saga“ в моей базе данных и добавь её в избранное.» |
|
| «Скачай следующие 5 непрочитанных глав Hand Jumper.» |
|
| «Проверь, всё ещё ли работает загрузчик глав Suwayomi.» |
?? Предварительные требования
Suwayomi-Server установлен и запущен локально на порту
4567(конечная точка по умолчанию:http://127.0.0.1:4567/api/graphql).Python 3.10+ установлен в вашей системе.
?? Руководство по установке
?? Настройка 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?? Настройка 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?? Настройка 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?? Конфигурация ИИ-клиента
1. Claude Desktop
Добавьте это в ваш 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"
}
}
}
}(В macOS/Linux замените command на /path/to/suwayomi-mcp/.venv/bin/python)
2. Claude Code CLI (~/.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"
}
}
}
}?? Примеры реальных диалогов
Пример 1: Аудит библиотеки и рекомендации
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?"Пример 2: Автоматическое добавление тайтлов
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."Пример 3: Пакетная загрузка глав
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)."?? Интерактивный визуализатор нейронной сети
Этот проект включает анимированный в реальном времени Neural Synaptic Graph, который визуализирует прохождение пакетов через каждый слой MCP-моста.
Чтобы запустить визуализатор:
python -m http.server 8080 --directory visualizerОткройте http://localhost:8080 в вашем браузере, чтобы взаимодействовать с кинетическими узлами, запускать последовательности синаптических импульсов и просматривать телеметрию полезной нагрузки в реальном времени.
?? Устранение неполадок и FAQ
Unable to connect to remote server (127.0.0.1:4567)
Причина: Suwayomi-Server не запущен.
Решение: Запустите ваш локальный демон Suwayomi (
Suwayomi Launcher.batна Windows илиsuwayomi-serverчерез терминал) и убедитесь, чтоhttp://localhost:4567загружается в браузере.
GraphQL Errors: Missing source
Причина: Манга была импортирована из расширения, которое в настоящее время отключено или удалено.
Решение: Откройте Suwayomi WebUI -> Browse -> Extensions и убедитесь, что соответствующее расширение установлено и обновлено.
?? Лицензия
Лицензия 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