komga
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@komgalist my Komga libraries"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
komga
MCP connector for a self-hosted Komga server (v1.29.2). It speaks the HTTP API over stdio and over stateless Streamable HTTP on localhost.
Komga is MIT-licensed software. This connector does not copy that code. It only calls the HTTP API on the server you configure. It is not affiliated with Komga.
The spec file komga.openapi.json is copied from Komga 1.29.2 (MIT, gotson/komga). It has 177 operations. This connector covers 155 of them in 34 tools. It leaves out 22 endpoints that return files, images, page bytes, font bytes, or multipart uploads. scripts/gen-operations.mjs writes src/operations.ts from the spec. Do not edit that file by hand.
Self-hosted servers only. There is no default base URL. KOMGA_URL is required.
Setup
npm install
npm run ci
npm start
npm run start:httpnpm start speaks stdio. npm run start:http serves Streamable HTTP at http://127.0.0.1:3000/mcp and GET /health. HTTP mode has no authentication of its own. Keep it on localhost.
{
"mcpServers": {
"komga": {
"command": "node",
"args": ["/workspace/connectors/komga/dist/index.js"],
"env": {
"KOMGA_URL": "http://127.0.0.1:25600",
"KOMGA_API_KEY": "...",
"KOMGA_ALLOW_WRITES": "false",
"KOMGA_TOOLSETS": "libraries,series,books,collections,readlists,referential_metadata,management"
}
}
}
}You can set KOMGA_USERNAME and KOMGA_PASSWORD instead of KOMGA_API_KEY. The connector then sends HTTP basic auth.
Docker (HTTP, no authentication, keep it on localhost):
docker build -t komga .
docker run -p 127.0.0.1:3000:3000 \
-e KOMGA_URL=http://127.0.0.1:25600 \
-e KOMGA_API_KEY=... \
komgaDo not put keys in the image.
Regenerate the registry after an OpenAPI bump.
npm run gen:operationsscripts/live-check.mjs talks to a real server over stdio. It needs KOMGA_URL and either KOMGA_API_KEY or KOMGA_USERNAME plus KOMGA_PASSWORD. It can also claim a fresh server when KOMGA_CLAIM=true. It sets KOMGA_TOOLSETS=all. Gated writes run only when KOMGA_ALLOW_WRITES=true. It prints pass or fail lines only. This workspace does not start Komga.
Related MCP server: mcp-calibre
Config
Variable | Meaning |
| Required. Self-hosted origin, |
| API key from User settings. Sent as the |
| Optional login, usually the account email. Set together with |
| Password for that login. Sent as HTTP basic auth. Redacted everywhere. |
| Must be the literal |
| Comma list of toolsets, or |
| Local request budget. Default 30. Cache hits do not spend it. |
| Upstream timeout. Default 20000. |
| Read cache TTL. Default 60. Writes clear the cache. |
| Contact token in the User-Agent. Must not contain a secret. |
|
|
| HTTP port. Default 3000. |
Invalid values are reported by field name and issue code. The rejected value is not included. API keys, passwords, and emails are redacted in logs, errors, tool results, thrown messages, and URLs.
Auth is X-API-Key when KOMGA_API_KEY is set. Otherwise it is Authorization: Basic from KOMGA_USERNAME and KOMGA_PASSWORD. The connector never puts credentials in the API URL.
Safety
GET is a read. POST, PUT, PATCH, and DELETE are writes, except a reviewed list of POST queries in READ_POST_PATHS (book list, series list, series groups, filesystem listing). GET /api/logout and GET /api/v1/login/set-cookie are writes (GET_SIDE_EFFECT_PATHS). Anything not on the read list stays a write.
A write needs confirm: true as a boolean and KOMGA_ALLOW_WRITES=true. The string "true" is rejected. Otherwise the tool returns a dry-run preview of method, path, query, and redacted body, and it sends nothing. Destructive, credential, and exposure operations add a warning line on the tool and on the preview. That set covers deletes, scans, analyze, refresh, trash empty, user changes, API key create and revoke, password change, settings, session, and claim.
API key create returns the key once, with a shown-only-once note. Later list and get calls redact it. User email, password, key, and token fields are redacted. Library folder paths stay in successful responses. Error text drops stack traces and filesystem paths.
HTTP 401 is unauthorized. HTTP 403 is forbidden. HTTP 404 is not found. HTTP 400 and 422 are invalid input. HTTP 429 includes Retry-After. Other failures are server, network, or timeout. Response bodies are capped.
File downloads, poster and page images, raw page bytes, font files, CSS, epub resources, and multipart poster uploads are not exposed.
Tools
Default KOMGA_TOOLSETS publishes 7 tools. KOMGA_TOOLSETS=all publishes 34 tools (155 operations, 91 reads and 64 writes). Each tool takes action plus optional params, query, body, and confirm.
action help with optional target returns the path, query, and body fields for one action. Descriptions list action names only, so the tool list stays small.
Toolset | Tool | Operations | Default |
libraries |
| 9 | yes |
series |
| 16 | yes |
books |
| 16 | yes |
collections |
| 5 | yes |
readlists |
| 5 | yes |
referential_metadata |
| 13 | yes |
management |
| 1 | yes |
announcements |
| 2 | no |
api_keys |
| 3 | no |
book_pages |
| 1 | no |
book_poster |
| 5 | no |
claim |
| 2 | no |
client_settings |
| 6 | no |
collection_poster |
| 4 | no |
collection_series |
| 1 | no |
current_user |
| 3 | no |
deprecated |
| 13 | no |
duplicate_pages |
| 6 | no |
file_system |
| 1 | no |
fonts |
| 1 | no |
history |
| 1 | no |
import |
| 3 | no |
mihon |
| 4 | no |
oauth2 |
| 1 | no |
readlist_books |
| 3 | no |
readlist_poster |
| 4 | no |
releases |
| 1 | no |
series_poster |
| 4 | no |
server_settings |
| 2 | no |
sync_points |
| 1 | no |
tasks |
| 1 | no |
user_session |
| 3 | no |
users |
| 7 | no |
web_pub_manifest |
| 7 | no |
Available Tools
7 toolskomga_booksADestructive
komga_books covers the books toolset (16 operations). Auth is the X-API-Key header, or HTTP basic auth from KOMGA_USERNAME and KOMGA_PASSWORD. Self-hosted Komga only. action help with target returns one action's parameters. Writes need confirm set to the boolean true and KOMGA_ALLOW_WRITES=true. Omit confirm for a dry-run preview that sends nothing. Destructive, credential, or exposure actions add an extra warning in the preview and here: delete, scan, analyze, refresh, trash empty, user or role changes, API key create or revoke, password change, settings, session, and claim. Actions: delete_file, delete_read_progress, get, get_book_id, get_duplicates, get_latest, get_next, get_ondeck, get_previous, get_readlists, patch_metadata, patch_metadata_book_id, patch_read_progress, post_analyze, post_list, post_metadata_refresh.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body for the Komga operation. Secrets are redacted in output. | |
| query | No | OpenAPI query parameters. | |
| action | Yes | Komga operation to call, or help. | |
| params | No | OpenAPI path parameters, such as seriesId. | |
| target | No | With action help, the action whose parameters to describe. | |
| confirm | No | Set to the boolean true to execute the write. Omit this field for a dry-run preview. false and the string true are rejected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing the auth mechanism (X-API-Key or basic auth), the self-hosted-only constraint, the KOMGA_ALLOW_WRITES gate, and the dry-run preview behavior. It also enumerates which actions carry extra destructive warnings (delete, scan, user/role, API key, password, settings, session, claim), which a preview alone would not surface in advance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads auth and write-safety before the action list, and each sentence carries useful information. The trailing action enumeration is somewhat long and partially duplicates the enum, but it aids scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-operation dispatcher with no output schema, the description covers auth, write gating, dry-run semantics, and destructive-action warnings well. It could say more about return shapes or how body/query/params map per action, but the essential calling information is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so parameter descriptions are already solid, but the description adds operational meaning: confirm must be the boolean true (false and string 'true' rejected) and omitting it triggers a preview that sends nothing, plus how target pairs with action help. That workflow context is not fully conveyed by the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States it covers the Komga books toolset (16 operations) and enumerates the available actions, so the verb+resource is clear. It does not explicitly say how it differs from siblings like komga_series or komga_readlists (which even appears as an action here), leaving some ambiguity to be inferred from the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete procedural guidance: use action help with target to inspect a single action, set confirm to execute a write, omit it for a dry-run. It does not name when to pick this tool over a sibling, but the operational context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
komga_collectionsADestructive
komga_collections covers the collections toolset (5 operations). Auth is the X-API-Key header, or HTTP basic auth from KOMGA_USERNAME and KOMGA_PASSWORD. Self-hosted Komga only. action help with target returns one action's parameters. Writes need confirm set to the boolean true and KOMGA_ALLOW_WRITES=true. Omit confirm for a dry-run preview that sends nothing. Destructive, credential, or exposure actions add an extra warning in the preview and here: delete, scan, analyze, refresh, trash empty, user or role changes, API key create or revoke, password change, settings, session, and claim. Actions: delete, get, get_id, patch, post.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body for the Komga operation. Secrets are redacted in output. | |
| query | No | OpenAPI query parameters. | |
| action | Yes | Komga operation to call, or help. | |
| params | No | OpenAPI path parameters, such as seriesId. | |
| target | No | With action help, the action whose parameters to describe. | |
| confirm | No | Set to the boolean true to execute the write. Omit this field for a dry-run preview. false and the string true are rejected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive/openWorld/non-idempotent, but the description adds real context beyond them: the confirm-gate mechanics, dry-run default behavior, the explicit list of high-risk action categories that trigger extra warnings, secret redaction in output, and the self-hosted-only constraint. The only blemish is the '5 operations' count against six enum values, a minor inconsistency rather than a contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but efficient — five sentences covering auth, write gating, dry-run, and the destructive list, with no filler. Front-loading is weak: it opens with a vague toolset statement rather than the write-safety rule, and the long warning enumeration is a comma run-on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter destructive dispatcher with no output schema, the description covers the safety model well but leaves the action semantics unexplained — an agent cannot tell from the text what delete destroys (a collection? its entries?), how get differs from get_id, or what patch/post expect in body. Delegating detail to 'action help' mitigates but does not close the gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains body, query, params, target, and confirm (including the rejection of false and the string 'true'). The description repeats the confirm rule but adds nothing about body/query/params structure or what path parameters like seriesId the collections endpoints expect. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (collections) and enumerates the actions (delete, get, get_id, patch, post) plus help, which lets an agent place it against siblings like komga_books or komga_series. But the opening 'covers the collections toolset (5 operations)' restates the name and miscounts (six enum values including help), and it never says what a collection is or what get vs get_id does. Purpose is inferable, not stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Strong operational guidance: it names the auth mechanism, states writes require confirm=true plus KOMGA_ALLOW_WRITES=true, explains that omitting confirm yields a no-op dry-run, and points to 'action help with target' for per-action parameters. What's missing is routing guidance against siblings, though the resource name largely carries that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
komga_librariesADestructive
komga_libraries covers the libraries toolset (9 operations). Auth is the X-API-Key header, or HTTP basic auth from KOMGA_USERNAME and KOMGA_PASSWORD. Self-hosted Komga only. action help with target returns one action's parameters. Writes need confirm set to the boolean true and KOMGA_ALLOW_WRITES=true. Omit confirm for a dry-run preview that sends nothing. Destructive, credential, or exposure actions add an extra warning in the preview and here: delete, scan, analyze, refresh, trash empty, user or role changes, API key create or revoke, password change, settings, session, and claim. Actions: delete, get, get_library_id, patch, post, post_analyze, post_empty_trash, post_metadata_refresh, post_scan.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body for the Komga operation. Secrets are redacted in output. | |
| query | No | OpenAPI query parameters. | |
| action | Yes | Komga operation to call, or help. | |
| params | No | OpenAPI path parameters, such as seriesId. | |
| target | No | With action help, the action whose parameters to describe. | |
| confirm | No | Set to the boolean true to execute the write. Omit this field for a dry-run preview. false and the string true are rejected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds substantial context on top: the auth mechanism (X-API-Key or basic auth), the KOMGA_ALLOW_WRITES gate, the confirm=true requirement, and that omitting confirm yields a dry-run that 'sends nothing.' It further enumerates which actions trigger extra warnings (delete, scan, trash empty, API key revoke, password change), which is precisely the behavioral detail an agent needs before a destructive call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then auth, then write-safety, which is the right priority order. It is dense but nearly every sentence carries non-obvious information; the only waste is the destructive-action list partially duplicating the action enumeration that follows it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter, nested-object, multi-action mega-tool with no output schema, the description covers auth, write gating, dry-run behavior, destructive-action warnings, and secret redaction. What remains thin is per-action semantics for the generic verbs, though the documented 'help' action provides a discovery path for that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so body, query, params, action, target and confirm are already documented, including the const:true constraint on confirm. The description's only added meaning is the help/target discovery workflow and the dry-run consequence of omitting confirm, both of which the schema largely restates; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ('libraries toolset') and enumerates all ten actions, so an agent knows exactly what surface it covers. It stops short of explaining what the generic verbs (delete, get, patch, post) operate on, and never contrasts itself with siblings like komga_series or komga_books, relying on the resource name alone to differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Strong operational guidance: 'action help with target returns one action's parameters' tells the agent how to self-discover per-action schemas, and 'Self-hosted Komga only' sets a clear applicability constraint. It does not state when to choose this toolset over a sibling (e.g. libraries vs. series), so the routing decision is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
komga_managementBRead-only
komga_management covers the management toolset (1 operations). Auth is the X-API-Key header, or HTTP basic auth from KOMGA_USERNAME and KOMGA_PASSWORD. Self-hosted Komga only. action help with target returns one action's parameters. Actions: get_actuator_info.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body for the Komga operation. Secrets are redacted in output. | |
| query | No | OpenAPI query parameters. | |
| action | Yes | Komga operation to call, or help. | |
| params | No | OpenAPI path parameters, such as seriesId. | |
| target | No | With action help, the action whose parameters to describe. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already disclose readOnlyHint=true, openWorldHint=true, and destructiveHint=false. The description adds meaningful context about authentication (API key or basic auth) and the self-hosted-only constraint, but it does not describe the return behavior or scope of get_actuator_info beyond the action name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and mostly front-loaded: it identifies the toolset, then auth, self-hosted constraint, help behavior, and available actions. Minor awkwardness like '(1 operations)' is present, but the structure is efficient and every sentence contributes context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a dispatcher with one real action, the description covers auth, self-hosted scope, help usage, and the action list. It still omits what get_actuator_info actually does or returns, and there is no output schema to compensate, so an agent must infer the operation's behavior from the name alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents action, target, body, query, and params. The description reiterates the help/target behavior already documented in the target schema field and adds no further parameter semantics; with full schema coverage, a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the tool as a management toolset with one operation and lists the action 'get_actuator_info', which gives an agent a concrete operation to select. However, it never explains what 'management' or 'actuator info' means, so the purpose remains vague beyond the action name and does not clearly distinguish it from resource-oriented siblings like komga_series or komga_libraries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states this is for self-hosted Komga only and explains authentication, which is useful context. It also mentions 'action help with target' for discovering parameters, but it does not say when to choose this tool over the sibling komga_* tools or when this tool is inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
komga_readlistsBDestructive
komga_readlists covers the readlists toolset (5 operations). Auth is the X-API-Key header, or HTTP basic auth from KOMGA_USERNAME and KOMGA_PASSWORD. Self-hosted Komga only. action help with target returns one action's parameters. Writes need confirm set to the boolean true and KOMGA_ALLOW_WRITES=true. Omit confirm for a dry-run preview that sends nothing. Destructive, credential, or exposure actions add an extra warning in the preview and here: delete, scan, analyze, refresh, trash empty, user or role changes, API key create or revoke, password change, settings, session, and claim. Actions: delete, get, get_id, patch, post.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body for the Komga operation. Secrets are redacted in output. | |
| query | No | OpenAPI query parameters. | |
| action | Yes | Komga operation to call, or help. | |
| params | No | OpenAPI path parameters, such as seriesId. | |
| target | No | With action help, the action whose parameters to describe. | |
| confirm | No | Set to the boolean true to execute the write. Omit this field for a dry-run preview. false and the string true are rejected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With destructiveHint=true and readOnlyHint=false already declared, the description still adds real value: auth mechanism (X-API-Key or basic auth env vars), the confirm/dry-run contract, that writes require KOMGA_ALLOW_WRITES=true, that secrets are redacted in output, and that destructive/credential actions get an extra preview warning. This is well beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The auth and write-safety rules are front-loaded, which is good, but the middle sentences are dense and the destructive-action enumeration lists operations (scan, analyze, trash empty, settings, session, claim) that are not in this tool's action enum, which reads as boilerplate and can mislead. The action list is tacked on at the end.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive 6-parameter dispatcher with nested body/query/params objects and no output schema, the description covers auth, the write gate, dry-run behavior, and discovery via help — enough for an agent to call it safely. What remains thin is per-action semantics, but the help action is offered as the escape hatch for that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the confirm and target fields are documented in the schema itself, so the description's restatement of confirm semantics adds little. It does clarify the help+target pairing and note that body secrets are redacted, but the mapping of query/params fields to specific actions is not explained beyond pointing at the help action.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource ('readlists toolset') and enumerates the actions (delete, get, get_id, patch, post), so an agent knows it dispatches Komga readlist operations. However, the opening sentence largely restates the tool name and never says what a readlist actually is or how these operations differ meaningfully from komga_collections or komga_books.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete procedural guidance: use action help with target to discover an action's parameters, writes require confirm:true plus KOMGA_ALLOW_WRITES, and omitting confirm yields a dry-run. What it does not do is say when to choose this tool over its siblings; the routing decision to komga_readlists vs komga_collections is left entirely to the reader.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
komga_referential_metadataARead-only
komga_referential_metadata covers the referential_metadata toolset (13 operations). Auth is the X-API-Key header, or HTTP basic auth from KOMGA_USERNAME and KOMGA_PASSWORD. Self-hosted Komga only. action help with target returns one action's parameters. Actions: get_age_ratings, get_authors, get_authors_names, get_authors_roles, get_genres, get_languages, get_notable_entities, get_notable_entities_kinds, get_notable_entities_names, get_publishers, get_series_release_years, get_sharing_labels, get_tags.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body for the Komga operation. Secrets are redacted in output. | |
| query | No | OpenAPI query parameters. | |
| action | Yes | Komga operation to call, or help. | |
| params | No | OpenAPI path parameters, such as seriesId. | |
| target | No | With action help, the action whose parameters to describe. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: the auth mechanism (X-API-Key header or basic auth via KOMGA_USERNAME/KOMGA_PASSWORD) and the self-hosted-only deployment constraint, both of which affect whether a call can succeed at all.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with scope, then auth, then the action inventory — a sensible order with no filler. The action enumeration partially duplicates the schema enum, but on a dispatcher tool it doubles as a routing summary, so it earns most of its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-operation read-only dispatcher with no output schema, the description covers auth, deployment scope, the action inventory, and the self-documenting 'help + target' path to per-action parameters. It stops short of noting whether results are paginated or what shape the metadata lists take, which is a minor residual gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so body, query, params, action, and target are all documented in the schema itself. The description only restates the help/target mechanism and adds no routing detail about which actions accept query vs. path parameters, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the tool covers the 'referential_metadata' toolset and enumerates all 13 actions, which are self-descriptive (get_genres, get_publishers, get_sharing_labels). An agent can tell this is the lookup/enumeration namespace rather than the book/series/library tools, though the description never explicitly contrasts with the sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the action list plus the 'Self-hosted Komga only' constraint and the 'action help with target' escape hatch, but there is no explicit guidance on when to pick this over komga_series or komga_books, and no stated preconditions beyond auth.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
komga_seriesADestructive
komga_series covers the series toolset (16 operations). Auth is the X-API-Key header, or HTTP basic auth from KOMGA_USERNAME and KOMGA_PASSWORD. Self-hosted Komga only. action help with target returns one action's parameters. Writes need confirm set to the boolean true and KOMGA_ALLOW_WRITES=true. Omit confirm for a dry-run preview that sends nothing. Destructive, credential, or exposure actions add an extra warning in the preview and here: delete, scan, analyze, refresh, trash empty, user or role changes, API key create or revoke, password change, settings, session, and claim. Actions: delete_file, delete_read_progress, get, get_alphabetical_groups, get_books, get_collections, get_latest, get_new, get_series_id, get_updated, patch_metadata, post_analyze, post_list, post_list_alphabetical_groups, post_metadata_refresh, post_read_progress.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body for the Komga operation. Secrets are redacted in output. | |
| query | No | OpenAPI query parameters. | |
| action | Yes | Komga operation to call, or help. | |
| params | No | OpenAPI path parameters, such as seriesId. | |
| target | No | With action help, the action whose parameters to describe. | |
| confirm | No | Set to the boolean true to execute the write. Omit this field for a dry-run preview. false and the string true are rejected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, yet the description adds substantial context beyond them: the auth mechanism (X-API-Key or basic auth env vars), the self-hosted-only constraint, the double gate for writes, the no-op dry-run preview, and an explicit list of actions that trigger extra warnings. This is exactly the extra behavioral detail the annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: auth and write-safety come before the action enumeration, which suits a 16-operation dispatcher. There is minor redundancy ('in the preview and here') and the action list is long, but every clause carries operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by explaining the `help` action as the discovery path for per-action parameters. It does not describe return shapes for read actions or pagination, which a dispatch tool of this breadth could note, but the core call-time requirements (auth, confirm gate, params/query/body) are all covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter meaning the schema cannot: `target` is only meaningful together with `action: help`, and `confirm` omission specifically means a preview that sends nothing. The mapping of `params`/`query`/`body` to path/query/body is left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it is the series toolset covering 16 operations and enumerates every action, so an agent can tell it apart from komga_books/komga_collections by resource scope. The opening verb phrase ('covers the series toolset') is a bit abstract and never explicitly routes against named siblings, but the action list makes the resource domain unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear workflow guidance: use `action help` with `target` to discover an action's parameters, omit `confirm` for a dry-run, and set both `confirm: true` and KOMGA_ALLOW_WRITES=true to execute. It also flags which action families are destructive. It stops short of saying when to prefer a sibling tool (e.g. komga_books for book-level queries).
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.
7 tool updates
v0.1.0- First observed
komga_books - First observed
komga_collections - First observed
komga_libraries - First observed
komga_management - First observed
komga_readlists - First observed
komga_referential_metadata - First observed
komga_series
TDQS
Scored across 7 tools
Tools are split cleanly by Komga resource (books, series, collections, readlists, libraries, referential metadata, management), so the main boundaries are clear. However, collections and readlists have almost identical action shapes, and books/series both expose overlapping read-progress and listing actions, which could cause occasional misselection.
Every tool follows the same komga_<resource> snake_case convention, with plural resource names except for the clearly named referential_metadata and management sets. There is no mixing of camelCase or inconsistent verb/noun patterns at the tool level.
Seven tools is a reasonable scoping for a Komga server and keeps the top-level surface manageable. The only slight imbalance is komga_management, which contains a single actuator-info operation and feels underfilled compared with the other resource toolsets.
Core library management coverage is strong: books, series, collections, readlists, and libraries all support relevant read/write/lifecycle operations. There are still notable gaps around administrative surfaces mentioned in the warnings—users, roles, API keys, sessions, settings, password changes, and claims—which have no corresponding toolset.
Maintenance
Related MCP Connectors
Remote MCP server exposing SMI Aware tools, resources, and skills over Streamable HTTP.
Query SEC EDGAR filings, XBRL financials, and company data via MCP. STDIO or Streamable HTTP.
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
- mcpOAuthco.aistoryhub
Remote MCP server for AIStoryHub: stories, chapters, story bible, Voiceprints, AI generation.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server exposing Komga's REST API as tools for browsing and managing comic, manga, BD, magazine, and ebook libraries.8MIT
- AlicenseNot gradedqualityAmaintenanceGives MCP clients read-only access to a local Calibre library, enabling metadata search with Calibre query syntax, BM25 full-text search across EPUB/PDF/MOBI/LIT, chapter and page reading, highlights, notes, reading progress, and duplicate detection. It runs over stdio or Streamable HTTP with bearer authentication, using direct SQLite connections so it keeps working while the Calibre GUI is open.5Apache 2.0
- AlicenseDqualityCmaintenanceEnables secure, configurable access to one or more Syncthing instances over MCP, with read-only defaults and opt-in write, destructive, and administrative operations. Supports stdio and authenticated Streamable HTTP transports, typed tools, bounded responses, and multi-instance configuration.40MIT
- AlicenseNot gradedqualityCmaintenanceConnects MCP clients to a self-hosted photo library through its REST API, exposing assets, albums, people, search, and optional administrative toolsets with read-only defaults and confirm-gated writes. It supports stdio and localhost Streamable HTTP transports.66 npmMIT