Suwayomi MCP Server
?? Suwayomi MCP 服务器
一个高性能的**模型上下文协议(MCP)**服务器,可将 AI 编程助手和自主代理(Claude Code、Claude Desktop、Cursor、Windsurf、Antigravity)直接连接到您自托管的 Suwayomi-Server 漫画和韩漫库。
?? 问题与解决方案
?? 瓶颈
漫画、韩漫和轻小说爱好者通常会在多个扩展源(MangaDex、Webtoons、Asura、Flame 等)中管理数百部作品和数千个章节。
在此之前,使用 AI 代理管理这些收藏是零散的:
移动端 Mihon/Tachiyomi 没有公开的 API,需要脆弱的静态备份解析(
.tachibk),无法执行实时搜索、写入更改或下载章节。聚合器 UI 需要手动搜索、在 5 个以上的扩展标签页中点击,并手动排队下载章节。
?? 解决方案
suwayomi-mcp 弥合了这一差距。通过标准 JSON-RPC(stdio 传输)直接与 Suwayomi 的本地 GraphQL 引擎通信,您的 AI 助手可以:
实时审计您的收藏库状态(跟踪未读章节积压、完成状态和类型)。
在您的数据库中执行即时全文搜索,并批量将作品添加到收藏。
用一句自然语言排队并触发后台章节下载。
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'并将其添加到我的收藏。" |
|
| "下载 Hand Jumper 接下来的 5 个未读章节。" |
|
| "检查 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 设置(终端 / 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?? AI 客户端配置
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)."?? 交互式神经网络可视化器
此项目包含一个实时动画的神经突触图,可可视化 MCP 桥接每一层的数据包传输。
启动可视化器:
python -m http.server 8080 --directory visualizer在浏览器中打开 http://localhost:8080,与动态节点交互、触发突触脉冲序列,并检查实时负载遥测。
?? 故障排除与常见问题
无法连接到远程服务器(127.0.0.1:4567)
原因:Suwayomi-Server 未运行。
修复:启动您的本地 Suwayomi 守护进程(Windows 上为
Suwayomi Launcher.bat,或通过终端运行suwayomi-server),并验证http://localhost:4567是否能在浏览器中正常加载。
GraphQL 错误:缺少源
原因:该漫画是从当前已禁用或已卸载的扩展导入的。
修复:打开 Suwayomi WebUI -> 浏览 -> 扩展,确保相应的扩展已安装并更新。
?? 许可证
MIT 许可证。版权所有(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