Server data from the Official MCP Registry
MyAnimeList MCP server: Jikan-powered reads plus official MAL personal-list management.
MyAnimeList MCP server: Jikan-powered reads plus official MAL personal-list management.
Valid MCP server (1 strong, 0 medium validity signals). No known CVEs in dependencies. Package registry verified. Imported from the Official MCP Registry.
4 files analyzed · 1 issue found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: MAL_CLIENT_ID
Environment variable: MAL_REFRESH_TOKEN
Environment variable: MAL_ACCESS_TOKEN
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-grinv-mal-mcp": {
"env": {
"MAL_CLIENT_ID": "your-mal-client-id-here",
"MAL_ACCESS_TOKEN": "your-mal-access-token-here",
"MAL_REFRESH_TOKEN": "your-mal-refresh-token-here"
},
"args": [
"-y",
"mal-mcp"
],
"command": "npx"
}
}
}From the project's GitHub README.
An MCP server for MyAnimeList. It works with any MCP-compatible client or agent (Claude Desktop/Code, Cursor, VS Code, Cline, Continue, and others) — the server speaks the standard MCP stdio protocol.
It uses a hybrid backend:
If no token is configured, the personal-list tools return a clear, actionable error and everything else keeps working.
| Tool | Backend | Auth |
|---|---|---|
search_anime, search_manga | Jikan | none |
get_anime, get_manga | Jikan | none |
get_anime_characters, get_anime_recommendations, get_anime_reviews | Jikan | none |
get_manga_characters, get_manga_recommendations, get_manga_reviews | Jikan | none |
get_anime_episodes | Jikan | none |
get_anime_genres, get_manga_genres | Jikan | none |
search_characters, get_character | Jikan | none |
search_people, get_person, get_anime_staff | Jikan | none |
get_anime_statistics, get_manga_statistics | Jikan | none |
get_random_anime, get_random_manga, get_random_character, get_random_person | Jikan | none |
get_anime_news | Jikan | none |
get_top_anime, get_top_manga | Jikan | none |
get_top_people, get_top_characters | Jikan | none |
get_seasonal_anime, get_upcoming_season, get_seasons_list, get_anime_schedule | Jikan | none |
get_producers | Jikan | none |
get_user_profile, get_user_favorites | Jikan | none |
get_my_user_info, get_my_anime_list, get_my_manga_list | MAL | token |
update_my_anime_status, update_my_manga_status | MAL | token |
delete_my_anime_list_item, delete_my_manga_list_item | MAL | token |
login_mal, submit_mal_redirect | MAL | login |
token = needs a MyAnimeList login (run login_mal once). Prompts:
recommend_similar, seasonal_overview.
.mcpb bundle (one-click, e.g. Claude Desktop)Download mal-mcp.mcpb from the latest release
and open it with your MCP client. It prompts for an optional MyAnimeList Client
ID — set it and run the login_mal tool to enable the personal-list tools (see
Connect your MyAnimeList account).
Leave it blank to use just the credential-free read tools.
git clone https://github.com/Grinv/mal-mcp
cd mal-mcp
npm ci
npm run build
This produces a self-contained dist/index.js. Point your client at it (see below).
Add the server to your client's MCP config (Claude Desktop/Code, Cursor, VS Code,
Cline, …). The simplest option is npx — no clone, no build:
{
"mcpServers": {
"mal": {
"command": "npx",
"args": ["-y", "mal-mcp"],
"env": {
"MAL_CLIENT_ID": "..."
}
}
}
}
Or with the Claude Code CLI:
claude mcp add mal -e MAL_CLIENT_ID=... -- npx -y mal-mcp
If you built from source instead, replace "command": "npx", "args": ["-y", "mal-mcp"]
with "command": "node", "args": ["/absolute/path/to/mal-mcp/dist/index.js"].
The env block is optional — omit it to use only the credential-free read
tools (search, details, rankings, …); the personal-list tools will return a clear
error until you log in. To enable them, set MAL_CLIENT_ID and run the
login_mal tool once (a one-time browser authorization; the token is then
stored and refreshed automatically). The server does not read a .env file, so
pass config via this env block (or your shell environment). See
docs/auth.md for the full login walkthrough and
docs/clients.md for more clients.
The search/browse tools work with no setup. To use the personal-list tools
(get_my_*, update_my_*, delete_my_*), authorize your account once. It takes
about two minutes. There is no client secret — mal-mcp uses the modern
public-client flow (PKCE), so you only need a Client ID.
Step 1 — Register a MyAnimeList app (one minute).
other. (Not web — that type forces a client
secret this server doesn't use.)http://localhost:8080/callback
(If port 8080 is already used on your machine, pick another port here and set
MAL_OAUTH_PORT to the same number — see Configuration.)Step 2 — Give the Client ID to the server.
Add it to your MCP client config (or paste it into the Claude Desktop install form). Nothing else is needed here:
"env": { "MAL_CLIENT_ID": "paste-your-client-id-here" }
Restart the server/client so it picks up the value.
Step 3 — Log in (one click).
In your assistant, run the login_mal tool (or just say "log in to
MyAnimeList"). It replies with a link. Open the link, sign in to MAL, and click
Allow.
get_my_user_info).?code=…) and give it to the
submit_mal_redirect tool to finish.That's it. The token is saved locally (~/.config/mal-mcp/tokens.json, 0600)
and refreshed automatically from now on — you won't need to log in again.
Prefer no interactive step? You can instead pre-set
MAL_REFRESH_TOKEN(withMAL_CLIENT_ID) or a standaloneMAL_ACCESS_TOKEN. See docs/auth.md for how to obtain them by hand.
All configuration is via environment variables, all optional — without credentials
the read tools still work. For the personal-list tools, set MAL_CLIENT_ID and run
the login_mal tool once; the access token is then fetched and refreshed
automatically. (mal-mcp is a public PKCE client — there is no client secret.)
| Variable | Purpose |
|---|---|
MAL_CLIENT_ID | Your MAL app (type other) Client ID. Then run login_mal. See docs/auth.md. |
MAL_REFRESH_TOKEN | Advanced/optional. Pre-supply a refresh token instead of running login_mal. |
MAL_ACCESS_TOKEN | Advanced/optional. A standalone token; works ~30 days, no refresh. |
MAL_TOKEN_STORE | Override the token cache path (default: OS config dir). |
MAL_OAUTH_PORT | Localhost port for the login_mal callback (default 8080); must match your app's Redirect URI. |
LOG_LEVEL | debug | info | warn | error | silent (default info). |
These have sensible defaults; change them only if you self-host Jikan or need different timing.
| Variable | Purpose |
|---|---|
JIKAN_MIN_INTERVAL_MS | Min spacing between Jikan calls (default 400). On top of this the client enforces Jikan's published 3/s and 60/min limits; set to 0 to disable all client-side throttling. |
CACHE_TTL_MS | TTL for the in-memory read cache (default 300000 = 5 min). |
HTTP_TIMEOUT_MS, HTTP_RETRIES | Per-request timeout (default 15000) and retry attempts for transient failures (default 2). |
JIKAN_BASE_URL, MAL_BASE_URL, MAL_OAUTH_BASE_URL | Override upstream base URLs (e.g. a self-hosted Jikan instance). |
Provide these in your MCP client config's env block (the server does not
read a .env file). See docs/auth.md for how to obtain the
credentials, and
docs/clients.md for client configuration snippets.
NSFW (adult) results are not filtered by default — the server returns whatever
the upstream API provides. Search tools accept an optional sfw parameter; set
sfw: true to exclude adult entries via Jikan.
npm run build # type-check + bundle to dist/
npm test # node:test suite (mocked, offline)
npm run test:coverage
npm run lint
npm run format
npm run check:api # live health-check of upstream endpoints
npm run inspector # run under the MCP Inspector
Runtime requires Node ≥ 18 (global fetch). See AGENTS.md for
contributor/agent guidance.
To be notified of new versions, click Watch → Releases on GitHub.
.mcpb bundle: download the new mal-mcp.mcpb from the
releases page and reinstall it in
your client (it replaces the old version).git pull && npm ci && npm run build.npx -y mal-mcp fetches the latest on
the next run; if you pinned a version, bump it.See the CHANGELOG for what changed in each release.
This is an unofficial project and is not affiliated with or endorsed by MyAnimeList. Read data is provided by Jikan, an unofficial MAL API; please respect its rate limits. Personal-list operations use the official MyAnimeList API under your own account and token. Use is subject to the MyAnimeList Terms of Service.
MIT © Grinv
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.