Skip to main content
Glama

komga-mcp

Part of the arr-mcps collection. MCP server exposing Komga's REST API as tools for browsing and managing comic, manga, BD, magazine, and ebook libraries. It is built with FastMCP.

Install

Download a wheel from the latest release and install it as a uv tool:

uv tool install komga_mcp-*.whl

Register it with Claude Code:

claude mcp add komga \
  --env KOMGA_URL=https://your-komga-host \
  --env KOMGA_API_KEY=<api-key> \
  -- komga-mcp

From source

uv sync
cp .env.example .env
claude mcp add komga \
  --env KOMGA_URL=https://your-komga-host \
  --env KOMGA_API_KEY=<api-key> \
  -- uv run --directory /path/to/komga-mcp komga-mcp

Related MCP server: komga-mcp

Configuration

Komga API keys are created in the Komga user settings. The key is sent as X-API-Key on every request. The server does not accept credentials supplied by an MCP tool call.

Env var

Required

Default

KOMGA_URL

yes

-

KOMGA_API_KEY

yes

-

KOMGA_VERIFY_TLS

no

true

KOMGA_URL is the server root, without /api; the client adds the documented /api/v1 and /api/v2 paths itself. Set KOMGA_VERIFY_TLS=false only when a self-signed certificate is intentional.

Tools

8 resource-scoped tools, each covering multiple Komga REST endpoints (81 total) via an operation parameter. Call a tool with operation set to one of its listed operations (the function names below, e.g. list_libraries) and an arguments dict matching that operation's parameters — the tool's own description (visible to your MCP client) lists every operation, its signature, and a one-line doc, including any "Requires ADMIN" notes. Image, file-download, page-stream, and multipart ComicRack endpoints are intentionally excluded.

Tool

Operations

Kind

Covers

komga_libraries

9

reads + writes

Libraries: list, get, create, update, delete, scan, analyze, refresh metadata, empty trash

komga_series

13

reads + writes

Series: search, get, collections, latest/new/updated, thumbnails, metadata, analyze, read progress

komga_books

16

reads + writes

Books: search, get, pages, next/previous, readlists, thumbnails, latest/ondeck/duplicates, metadata, analyze, read progress

komga_collections

6

reads + writes

Collections: list, get, series, create, update, delete

komga_readlists

8

reads + writes

Readlists: list, get, books, next/previous book, create, update, delete

komga_referential_metadata

10

read-only

Authors, tags, genres, publishers, languages, age ratings, sharing labels, release years

komga_users_api_keys

12

reads + writes

whoami, users CRUD, passwords, API keys, auth activity

komga_server

7

reads + writes

Server info, settings, claim status, history, tasks, filesystem

Example: komga_libraries(operation="scan_library", arguments={"library_id": "l1"}).

Search conditions

search_series, search_books, and search_series_alphabetical_groups send a JSON body containing fullTextSearch and an optional recursive condition. Pagination is sent as query parameters (page, size, repeated sort, and unpaged). For example:

{
  "fullTextSearch": "berserk",
  "condition": {
    "allOf": [
      {"genre": {"operator": "contains", "value": "action"}},
      {"readStatus": {"operator": "is", "value": "UNREAD"}}
    ]
  }
}

Use anyOf for OR and allOf for AND. String operators include is, isNot, beginsWith, contains, endsWith, and their negative forms. Boolean fields use isTrue or isFalse; date fields use after, before, isInTheLast, isNotInTheLast, isNull, or isNotNull.

Metadata patches use Komga's normal semantics: omit a field to leave it alone, or send null to unset it. Read progress accepts page and/or completed.

Development

make help

Command

Does

make sync

Run uv sync

make test

Run the offline test suite

make test-integration

Run live tests (needs KOMGA_URL/KOMGA_API_KEY)

make build

Build wheel and sdist into dist/

make bump-patch / bump-minor / bump-major

Bump package version and lockfile

make clean

Remove build artifacts

The release workflow runs tests and publishes wheel and sdist files whenever a v* tag is pushed.

Available Tools

8 tools
komga_booksA

komga books operations on Komga. Pass operation and an arguments dict matching that operation's parameters.

  • analyze_book(book_id) — Analyze a book. Requires ADMIN.

  • get_book(book_id) — Get book details, media information, metadata, and read progress.

  • get_book_next(book_id) — Get the next book in the series.

  • get_book_pages(book_id) — List page metadata for a book without downloading page images.

  • get_book_previous(book_id) — Get the previous book in the series.

  • get_book_readlists(book_id) — List readlists containing a book.

  • get_books_ondeck(library_id=None, page=0, size=50, sort=None, unpaged=False) — List books currently on deck for the authenticated user.

  • get_duplicate_books(page=0, size=50, sort=None, unpaged=False) — List duplicate books by file hash. Requires ADMIN.

  • get_latest_books(library_id=None, page=0, size=50, sort=None, unpaged=False) — List recently added or updated books.

  • list_book_thumbnails(book_id) — List thumbnail metadata for a book; does not download image bytes.

  • mark_book_unread(book_id) — Mark a book as unread.

  • refresh_book_metadata(book_id) — Re-import embedded metadata for a book. Requires ADMIN.

  • search_books(full_text='', condition=None, page=0, size=50, sort=None, unpaged=False) — Search books using Komga's BookSearch body. Structured condition leaves are keyed by fields such as libraryId, collectionId, title, tag, genre, publisher, language, ageRating, readStatus, seriesStatus, mediaStatus, author, deleted, complete, oneShot, releaseDate, numberSort, and seriesId. Each leaf contains an operator object. Use string operators is, isNot, beginsWith, doesNotBeginWith, contains, doesNotContain, endsWith, or doesNotEndWith; booleans use isTrue/isFalse; dates use after/before/isInTheLast/isNotInTheLast/isNull/isNotNull; and group conditions with anyOf (OR) or allOf (AND). Read-status values are UNREAD, READ, IN_PROGRESS; media-status values are UNKNOWN, ERROR, READY, UNSUPPORTED, OUTDATED; series-status values are ENDED, ONGOING, ABANDONED, HIATUS.

  • set_book_read_progress(book_id, page=None, completed=None) — Set a book's read position. Supply page and/or completed.

  • update_book_metadata(book_id, patch) — Update book metadata; null unsets a field and omission keeps it. Requires ADMIN.

  • update_books_metadata_bulk(updates) — Bulk update book metadata using a map of book ID to patch. Requires ADMIN.

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility for disclosing behaviors. It explicitly notes permissions (ADMIN for some ops), side-effect semantics for updates ('null unsets a field'), and non-downloading behaviors for page/thumbnail listing. It also explains the arguments structure and search syntax, covering edge cases like nullable arguments.

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 front-loaded with the general invocation pattern, then presents a well-organized bullet list of operations with minimal but sufficient detail. Each line is concise and information-dense, avoiding redundancy while covering 16 distinct operations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (16 operations, varied parameters, permissions, rich search conditions), the description is exceptionally complete. It details permissions, null handling, and search operator semantics. Since an output schema exists, lack of return-value descriptions is acceptable.

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?

The input schema only defines `operation` (enum) and a generic `arguments` object with 0% coverage. The description fully compensates by enumerating every operation's parameters, defaults, and types (e.g., 'page=0, size=50'). This is essential for correct tool use and is provided comprehensively.

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 it performs 'komga books operations on Komga' and lists all 16 supported operations with specific verbs and targets (e.g., 'get_book_next', 'search_books'). It distinguishes from sibling tools by focusing exclusively on books, and the operation list makes the tool's scope unambiguous.

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 provides clear guidance on how to invoke the tool (pass operation + arguments dict) and details each operation's parameters and required permissions (e.g., 'Requires ADMIN'). However, it does not explicitly mention when not to use this tool or contrast with sibling tools, though the separation is obvious from naming.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komga_collectionsA

