Skip to main content
Glama
Augumenter

Suwayomi MCP Server

by Augumenter

# ?? Suwayomi MCP Server

License: MIT Python 3.10+ MCP Standard Suwayomi-Server

A high-performance Model Context Protocol (MCP) server that connects AI coding assistants and autonomous agents (Claude Code, Claude Desktop, Cursor, Windsurf, Antigravity) directly to your self-hosted Suwayomi-Server manga and manhwa library.


? The Problem & The Solution

The Bottleneck

Manga, manhwa, and light-novel enthusiasts often manage hundreds of titles and thousands of chapters across multiple extension sources (MangaDex, Webtoons, Asura, Flame, etc.).

Until now, using AI agents to manage this collection was fractured:

  • Mobile Mihon/Tachiyomi has no exposed API, requiring brittle static backup parsing (.tachibk) that cannot execute live searches, write changes, or download chapters.

  • Aggregator UIs require manual searching, clicking across 5+ extension tabs, and manually queueing chapter updates.

The Solution

suwayomi-mcp bridges the gap. By communicating directly with Suwayomi’s local GraphQL engine over standard JSON-RPC (stdio transport), your AI assistant can:

  1. Audit your library state in real time (tracking unread chapter backlogs, completion status, and genres).

  2. Execute instant full-text searches across your database and batch-add titles to your favorites.

  3. Queue and trigger background chapter downloads with a single natural language sentence.


Related MCP server: Mealie MCP Server

??? System Architecture

+-------------------------------------------------------------------------+
|                         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               |
+-------------------------------------------------------------------------+

??? Tool Suite & Real-World Prompts

Tool

Signature

What You Ask In Chat

suwayomi_get_library

(in_library_only=True, search=None, limit=50)

"Which manga in my library currently have more than 100 unread chapters?"

suwayomi_search_and_add

(query, auto_add_first=False, limit=20)

"Find 'Latna Saga' in my database and add it to my favorites."

suwayomi_download_chapters

(manga_id, count=5, unread_only=True, chapter_ids=None)

"Download the next 5 unread chapters of Hand Jumper."

suwayomi_get_download_status

()

"Check if the Suwayomi chapter downloader is still running."


?? Prerequisites

  1. Suwayomi-Server installed and running locally on port 4567 (default endpoint: http://127.0.0.1:4567/api/graphql).

  2. Python 3.10+ installed on your system.


?? Installation Guide

?? Windows Setup (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 Setup (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 Setup (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 Client Configuration

1. Claude Desktop

Add this to your claude_desktop_config.json:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/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"
      }
    }
  }
}

(On macOS/Linux, replace command with /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"
      }
    }
  }
}

?? Real-World Conversation Examples

Example 1: Library Audit & Recommendations

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?"

Example 2: Automatic Title Ingestion

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."

Example 3: Batch Chapter Downloading

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)."

?? Interactive Neural Network Visualizer

This project includes a real-time animated Neural Synaptic Graph that visualizes packet transit across every layer of the MCP bridge.

To launch the visualizer:

python -m http.server 8080 --directory visualizer

Open http://localhost:8080 in your browser to interact with kinetic nodes, fire synaptic pulse sequences, and inspect live payload telemetry.


?? Troubleshooting & FAQ

Unable to connect to remote server (127.0.0.1:4567)

  • Cause: Suwayomi-Server is not running.

  • Fix: Start your local Suwayomi daemon (Suwayomi Launcher.bat on Windows or suwayomi-server via terminal) and verify http://localhost:4567 loads in your browser.

GraphQL Errors: Missing source

  • Cause: The manga was imported from an extension that is currently disabled or uninstalled.

  • Fix: Open Suwayomi WebUI -> Browse -> Extensions, and ensure the corresponding extension is installed and updated.


?? License

MIT License. Copyright (c) 2026 Ileri Nwajei (@augumenter).

Available Tools

4 tools
suwayomi_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).

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
manga_idYes
chapter_idsNo
unread_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
searchNo
in_library_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
auto_add_firstNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 4 tool updatesv0.1.0
    • First observedsuwayomi_download_chapters
    • First observedsuwayomi_get_download_status
    • First observedsuwayomi_get_library
    • First observedsuwayomi_search_and_add

TDQS

A4.1/5.0

Scored across 4 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness3/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers