Skip to main content
Glama
mylar3-mcp

mylar3-mcp

mylar3-mcp

Part of the arr-mcps collection. MCP server exposing Mylar3's HTTP API as tools, so an LLM can read and manage your comic library: watchlist, wanted issues, pull-list/upcoming, history, logs, story arcs, and providers.

Built with FastMCP.

Enabling the API on your Mylar3 server

Mylar3's API is opt-in and disabled by default. You must enable it and obtain an API key in Mylar's web UI (or bootstrap it with cmd=getAPI if HTTP basic auth is configured). This is server-side configuration specific to how you run Mylar3, and out of scope for this project - see Mylar3's own settings for API_ENABLED and API_KEY.

Related MCP server: komga-mcp

Install

Download a wheel from the latest release and install it as a uv tool (no repo checkout needed):

uv tool install mylar3_mcp-*.whl

This puts a mylar3-mcp command on your PATH. Register it with Claude Code:

claude mcp add mylar3 \
  --env MYLAR_URL=http://your-mylar-host:8090 \
  --env MYLAR_API_KEY=<32-char key> \
  -- mylar3-mcp

From source

uv sync
cp .env.example .env   # fill in MYLAR_URL and MYLAR_API_KEY
claude mcp add mylar3 \
  --env MYLAR_URL=http://your-mylar-host:8090 \
  --env MYLAR_API_KEY=<32-char key> \
  -- uv run --directory /path/to/mylar3-mcp mylar3-mcp

Config

Env var

Required

Default

MYLAR_URL

yes

-

MYLAR_API_KEY

yes (except mylar_get_api)

none (no apikey param sent)

MYLAR_HTTP_ROOT

no

/

Tools

5 resource-scoped tools, each covering multiple Mylar3 ?cmd= API commands (40 total) via an operation parameter. Reads use GET, writes use POST. Call a tool with operation set to one of its listed commands and an arguments dict matching that command's params — the tool's own description (visible to your MCP client) lists every operation, its signature, and a one-line doc.

Tool

Operations

Covers

mylar_comics

12

Add/get/pause/resume/refresh/delete comics, book type, status, recheck files, index, find

mylar_issues_queue

7

Issue info, queue/unqueue, force search/process, regenerate covers, refresh seriesjson

mylar_lists_discovery

7

Read list, upcoming, wanted, story arcs, seriesjson listing, annual series

mylar_providers

4

List/add/change/delete providers

mylar_system

10

Version, API, history, logs, config, GitHub check, update, restart, shutdown

Example: mylar_comics(operation="mylar_del_comic", arguments={"id": "12345", "directory": True}). Command-level naming (mylar_<verb>_<resource>, matching the underlying ?cmd= API command) is preserved as the operation value:

Operation

cmd

mylar_get_index

getIndex

mylar_get_comic

getComic

mylar_get_comic_info

getComicInfo

mylar_get_issue_info

getIssueInfo

mylar_get_read_list

getReadList

mylar_get_upcoming

getUpcoming

mylar_get_wanted

getWanted

mylar_get_history

getHistory

mylar_get_logs

getLogs

mylar_find_comic

findComic

mylar_get_story_arc

getStoryArc

mylar_get_version

getVersion

mylar_list_providers

listProviders

mylar_seriesjson_listing

seriesjsonListing

mylar_list_annual_series

listAnnualSeries

mylar_get_api

getAPI

mylar_add_comic

addComic

mylar_pause_comic

pauseComic

mylar_resume_comic

resumeComic

mylar_refresh_comic

refreshComic

mylar_change_book_type

changeBookType

mylar_change_status

changeStatus

mylar_recheck_files

recheckFiles

mylar_queue_issue

queueIssue

mylar_unqueue_issue

unqueueIssue

mylar_regenerate_covers

regenerateCovers

mylar_refresh_seriesjson

refreshSeriesjson

mylar_add_story_arc

addStoryArc

mylar_force_search

forceSearch

mylar_force_process

forceProcess

mylar_add_provider

addProvider

mylar_change_provider

changeProvider

mylar_check_github

checkGithub

mylar_update

update

mylar_restart

restart

mylar_clear_logs

clearLogs

mylar_del_comic

delComic (directory=true also deletes the folder from disk)

mylar_del_provider

delProvider

mylar_shutdown

shutdown (stops the server)

mylar_set_config

configUpdate (session-cookie auth, see AGENTS.md)