komga collections operations on Komga. Pass operation and an arguments dict matching that operation's parameters.

  • create_collection(collection) — Create a collection. Requires ADMIN.

  • delete_collection(collection_id) — Delete a collection. Requires ADMIN.

  • get_collection(collection_id) — Get collection details.

  • get_collection_series(collection_id, status=None, read_status=None, publisher=None, language=None, genre=None, tag=None, age_rating=None, release_year=None, author=None, page=0, size=50, sort=None, unpaged=False) — List series in a collection using Komga's legacy filter query params.

  • list_collections(search=None, library_id=None, page=0, size=50, sort=None, unpaged=False) — List collections, optionally filtered by search text or library.

  • update_collection(collection_id, patch) — Update a collection. Requires ADMIN.

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are present, the description carries the full transparency burden. It discloses that create_collection, delete_collection, and update_collection require ADMIN, and it specifies that arguments must match the operation's parameters. However, it does not cover side effects (e.g., cascading deletes), error handling, or read-operation specifics beyond what is inherent in the operation names.

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 compact, well-organized bullet list that front-loads the overall purpose and then presents each operation's signature and any permission requirements in a single line. No redundant text or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of six operations with varying parameters, the description provides complete signatures for all, along with permission flags. It covers all documented operations and their parameters, making it sufficient for an agent to invoke the tool correctly. The output schema likely handles return values, so no extra explanation is needed.

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?

The input schema only defines operation and arguments, while the description provides detailed parameter lists for each operation, including defaults (e.g., page=0, size=50) and optional filters for get_collection_series and list_collections. This adds significant semantic meaning beyond the sparse schema, which has 0% coverage.

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 it covers 'komga collections operations' and enumerates six specific operations (create, delete, get, list, update) with concise descriptions for each, distinguishing it from sibling tools focused on other Komga entities like series or books. The verb+resource pattern is explicit and 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 for collection-related tasks but does not explicitly contrast with sibling tools. It does note ADMIN requirements for mutating operations (create, delete, update), which guides when to use which operation, but lacks direct alternative tool guidance like 'use komga_series for series operations.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komga_librariesA

komga libraries operations on Komga. Pass operation and an arguments dict matching that operation's parameters.

  • analyze_library(library_id) — Analyze all books in a library. Requires ADMIN.

  • create_library(library) — Create a library. Requires the Komga ADMIN role.

  • delete_library(library_id) — Delete a library without deleting its files. Requires ADMIN.

  • empty_library_trash(library_id) — Permanently empty a library's trash. Requires ADMIN.

  • get_library(library_id) — Get one library by ID.

  • list_libraries() — List libraries visible to the authenticated Komga user.

  • refresh_library_metadata(library_id) — Refresh embedded metadata for a library. Requires ADMIN.

  • scan_library(library_id, deep=False) — Scan a library for new or changed files. Requires ADMIN.

  • update_library(library_id, patch) — Partially update a library. Requires the Komga ADMIN role.

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description bears the burden of providing behavioral context. It does well: 'Delete a library without deleting its files', 'Permanently empty a library's trash', and 'Scan a library for new or changed files' disclose side effects and permissions. It lacks some detail about update/analyze behaviors, but the central safety-relevant behaviors are included.

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 efficiently structured: a short usage instruction followed by a bulleted list of operations. Every line conveys a distinct purpose and permission note, with no redundant filler. The front-loaded dispatch instruction helps an agent quickly understand how to call the tool.

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?

The description fully lists all operations, their required roles, and the main effects, which is strong for a dispatcher with nine operations. The output schema provides return-value coverage. However, the incomplete shape of the argument dictionaries for `create_library` and `update_library` means an agent could not fully construct a correct call from description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, the description needs to compensate. It provides function signatures like `scan_library(library_id, deep=False)` and names `library`, `library_id`, and `patch`, which is helpful. Yet it never explains the structure of the `library` object, the contents of `patch`, or the meaning of `deep`, so the actual argument semantics remain under-specified.

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 enumerates nine specific library operations with explicit verbs and resources, such as 'analyze_library', 'delete_library', and 'update_library'. Each line states the exact action, so the tool's purpose as a dispatcher for Komga library operations is unmistakable and distinct from sibling tools focused on other resources.

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 operation list and general 'Komga libraries operations' phrasing imply when the tool should be used, and the ADMIN requirements help agents avoid unprivileged calls. However, it does not explicitly mention the alternative sibling tools or state when to prefer this tool over them, so usage guidance is implied rather than precise.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komga_readlistsA

komga readlists operations on Komga. Pass operation and an arguments dict matching that operation's parameters.

  • create_readlist(readlist) — Create a readlist. Requires ADMIN.

  • delete_readlist(readlist_id) — Delete a readlist. Requires ADMIN.

  • get_readlist(readlist_id) — Get readlist details.

  • get_readlist_book_next(readlist_id, book_id) — Get the next book in a readlist.

  • get_readlist_book_previous(readlist_id, book_id) — Get the previous book in a readlist.

  • get_readlist_books(readlist_id, library_id=None, read_status=None, tag=None, media_status=None, deleted=None, author=None, page=0, size=50, sort=None, unpaged=False) — List books in a readlist using Komga's filter query params.

  • list_readlists(search=None, library_id=None, page=0, size=50, sort=None, unpaged=False) — List readlists, optionally filtered by search text or library.

  • update_readlist(readlist_id, patch) — Update a readlist. Requires ADMIN.

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the transparency burden. It explicitly flags ADMIN requirements for create_readlist, delete_readlist, and update_readlist, which is valuable beyond the schema. However, it does not describe side-effect behavior in detail or confirm read/list operations as safe.

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 well structured as an intro line plus compact operation bullets. It front-loads the key dispatch rule and each operation earns its place with a short actionable summary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All eight operations and their ADMIN requirements are covered, which is helpful for a generic dispatcher schema. Yet the argument semantics are not fully complete: create_readlist and update_readlist rely on underspecified objects, and filter parameter values are not defined well enough for reliable invocation.

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 is the main source of parameter meaning. It provides full signature lines including defaults, pagination, and filter parameters for get_readlist_books and list_readlists. It stops short of defining the structure of the readlist object and patch argument, which would materially improve confidence in creating or updating readlists.

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 identifies this as the readlists area of Komga and enumerates eight distinct operations with one-line purposes. It distinguishes the tool at the resource level from sibling Komga tools, though the opening phrase is somewhat generic and leans on the operation list for specificity.

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 operation list makes it clear what the tool can do, but the description does not explicitly state when to use this tool instead of a sibling such as komga_collections or komga_books. Usage context is implied rather than directly prescribed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komga_referential_metadataB
Read-only

komga referential metadata operations on Komga. Pass operation and an arguments dict matching that operation's parameters.

  • list_age_ratings(search=None, library_id=None, collection_id=None, series_id=None, readlist_id=None, page=0, size=50, sort=None, unpaged=False) — List distinct age ratings.

  • list_author_names(search=None, page=0, size=50, sort=None, unpaged=False) — List distinct author names.

  • list_author_roles(search=None, page=0, size=50, sort=None, unpaged=False) — List distinct author roles.

  • list_authors(search=None, role=None, library_id=None, collection_id=None, series_id=None, readlist_id=None, page=0, size=50, sort=None, unpaged=False) — List author names and roles used by the library.

  • list_genres(search=None, library_id=None, collection_id=None, series_id=None, readlist_id=None, page=0, size=50, sort=None, unpaged=False) — List distinct genres.

  • list_languages(search=None, library_id=None, collection_id=None, series_id=None, readlist_id=None, page=0, size=50, sort=None, unpaged=False) — List distinct languages.

  • list_publishers(search=None, library_id=None, collection_id=None, series_id=None, readlist_id=None, page=0, size=50, sort=None, unpaged=False) — List distinct publishers.

  • list_series_release_years(search=None, library_id=None, collection_id=None, series_id=None, readlist_id=None, page=0, size=50, sort=None, unpaged=False) — List distinct series release years.

  • list_sharing_labels(search=None, library_id=None, collection_id=None, series_id=None, readlist_id=None, page=0, size=50, sort=None, unpaged=False) — List distinct sharing labels.

  • list_tags(search=None, include=None, library_id=None, collection_id=None, series_id=None, readlist_id=None, page=0, size=50, sort=None, unpaged=False) — List distinct tags; include can be SERIES, BOOK, or BOTH.

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation readOnlyHint=true is provided, and the description makes clear these are list operations, which aligns. The description adds value by listing the specific operations, which are all read-only queries, but it does not go beyond the annotation in disclosing behavioral traits like pagination defaults or potential performance considerations. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear introductory sentence followed by a bullet-like list of operations. It is efficient in that each line is concise and informative. The list format is easy to scan, and the description is front-loaded with the core instruction. Slight redundancy in repeating common parameters is acceptable for clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the high complexity of this tool (ten operations with many parameters), the description provides reasonable coverage by listing each operation and its parameters. However, it lacks details on response structure (though an output schema exists), filtering behavior, or edge cases. The absence of usage guidelines and limited parameter semantics makes it less complete for a tool with such a broad scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has a low description coverage of 0% (the 'arguments' property is a generic object with additionalProperties true), so the description carries the full burden of explaining parameters. The description lists the parameters for each operation, which is helpful, but it provides minimal semantics beyond parameter names and a brief purpose. For example, it does not explain what 'search' filters against or how 'sort' works, leaving gaps in understanding.

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 that this tool performs list operations on distinct metadata values like age ratings, authors, genres, etc. It enumerates each operation with a one-line summary, making the purpose clear. However, it does not distinguish itself from sibling tools beyond listing metadata-specific operations, which is inferred from the operation names.

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 saying to pass an `operation` and an `arguments` dict, and it lists each operation with its parameters. It does not explicitly state when to use this tool versus sibling tools, but the metadata-specific nature is implied. No exclusions or alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komga_seriesA

