# io.github.cyanheads/anime-mcp-server (npm · @cyanheads/anime-mcp-server)

Search anime/manga, franchise watch order, schedule, characters, rankings, studio filmography.

- Trust score: 66/100 (medium)
- Change this week: +61
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-07

## Components

- npm · `@cyanheads/anime-mcp-server`: 66/100 (this document), [markdown](https://verifymcp.io/servers/cyanheads-anime-mcp-server/cyanheads-anime-mcp-server.md), [page](https://verifymcp.io/servers/cyanheads-anime-mcp-server/cyanheads-anime-mcp-server)

## Channel facts

- Registry: `npm`
- Package: `@cyanheads/anime-mcp-server`
- Version: `0.1.3`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-07.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 40 of 127 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (Apache-2.0).
  - Actively maintained (last published 55 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 65/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1705 tokens (~213/item across 8 items; 8 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add cyanheads-anime-mcp-server -- npx -y @cyanheads/anime-mcp-server
```

### Codex

```bash
codex mcp add cyanheads-anime-mcp-server -- npx -y @cyanheads/anime-mcp-server
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-anime-mcp-server": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@cyanheads/anime-mcp-server"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add cyanheads-anime-mcp-server --command npx --arg -y --arg @cyanheads/anime-mcp-server
```

### Hermes

```yaml
mcp_servers:
  cyanheads-anime-mcp-server:
    command: "npx"
    args: ["-y", "@cyanheads/anime-mcp-server"]
```

### Other

```json
{
  "mcpServers": {
    "cyanheads-anime-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/anime-mcp-server"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-07 (score 66, +3)

- [security improvement] Known CVEs: partial → pass
- [functional] Dependency health: partial → 0.85

### 2026-08-06 (score 63, +28)

- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Tool coverage: 100
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: excellent
- [functional] First check of Schema quality: fail
- [functional] First check of Tool coverage: 100

### 2026-08-05 (score 35, +1)

- [security improvement] CVE-2026-69207 no longer affects this package
- [security improvement] Known CVEs: fail → partial

### 2026-08-04 (score 34, −1)

- [security regression] CVE-2026-69207 affects this package: medium
- [security regression] Known CVEs: partial → fail

### 2026-08-02 (score 35, +15)

- [security regression] Provenance: unverified → fail
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] License: unverified → pass
- [functional] Licence: Apache-2.0

### 2026-08-01 (score 20, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-07-31 (score 5, −19)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-27 (score 24)

First indexed and scored.

## MCP tools (8)

### `anime_search_media` (~300 tokens)

Anime Search Media

Search anime or manga by title, genre, tag, season, year, format, or status. Returns ranked results with AniList IDs, titles, scores, format, and episode/chapter counts.

Input parameters:

- `format` (string): Publication/broadcast format filter.
- `genre` (string): Genre filter, e.g. "Action", "Romance", "Slice of Life".
- `include_adult` (boolean): Include adult/NSFW content. Default false.
- `media_type` (string, required): Media type to search: anime or manga.
- `page` (integer): 1-based page number for paginated results.
- `per_page` (integer): Results per page. Maximum 50.
- `query` (string): Title search query. Supports partial matches.
- `season` (string): Anime broadcast season. WINTER=Jan–Mar, SPRING=Apr–Jun, SUMMER=Jul–Sep, FALL=Oct–Dec.
- `season_year` (integer): 4-digit year for the broadcast season, e.g. 2024. Required when season is set.
- `sort` (array): Sort order list. Common values: SEARCH_MATCH (default), SCORE_DESC, POPULARITY_DESC, TRENDING_DESC, START_DATE_DESC.
- `status` (string): Production status filter.
- `tag` (string): Tag filter, e.g. "Isekai", "Mecha", "School Life".

Output parameters:

- `has_next_page` (boolean): Whether more pages are available.
- `notice` (string): Recovery guidance when results is empty — echoes applied filters and suggests how to broaden the search.
- `page` (integer): Current page number.
- `results` (array): Matching media entries.
- `source` (string): Which API provided these results: "anilist" (primary) or "jikan" (fallback).
- `total_results`: Total matching results, or null when unknown.

### `anime_get_media` (~117 tokens)

Anime Get Media

Full detail for one anime or manga by AniList ID. Returns synopsis, format, episode/chapter count, status, season, studios, source material, genres and tags (spoiler-flagged), AniList and MAL scores side by side, streaming links, cover/banner, and direct relations. Use anime_search_media first to find the AniList ID.

Input parameters:

- `id` (integer, required): AniList media ID. Obtain from anime_search_media results.
- `include_adult` (boolean): Include adult/NSFW content. Default false.

Output parameters:

- `banner_image_url`: Banner image URL, or null.
- `chapters`: Total chapter count (manga), or null.
- `cover_image_url`: Cover image URL (extra large), or null.
- `data_sources` (object): Provenance: which sources contributed data to this response.
- `description`: Plot synopsis (HTML stripped), or null.
- `episodes`: Total episode count (anime), or null.
- `format`: Format: TV, MOVIE, OVA, ONA, MANGA, NOVEL, etc.
- `genres` (array): Genre list.
- `id` (integer): AniList media ID.
- `id_mal`: MyAnimeList ID used to cross-reference MAL data, or null.
- `is_adult` (boolean): Whether this entry is marked adult/NSFW.
- `next_airing`: Next airing episode info for currently airing anime, or null.
- `relations` (array): Direct relations. Use anime_get_relations for full franchise walk-order across multiple hops.
- `scores` (object): Community scores. AniList uses a 0–100 scale; MAL uses 0–10.0. Both are returned separately.
- `season`: Broadcast season label, e.g. "FALL 2023", or null.
- `site_url`: AniList page URL.
- `source`: Source material type, e.g. "MANGA", "LIGHT_NOVEL", "ORIGINAL".
- `status`: Production status.
- `streaming_links` (array): Streaming platform links (anime only). Empty for manga or when no streaming data is available.
- `studios` (array): Production studios.
- `tags` (array): Content tags. Spoiler-flagged tags include is_spoiler: true.
- `title` (object): Title variants.
- `type` (string): Media type.
- `volumes`: Total volume count (manga), or null.

### `anime_get_relations` (~143 tokens)

Anime Get Relations

Franchise untangler. Walks the related-works graph from a media ID across multiple hops — sequels, prequels, side stories, movies, OVAs, source/adaptation — and returns them ordered into a suggested watch/read order. This is the "how do I watch this whole series" tool. Use anime_get_media first to confirm the ID.

Input parameters:

- `id` (integer, required): AniList media ID of any entry in the franchise.
- `max_depth` (integer): Maximum hops to traverse from the root entry. Default 2. Maximum 4. Deeper traversal makes more AniList requests — use 3–4 only for large franchises.

Output parameters:

- `depth_reached` (integer): Actual traversal depth reached.
- `entries` (array): All franchise entries in suggested watch/read order. Main entries first, then supplementary. Within each group, ordered by relation type priority then season year.
- `root_id` (integer): The AniList ID used as the traversal root.
- `total_entries` (integer): Total unique entries found across the franchise.

### `anime_get_schedule` (~225 tokens)

Anime Get Schedule

Airing schedule for a season or upcoming episode window. "season" mode returns all anime airing in a given season/year. "upcoming" mode returns next episode for airing titles within a date window, with UTC timestamps.

Input parameters:

- `days_ahead` (integer): Days ahead to look for upcoming episodes. Used only in "upcoming" mode. Default 7.
- `include_adult` (boolean): Include adult/NSFW titles. Default false.
- `mode` (string, required): "season": all anime from a specific season/year. Requires season and season_year. "upcoming": next airing episode for each currently-airing title within days_ahead window.
- `page` (integer): 1-based page number.
- `per_page` (integer): Results per page. Maximum 50.
- `season` (string): Anime broadcast season. WINTER=Jan–Mar, SPRING=Apr–Jun, SUMMER=Jul–Sep, FALL=Oct–Dec.
- `season_year` (integer): 4-digit year. Required with mode "season".

Output parameters:

- `entries` (array): Anime entries in the schedule.
- `has_next_page` (boolean): Whether more pages are available.
- `mode` (string): Mode used for this response.
- `notice` (string): Recovery guidance when entries is empty — echoes the applied mode/season and suggests how to broaden.
- `page` (integer): Current page number.
- `season_label`: Human-readable season label, e.g. "FALL 2024", or null for upcoming mode.
- `total_results`: Total entries in this season, or null for upcoming mode.

### `anime_find_characters` (~206 tokens)

Anime Find Characters

Characters and voice actors for a title, or look up a character/VA by name. Provide "id" for title → cast lookup, or "character_name" / "voice_actor_name" for name-based lookup. Returns characters with their role, voice actors by language, and cross-links to other media.

Input parameters:

- `character_name` (string): Character name to search for. Returns the character's appearances across media.
- `id` (integer): AniList media ID for title → cast lookup. Use anime_search_media to find this ID.
- `language` (string): Filter voice actors by language. Common: JAPANESE, ENGLISH, KOREAN. Only applies when fetching by media ID.
- `page` (integer): 1-based page number for character/role results.
- `per_page` (integer): Results per page. Maximum 25.
- `voice_actor_name` (string): Voice actor/staff name to search for. Returns their roles across anime.

Output parameters:

- `characters` (array): Characters found. In by_media mode, characters for the title. In by_character mode, one character with their media appearances as context. Empty in by_voice_actor mode.
- `has_next_page` (boolean): Whether more results are available on the next page.
- `media_id`: AniList media ID used for the lookup, or null for name-based lookup.
- `mode` (string): Which lookup mode was used.
- `voice_actor`: Voice actor detail (populated in by_voice_actor mode only, null otherwise).

### `anime_get_recommendations` (~154 tokens)

Anime Get Recommendations

Recommendations for a title, merged from AniList and Jikan (MAL), with scores and vote counts. AniList recommendations use community rating scores; Jikan adds MAL user recommendations with vote counts. Both sources are surfaced separately — not blended into a composite score.

Input parameters:

- `id` (integer, required): AniList media ID of the title to get recommendations for.
- `liked_aspects` (string): What you liked about this title — e.g. "the slow-burn romance" or "mecha action". Returned as-is in the response.
- `page` (integer): 1-based page number for AniList recommendations.
- `per_page` (integer): Recommendations per page from AniList. Maximum 25.

Output parameters:

- `has_next_page` (boolean): Whether more AniList recommendations are available.
- `liked_aspects`: Liked aspects provided by the caller, or null.
- `recommendations` (array): Merged recommendations, sorted by AniList rating descending. Items appear once even if both sources recommend them; sources array lists all contributors.
- `source_id` (integer): AniList ID of the source title.
- `source_id_mal`: MAL ID of the source title, or null.
- `source_type`: Source media type: ANIME or MANGA.

### `anime_get_rankings` (~225 tokens)

Anime Get Rankings

Top, trending, or seasonal rankings. Filterable by genre, tag, and format. "top" returns all-time by score; "trending" returns current week; "seasonal" returns the current or specified season sorted by popularity.

Input parameters:

- `format` (string): Publication/broadcast format filter.
- `genre` (string): Genre filter, e.g. "Action", "Romance".
- `include_adult` (boolean): Include adult/NSFW content. Default false.
- `media_type` (string, required): Media type to rank.
- `mode` (string, required): "top": highest-scoring of all time. "trending": most active this week. "seasonal": most popular in the current or specified season/year.
- `page` (integer): 1-based page number.
- `per_page` (integer): Results per page. Maximum 50.
- `season` (string): Season for "seasonal" mode. Defaults to current season.
- `season_year` (integer): Year for "seasonal" mode. Defaults to current year.

Output parameters:

- `entries` (array): Ranked entries.
- `has_next_page` (boolean): Whether more pages are available.
- `media_type` (string): Media type ranked.
- `mode` (string): Ranking mode used.
- `notice` (string): Recovery guidance when entries is empty — echoes the applied mode/filters and suggests how to broaden.
- `page` (integer): Current page number.
- `season_label`: Season label for seasonal mode, e.g. "FALL 2024", or null.
- `total_results`: Total matching results, or null.

### `anime_get_studio` (~193 tokens)

Anime Get Studio

A studio's full filmography by name or AniList studio ID. Returns all titles the studio produced, sortable by year or score, with format, status, and episode count. Provide "name" for a name-based search, or "id" for direct lookup by AniList studio ID.

Input parameters:

- `id` (integer): AniList studio ID for direct lookup. More precise than name search.
- `name` (string): Studio name to search for, e.g. "MAPPA", "Kyoto Animation", "ufotable".
- `page` (integer): 1-based page number.
- `per_page` (integer): Results per page. Maximum 50.
- `sort` (string): Sort order for the filmography. POPULARITY_DESC: most popular first (default). SCORE_DESC: highest-scored first. START_DATE_DESC: newest first. START_DATE: oldest first (release chronology).

Output parameters:

- `filmography` (array): Studio filmography entries.
- `has_next_page` (boolean): Whether more pages are available.
- `is_animation_studio` (boolean): True when this is classified as an animation studio.
- `page` (integer): Current page number.
- `studio_id` (integer): AniList studio ID.
- `studio_name` (string): Studio name.
- `studio_site_url`: AniList studio page URL, or null.
- `total_titles`: Total titles in filmography, or null.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/cyanheads-anime-mcp-server/cyanheads-anime-mcp-server#diagnostics

## Score history

- 2026-08-07: 66
- 2026-08-06: 63
- 2026-08-05: 35
- 2026-08-04: 34
- 2026-08-03: 35
- 2026-08-02: 35
- 2026-08-01: 20
- 2026-07-31: 5
- 2026-07-30: 24
- 2026-07-28: 24
- 2026-07-27: 24

## Links

- npm package: https://www.npmjs.com/package/@cyanheads/anime-mcp-server
- Socket report: https://socket.dev/npm/package/@cyanheads/anime-mcp-server
- Repository: https://github.com/cyanheads/anime-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/cyanheads-anime-mcp-server/cyanheads-anime-mcp-server.xml
- Changelog JSON feed: https://verifymcp.io/servers/cyanheads-anime-mcp-server/cyanheads-anime-mcp-server.json
- HTML version of this page: https://verifymcp.io/servers/cyanheads-anime-mcp-server/cyanheads-anime-mcp-server