Notes

  • Mylar3's API responses are inconsistently enveloped: some wrap in {"success": true, "data": ...}, some return the payload raw, and some return the bare string "OK". The server unwraps all of these so tools return just the meaningful data.

  • mylar_queue_issue and mylar_force_search can actually snatch/download issues - treat them as state-changing.

  • Binary endpoints (getArt, downloadIssue, downloadNZB) are deliberately not exposed - they stream bytes, not JSON, which isn't useful over MCP.

  • id params are ComicVine ComicIDs; issue IDs are separate. Bulk-capable cmds (refreshComic, recheckFiles, regenerateCovers, refreshSeriesjson) accept comma-separated lists or all/missing.

Development

make help  # list all commands

Command

Does

make sync

uv sync

make test

Offline tests - one per endpoint, mocked HTTP

make test-integration

Tests against the live instance (needs MYLAR_URL/MYLAR_API_KEY)

make build

Build wheel + sdist into dist/

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

Bump the version in pyproject.toml + uv.lock

make clean

Remove build artifacts

The release workflow (.github/workflows/release.yml) builds and publishes to Releases whenever a v* tag is pushed - so the usual flow is make bump-patch, commit, then tag and push.

The integration suite only reads data, plus a single reversible write test that pauses and resumes an existing series (set via MYLAR_TEST_COMIC_ID) - it never snatches, deletes, or modifies your library.

Available Tools

5 tools
mylar_comicsA

mylar comics operations on Mylar3. Pass operation and an arguments dict matching that operation's parameters.

  • mylar_add_comic(id) — Queue adding a series to the watchlist by ComicVine ComicID. Runs in a background thread.

  • mylar_change_book_type(id, booktype) — Force a series' book type. booktype: Print, Digital, TPB, GN, HC, or One-Shot.

  • mylar_change_status(status_from, status_to, id) — Bulk-change issue status across a series. Pass id='all' for every series. status_from/status_to are issue statuses.

  • mylar_del_comic(id, directory=None) — Delete a series from the watchlist (and its issues). id is the ComicVine ComicID. WARNING: pass directory='true' to also delete the comic folder from disk (rmtree).

  • mylar_find_comic(name, issue=None, type_=None, mode=None, page=None, pageSize=None, serinfo=None) — Search ComicVine for a series. name is required; type_='story_arc' searches arcs, mode can be series/pullseries/want.

  • mylar_get_comic(id) — Get one series and its issues: returns {comic, issues, annuals}. id is the ComicVine ComicID.

  • mylar_get_comic_info(id) — Get a single series row from the comics table. id is the ComicVine ComicID.

  • mylar_get_index() — List every series on the Mylar3 watchlist (id, name, status, publisher, etc.).

  • mylar_pause_comic(id) — Pause a series' wanted tracking. id is the ComicVine ComicID.

  • mylar_recheck_files(id) — Recheck files on disk for a series. id accepts a single id, comma-list, or a JSON array.

  • mylar_refresh_comic(id) — Queue a ComicVine refresh of a series. id accepts a single id or comma-separated list.

  • mylar_resume_comic(id) — Resume a paused series. id is the ComicVine ComicID.

Inputs: operation (required), arguments. Returns: result

mylar_issues_queueA

mylar issues queue operations on Mylar3. Pass operation and an arguments dict matching that operation's parameters.

  • mylar_force_process(nzb_name, nzb_folder, failed=None, issueid=None, comicid=None, ddl=None, oneoff=None, apc_version=None, comicrn_version=None) — Enqueue a post-processing job. Requires nzb_name and nzb_folder. Used by SABnzbd/NZBGet-style callbacks.

  • mylar_force_search() — Trigger a wanted-issue search across the library. May snatch/download wanted issues. Runs in-process.

  • mylar_get_issue_info(id) — Get a single issue row from the issues table. id is the IssueID.

  • mylar_queue_issue(id) — Mark an issue Wanted and immediately kick off a search (may snatch/download). id is the IssueID.

  • mylar_refresh_seriesjson(comicid) — Regenerate series.json files. comicid: single, list, 'all', 'missing', or 'refresh-missing'.

  • mylar_regenerate_covers(id, overwrite_existing=None) — Re-fetch series cover images. id: single, comma-list, 'all', or 'missing'.

  • mylar_unqueue_issue(id) — Mark an issue Skipped (un-queue it). id is the IssueID.

Inputs: operation (required), arguments. Returns: result

mylar_lists_discoveryA

mylar lists discovery operations on Mylar3. Pass operation and an arguments dict matching that operation's parameters.

  • mylar_add_story_arc(issues=None, arclist=None, id=None, storyarcname=None) — Add/create a story arc. Provide issues OR arclist. storyarcname required when creating; id to extend an existing arc.

  • mylar_get_read_list() — List the issues in the read list, ordered by issue date.

  • mylar_get_story_arc(id=None, customOnly=None) — List story arcs; with id, list that arc's issues in reading order. Pass customOnly='1' for custom arcs only.

  • mylar_get_upcoming(include_downloaded_issues=None) — List this week's wanted issues. Pass include_downloaded_issues='Y' to also include Snatched/Downloaded.

  • mylar_get_wanted(story_arcs=None) — List wanted issues. Pass story_arcs='true' to also include Wanted story-arc issues and annuals.

  • mylar_list_annual_series(list_issues=None, group_series=None, show_downloaded=None) — List annual issues. Provide list_issues OR group_series; pass show_downloaded to include downloaded.

  • mylar_seriesjson_listing(missing=None) — List series with/without series.json. Pass missing='1' for only series missing a series.json.

Inputs: operation (required), arguments. Returns: result

mylar_providersA

mylar providers operations on Mylar3. Pass operation and an arguments dict matching that operation's parameters.

  • mylar_add_provider(providertype, name, host, prov_apikey, enabled, categories=None, uid=None) — Add a newznab or torznab provider. providertype is 'newznab' or 'torznab' (torznab requires categories).

  • mylar_change_provider(providertype, name=None, prov_id=None, altername=None, host=None, prov_apikey=None, enabled=None, categories=None, uid=None) — Modify a provider. Provide providertype and either name or prov_id, plus any fields to change.

  • mylar_del_provider(providertype, name=None, prov_id=None) — Remove a provider. Provide providertype and either name or prov_id.

  • mylar_list_providers() — List configured newznab/torznab providers: returns {newznabs: [...], torznabs: [...]}.

Inputs: operation (required), arguments. Returns: result

mylar_systemA

mylar system operations on Mylar3. Pass operation and an arguments dict matching that operation's parameters.

  • mylar_check_github() — Check GitHub for updates and return current version data.

  • mylar_clear_logs() — Clear Mylar3's in-memory log buffer.

  • mylar_get_api(username, password) — Bootstrap helper: fetch the API key using HTTP basic login credentials. Does not require MYLAR_API_KEY.

  • mylar_get_history() — List rows from the snatched table (download history), newest first.

  • mylar_get_logs() — Return Mylar3's in-memory log buffer.

  • mylar_get_version() — Get Mylar3 version info: git_path, install_type, current_version, latest_version, commits_behind.

  • mylar_restart() — Restart Mylar3.

  • mylar_set_config(settings) — Set one or more Mylar config options via the web configUpdate endpoint. Takes a dict of checkbox/text settings keyed by their config.ini name (e.g. {"notify_pack_gif": True}). Checkboxes use boolean values; unchecked checkboxes should be set to False. Requires MYLAR_WEB_USERNAME and MYLAR_WEB_PASSWORD. Applies immediately and persists to config.ini.

  • mylar_shutdown() — Shut down Mylar3. This stops the server.

  • mylar_update() — Trigger Mylar3 to self-update (may restart the app).

Inputs: operation (required), arguments. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.2/5.0

    Scored across 5 tools

    Disambiguation4/5

    The five tools are clearly grouped by domain (comics, issues queue, lists/discovery, providers, system), making it easy to select the appropriate namespace. However, there is some overlap between mylar_comics and mylar_issues_queue (e.g., mylar_change_status vs. mylar_queue_issue/unqueue_issue) and subtle differences like mylar_get_comic vs. mylar_get_comic_info that could cause occasional misselection.

    Naming Consistency5/5

    All tool names follow a consistent snake_case pattern of mylar_<domain> (mylar_comics, mylar_issues_queue, mylar_lists_discovery, mylar_providers, mylar_system). The operation names within each tool also consistently use the mylar_ prefix and a verb_noun style, ensuring predictability.

    Tool Count5/5

    With exactly 5 tools, the server falls well within the ideal 3-15 range. Each tool represents a logical domain and earns its place, even though it internally dispatches many operations. The count is neither too thin nor bloated for the Mylar3 management purpose.

    Completeness4/5

    The tool surface covers the major lifecycle operations for comics (add, delete, get, refresh, pause/resume), issues (queue/unqueue, search), lists (wanted, upcoming, read list, story arcs), providers (CRUD), and system management (version, logs, config, restart). Minor gaps exist, such as no direct tool to edit an issue's metadata beyond queue status, but core workflows are fully supported.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server that enables local LLMs to manage a home media stack including Radarr, Sonarr, Prowlarr, and others.
      MIT
    • A
      license
      C
      quality
      C
      maintenance
      MCP server exposing Radarr's v3 REST API as tools, enabling LLMs to read and manage movies, downloads, history, indexers, and more.
      100
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      MCP server that exposes the Bookshelf (Readarr fork) v1 REST API as tools, allowing an LLM to read and manage authors, books, book files, editions, series, download queue, history, indexers, import lists, custom formats, tags, commands, and system status, with full read/write access and destructive tools flagged.
      15
      MIT