komga series operations on Komga. Pass operation and an arguments dict matching that operation's parameters.

  • analyze_series(series_id) — Analyze all books in a series. Requires ADMIN.

  • get_latest_series(library_id=None, deleted=None, oneshot=None, page=0, size=50, sort=None, unpaged=False) — List recently added or updated series.

  • get_new_series(library_id=None, deleted=None, oneshot=None, page=0, size=50, sort=None, unpaged=False) — List newly added series.

  • get_series(series_id) — Get series details and metadata by ID.

  • get_series_collections(series_id) — List collections containing a series.

  • get_updated_series(library_id=None, deleted=None, oneshot=None, page=0, size=50, sort=None, unpaged=False) — List series that were updated but are not newly added.

  • list_series_thumbnails(series_id) — List thumbnail metadata for a series; does not download image bytes.

  • mark_series_read(series_id) — Mark every book in a series as read.

  • mark_series_unread(series_id) — Mark every book in a series as unread.

  • refresh_series_metadata(series_id) — Re-import embedded series metadata. Requires ADMIN.

  • search_series(full_text='', condition=None, page=0, size=50, sort=None, unpaged=False) — Search series using Komga's SeriesSearch body. Structured condition leaves are keyed by fields such as libraryId, collectionId, title, tag, genre, publisher, language, ageRating, readStatus, seriesStatus, mediaStatus, author, deleted, complete, oneShot, releaseDate, numberSort, and seriesId. Each leaf contains an operator object. Use string operators is, isNot, beginsWith, doesNotBeginWith, contains, doesNotContain, endsWith, or doesNotEndWith; booleans use isTrue/isFalse; dates use after/before/isInTheLast/isNotInTheLast/isNull/isNotNull; and group conditions with anyOf (OR) or allOf (AND). Read-status values are UNREAD, READ, IN_PROGRESS; media-status values are UNKNOWN, ERROR, READY, UNSUPPORTED, OUTDATED; series-status values are ENDED, ONGOING, ABANDONED, HIATUS.

  • search_series_alphabetical_groups(full_text='', condition=None, page=0, size=50, sort=None, unpaged=False) — List series grouped alphabetically. Structured condition leaves are keyed by fields such as libraryId, collectionId, title, tag, genre, publisher, language, ageRating, readStatus, seriesStatus, mediaStatus, author, deleted, complete, oneShot, releaseDate, numberSort, and seriesId. Each leaf contains an operator object. Use string operators is, isNot, beginsWith, doesNotBeginWith, contains, doesNotContain, endsWith, or doesNotEndWith; booleans use isTrue/isFalse; dates use after/before/isInTheLast/isNotInTheLast/isNull/isNotNull; and group conditions with anyOf (OR) or allOf (AND). Read-status values are UNREAD, READ, IN_PROGRESS; media-status values are UNKNOWN, ERROR, READY, UNSUPPORTED, OUTDATED; series-status values are ENDED, ONGOING, ABANDONED, HIATUS.

  • update_series_metadata(series_id, patch) — Update series metadata; null unsets a field and omission keeps it. Requires ADMIN.

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/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. It notes that analyze_series and refresh_series_metadata require ADMIN, that list_series_thumbnails does not download image bytes, and that update_series_metadata has null/omission semantics. It also describes the search condition structure in detail, which is complex. Minor gap: it does not state side effects of mark_series_read/unread or that update_series_metadata is a mutation, but the verbs imply it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured as a bulleted list of operations, which is scannable. However, it is quite long, especially the search condition repeated twice for two operations, adding verbosity. It could be trimmed by referencing the condition once, but overall structure is good and front-loaded with the operation list.

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 complexity (13 operations, many with complex parameters), the description is thorough. It covers return types implicitly (e.g., 'list', 'get details'), and with an output schema present, it doesn't need to detail return formats. It provides enough context for an agent to select and invoke operations correctly, but some operations lack side-effect details (e.g., mark_series_read) which would enhance completeness.

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?

