Skip to main content
Glama
Augumenter

Suwayomi MCP Server

by Augumenter

?? Suwayomi MCP Server

License: MIT Python 3.10+ MCP Standard Suwayomi-Server

고성능 Model Context Protocol (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 어시스턴트는 다음을 수행할 수 있습니다:

  1. 라이브러리 상태를 실시간으로 감사합니다(읽지 않은 챕터 백로그, 완료 상태, 장르 추적).

  2. 데이터베이스 전체에서 즉시 전체 텍스트 검색을 실행하고 즐겨찾기에 타이틀을 일괄 추가합니다.

  3. 자연어 한 문장으로 백그라운드 챕터 다운로드를 대기열에 추가하고 실행합니다.


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

??? 도구 모음 및 실제 프롬프트

도구

시그니처

채팅에서 요청하는 내용

suwayomi_get_library

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

"내 라이브러리에서 현재 읽지 않은 챕터가 100개 이상인 만화는?"

suwayomi_search_and_add

(query, auto_add_first=False, limit=20)

"내 데이터베이스에서 'Latna Saga'를 찾아 즐겨찾기에 추가해 줘."

suwayomi_download_chapters

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

"Hand Jumper의 다음 읽지 않은 챕터 5개를 다운로드해 줘."

suwayomi_get_download_status

()

"Suwayomi 챕터 다운로더가 아직 실행 중인지 확인해 줘."


?? 사전 요구 사항

  1. **Suwayomi-Server**가 로컬에서 포트 4567에 설치되어 실행 중이어야 합니다(기본 엔드포인트: http://127.0.0.1:4567/api/graphql).

  2. 시스템에 **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

?? AI 클라이언트 설정

1. Claude Desktop

이 내용을 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"
      }
    }
  }
}

(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 브리지의 모든 계층을 통과하는 패킷 전송을 시각화하는 실시간 애니메이션 Neural Synaptic Graph가 포함되어 있습니다.

시각화 도구를 실행하려면:

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 데몬(Windows의 Suwayomi Launcher.bat 또는 터미널의 suwayomi-server)을 시작하고 브라우저에서 http://localhost:4567이 로드되는지 확인하세요.

GraphQL Errors: Missing source

  • 원인: 만화가 현재 비활성화되거나 제거된 확장에서 가져온 것입니다.

  • 해결 방법: Suwayomi WebUI -> Browse -> Extensions를 열고 해당 확장이 설치되고 업데이트되었는지 확인하세요.


?? 라이선스

MIT 라이선스. 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

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers