Skip to main content
Glama
MorpKnight

MyAnimeList MCP Server

by MorpKnight

MyAnimeList MCP Server

Search, inspect, rank, and manage MyAnimeList anime and manga from any MCP-compatible AI client.

MyAnimeList MCP Server is a Python MCP server for the MyAnimeList API. It uses MCP SDK v2, keeps stdio as the default transport, and exposes the MAL API through typed tools that work with Claude, Codex, Gemini, and other MCP clients.

TIP

Public tools work with a MAL client ID. Authenticated tools use OAuth and can either open a local browser flow or use a refresh token in headless environments.

Features

  • 15 tools for anime, manga, rankings, seasonal releases, public lists, and the authenticated user profile.

  • MCP SDK v2 with stdio transport and protocol compatibility for existing clients.

  • One reusable async HTTP client per server lifespan.

  • Explicit timeouts, bounded retries for safe GET requests, connection limits, and sanitized errors.

  • MAL OAuth with PKCE plain mode, state validation, localhost callback handling, token reuse, and concurrency locking.

  • Memory-only access and refresh tokens; no token persistence files.

  • Docker image built from the locked dependency graph with uv.

Related MCP server: mal-mcp

How it works

The server starts an MCP stdio process. Each tool call is translated into a MyAnimeList API request through the shared client. Public requests use the MAL client ID; authenticated requests add a bearer token obtained from the in-memory OAuth manager.

Successful responses preserve the MAL response shape. Error responses use a stable error field and, when available, status_code, without returning raw response bodies, URLs, authorization codes, or tokens.

Prerequisites

  • Python 3.12 or newer

  • uv

  • A MyAnimeList API client ID

  • A MyAnimeList client secret for authenticated tools

  • Docker, only if you want to run the container image

Quick start

Clone the repository and install the locked environment:

git clone https://github.com/MorpKnight/myanimelist-mcp.git
cd myanimelist-mcp
cp .env.example .env
uv sync --locked

Edit .env and set at least MAL_CLIENT_ID. Add MAL_CLIENT_SECRET before using authenticated tools.

Run the server:

uv run --locked main.py

The default transport is stdio. stdout is reserved for MCP messages; OAuth diagnostics are sent to stderr.

MyAnimeList application setup

Create an application from MyAnimeList API Config.

Use these values as a starting point:

Copy the generated client ID and client secret into .env. The redirect URL must exactly match the URL registered in MAL.

Configure an MCP client

Claude Desktop

Add this entry to claude_desktop_config.json and replace the project path:

{
  "mcpServers": {
    "myanimelist": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/myanimelist-mcp",
        "run",
        "--locked",
        "main.py"
      ]
    }
  }
}

Keep .env in the project directory so the server can load it when started with --directory.

Codex and other stdio clients

Use the same command in the client's MCP server configuration:

uv --directory /absolute/path/to/myanimelist-mcp run --locked main.py

MCP clients can use different configuration wrappers, but discovery, schemas, and tool calls use the same MCP protocol.

Smithery

The repository includes a stdio smithery.yaml manifest. The manifest can be published under the project's own Smithery namespace when that namespace is available. No upstream Smithery namespace is assumed by this repository.

Docker

Build the image:

docker build -t myanimelist-mcp .

Run it as an MCP stdio server:

docker run --rm -i --env-file .env myanimelist-mcp

The image installs dependencies with uv sync --locked and does not include .env, tests, Git metadata, or local caches.

Configuration

Variable

Required

Default

Description

MAL_CLIENT_ID

Yes

MyAnimeList API client ID.

MAL_CLIENT_SECRET

OAuth

MyAnimeList OAuth client secret.

MAL_REFRESH_TOKEN

No

Refresh token for headless authenticated deployments.

MAL_API_URL

No

https://api.myanimelist.net/v2

MAL API base URL.

MAL_OPEN_BROWSER

No

true

Open the browser for interactive OAuth.

MAL_CALLBACK_HOST

No

127.0.0.1

Loopback host for the OAuth callback.

MAL_CALLBACK_PORT

No

8080

Local OAuth callback port.

MAL_CALLBACK_TIMEOUT

No

300

OAuth callback timeout in seconds.

IMPORTANT

Keep.env private. Access tokens and refresh tokens are held in memory only, but the values in .env still grant access to your MAL application or account.

Headless OAuth

For a deployment without a browser, set a valid refresh token and disable interactive browser opening:

MAL_REFRESH_TOKEN=your_refresh_token
MAL_OPEN_BROWSER=false

Refresh tokens are never written back to disk by this server.

Available tools

Anime

Tool

Auth

Purpose

get_anime

Public

Search anime by query.

get_anime_details

Public

Fetch details for an anime ID.

get_anime_ranking

Public

Fetch anime rankings.

get_seasonal_anime

Public

Fetch anime for a season and year.

get_anime_list

Public

Fetch a user's public anime list.

get_suggested_anime

OAuth

Fetch suggestions for the authenticated user.

update_myanimelist

OAuth

Update an anime list entry.

delete_myanimelist_item

OAuth

Delete an anime list entry.

Manga

Tool

Auth

Purpose

get_manga

Public

Search manga by query.

get_manga_details

Public

Fetch details for a manga ID.

get_manga_ranking

Public

Fetch manga rankings.

get_manga_list

Public

Fetch a user's public manga list.

update_mymangalist

OAuth

Update a manga list entry.

delete_mymangalist_item

OAuth

Delete a manga list entry.

User

Tool

Auth

Purpose

get_user_profile

OAuth

Fetch the authenticated user's profile.

Development and testing

Install all locked dependencies, including the development group:

uv sync --locked

Run linting and tests:

uv run --locked ruff check .
uv run --locked pytest -q

The default suite uses mocked HTTP responses, MCP in-memory tests, OAuth callback tests, and stdio subprocess tests. It does not mutate a real MAL account.

Troubleshooting

MAL_CLIENT_ID is not configured

Set MAL_CLIENT_ID in .env or in the MCP client's process environment, then restart the client.

OAuth callback port conflict

Stop the process using port 8080, or choose another loopback port and register the matching redirect URL in MAL:

MAL_CALLBACK_PORT=18080

OAuth does not open a browser

Use MAL_OPEN_BROWSER=true for interactive authorization. For headless use, provide MAL_REFRESH_TOKEN and set MAL_OPEN_BROWSER=false.

MCP client reports malformed output

Start the server with the stdio command above. Do not add application prints to stdout; stdout must contain only MCP protocol messages.

Authenticated tool returns an OAuth error

Check the client ID, client secret, refresh token, redirect URL, and callback port. If the refresh token is expired or revoked, run the interactive flow again.

Resources

Project policies and attribution are documented in CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md, and NOTICE.md.

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    A smart AniList integration for the Model Context Protocol that provides AI assistants with tools for searching media, managing watchlists, and analyzing user anime or manga tastes. It goes beyond basic API calls by offering personalized recommendations, taste comparisons, and natural language profile summaries.
    Last updated
    12
    55
    125
    3
    MIT
  • A
    license
    -
    quality
    D
    maintenance
    A Model Context Protocol server that provides access to MyAnimeList's API for anime and manga data. It enables users to search, view rankings, manage their personal lists, and get recommendations through Claude and other MCP clients.
    Last updated
    745
    MIT

View all related MCP servers

Related MCP Connectors

  • Access and interact with anime and manga data seamlessly. Retrieve detailed information about your…

  • AniList MCP — wraps AniList GraphQL API (free, no auth)

  • AnimeQuotes MCP — wraps animechan.io (free, no auth)

View all MCP Connectors

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/MorpKnight/myanimelist-mcp'

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