The schema has 0% coverage (only two generic params: operation and arguments), so the description must compensate by documenting each operation's parameters. It does this effectively by listing exact function signatures with parameter names and defaults, and for search operations, it explains the condition structure in detail (supported fields, operators, enums). This is far beyond the schema's capability.

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 provides a clear list of all operations with specific verbs (e.g., 'analyze_series', 'get_latest_series', 'search_series') and explicit resource scope (all on Komga series). It distinguishes between similar operations like 'get_latest_series', 'get_new_series', and 'get_updated_series' by their exact definitions.

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 explains when to use each operation, e.g., 'List recently added or updated series' vs 'List newly added series' vs 'List series that were updated but are not newly added'. It also notes admin requirements for some operations, providing clear context. However, it does not explicitly mention when not to use this tool compared to siblings, but the sibling scope is obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komga_serverA

komga server operations on Komga. Pass operation and an arguments dict matching that operation's parameters.

  • clear_server_tasks() — Cancel all queued server tasks and return the number removed. Requires ADMIN.

  • get_server_claim_status() — Return whether the Komga server has been claimed.

  • get_server_history(page=0, size=50, sort=None, unpaged=False) — Get server event history. Requires ADMIN.

  • get_server_info() — Get Komga build and runtime information. Requires ADMIN.

  • get_server_settings() — Get server settings. Requires ADMIN.

  • list_filesystem(path, show_files=False) — List server filesystem directories for library setup. Requires ADMIN.

  • update_server_settings(patch) — Update server settings. Requires ADMIN.

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. It does this well by noting ADMIN requirements for most operations, flagging clear_server_tasks as canceling queued tasks and returning the number removed, and marking update_server_settings as an update. It does not cover error behavior or return shapes for every operation, but the core side effects and permissions are disclosed.

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 well-structured: a one-sentence dispatcher explanation followed by compact bullet entries. No word is wasted, and the format makes it easy for an agent to scan operations, parameters, and permission requirements.

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 aggregates seven distinct server operations with generic schema coverage, the description covers each operation, its parameters, and admin requirements. It does not explain output schemas, but an output schema exists, reducing that burden. Minor gaps like the exact structure of 'patch' prevent a perfect score.

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 input schema only exposes a generic operation enum and an opaque 'arguments' object, so the description's per-operation signatures add substantial meaning. It lists parameters with defaults (page=0, size=50, unpaged=False, show_files=False) and gives enough context for most arguments; the main gap is that 'patch' is not structurally defined, but the operation name and general 'patch' convention help.

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 defines the tool as a dispatcher for Komga server operations and enumerates seven specific operations with precise verbs (clear, get, list, update). Each bullet names a distinct server-level action, which differentiates this tool from sibling tools focused on libraries, series, books, collections, etc.

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 opening instruction 'Pass operation and an arguments dict matching that operation's parameters' gives concrete invocation guidance. The server-scoped title and operation list make the intended domain clear versus sibling tools, though it does not explicitly state when not to use this tool or name specific alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

komga_users_api_keysA

komga users api keys operations on Komga. Pass operation and an arguments dict matching that operation's parameters.

  • change_my_password(password) — Change the current user's password.

  • change_user_password(user_id, password) — Change another user's password. Requires ADMIN.

  • create_api_key(request) — Create an API key for the current user.

  • create_user(user) — Create a user. Requires ADMIN.

  • delete_api_key(key_id) — Revoke one of the current user's API keys.

  • delete_user(user_id) — Delete a user. Requires ADMIN.

  • list_auth_activity(page=0, size=50, sort=None, unpaged=False) — List all authentication activity. Requires ADMIN.

  • list_my_api_keys() — List API keys belonging to the current user.

  • list_my_auth_activity(page=0, size=50, sort=None, unpaged=False) — List authentication activity for the current user.

  • list_users(page=0, size=50, sort=None, unpaged=False) — List users. Requires ADMIN.

  • update_user(user_id, patch) — Update a user. Requires ADMIN.

  • whoami() — Return the currently authenticated user.

ParametersJSON Schema
NameRequiredDescriptionDefault
argumentsNo
operationYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the transparency burden. It discloses important behavior such as which operations require ADMIN, which affect the current user vs other users, and which create or revoke credentials. It does not explain error behavior or reversibility, but state-changing verbs plus permission notes cover the main operational traits.

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?

A brief dispatcher instruction is followed by a well-organized bullet list with one-line explanations for each operation. Every line conveys a parameter signature, a concise behavioral description, and permission context, with no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 12 operations, a mostly untyped arguments schema, and no annotations, so the description needs to do heavy lifting. It covers operation names, parameters, and admin requirements, but it falls short of fully specifying payload structures for create_user, update_user, and create_api_key.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant value over the free-form arguments schema by listing per-operation parameter signatures and pagination defaults. However, opaque parameters such as user, request, and patch lack shape or required-field documentation, so agents still must infer important parts of the argument payload.

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 lists concrete operations such as change_my_password, create_user, delete_user, list_users, and whoami, making the dispatcher's purpose unmistakable. The users/auth/API-key scope clearly distinguishes it from sibling Komga tools like komga_series, komga_libraries, and komga_books.

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 scope is obviously Komga user, API-key, and authentication activity management, and every operation is documented. It does not explicitly provide when-not-to-use statements or sibling alternatives, but the domain context is strong enough to route relevant requests here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.9/5.0
Disambiguation4/5

The eight top-level tools are clearly separated by resource domain, and most operations have distinct purposes. However, within series and books there are overlapping list operations (e.g., get_latest_series vs get_new_series vs get_updated_series) that could cause an agent to pick the wrong one.

Naming Consistency5/5

All tools use the komga_<resource> pattern, and operations consistently follow snake_case verb_noun naming like get_series, create_library, mark_book_unread, and update_collection. The naming is highly predictable with no mixing of conventions.

Tool Count4/5

Eight namespace tools is a reasonable scope for a server covering Komga's broad API, and each namespace maps to a meaningful resource domain. However, each tool acts as a large dynamic dispatcher, hiding many operations behind a single tool, which slightly reduces discoverability.

Completeness4/5

The server covers the major Komga domains: libraries, series, books, collections, readlists, metadata, users/API keys, and server settings, with update, delete, search, and lifecycle operations. Minor gaps exist, such as no direct list-books-in-series operation (requires a structured search) and no server claim operation.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    A read-only MCP server that exposes Komga reading data via Streamable HTTP, providing tools for searching comics, listing unread series, and tracking reading progress.
    MIT
  • A
    license
    C
    quality
    A
    maintenance
    MCP server that exposes qui's JSON REST API as tools for monitoring and managing qBittorrent instances, torrents, automations, cross-seeding, RSS, backups, and related services.
    12
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server that exposes Mylar3's HTTP API as tools, letting an LLM read and manage a comic library including watchlist, wanted issues, upcoming, history, logs, story arcs, and providers.
    5
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/arr-mcps/komga-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server