mal-mcp-worker
Enables querying MyAnimeList data (anime search, rankings, seasonal anime, user lists) via natural language through the Model Context Protocol.
README
MAL-MCP-Worker
A Cloudflare Worker that exposes the MyAnimeList v2 API as a read-only MCP (Model Context Protocol) server using the Streamable HTTP transport.
Connect it to Claude.ai (or any MCP client) and ask things like:
- "Search for anime similar to Attack on Titan"
- "What are the top 10 anime of all time on MAL?"
- "What's airing in winter 2025?"
- "Show me JohnDoe's completed anime list with their personal scores"
MCP Tools
| Tool | Description | Required Params |
|---|---|---|
mal_search_anime |
Search anime by keyword | query |
mal_get_anime |
Full details for an anime by ID | id |
mal_get_rankings |
Top anime by ranking type | — |
mal_get_seasonal |
Seasonal anime chart | year, season |
mal_get_user_list |
A public user's anime list with personal scores | username |
Getting a MAL Client ID
All deployment options require a MAL Client ID. It's free and takes 2 minutes.
- Log in at myanimelist.net
- Go to myanimelist.net/apiconfig → Create ID
- App Name: anything • App Type: other • Redirect URL:
http://localhost - Copy the Client ID from the next page
Deployment
Cloudflare Workers is free. Pick the option that suits you:
Option 1 — Deploy from this repo (easiest, no local setup)
Cloudflare pulls directly from this public GitHub repo and auto-deploys on every push to main. No CLI, no API tokens in GitHub.
- Sign up / log in at dash.cloudflare.com — it's free
- Go to Workers & Pages → Create → Import from Git
- Connect your GitHub and select this repo (
Leander-Andersen/mal-mcp-worker) - Build settings:
- Build command:
npm install - Deploy command:
npx wrangler deploy
- Build command:
- Click Save and Deploy
- Once deployed, go to your Worker → Settings → Variables and Secrets → Add Secret
- Name:
MAL_CLIENT_ID• Value: your MAL Client ID
- Name:
- Trigger a redeploy so the secret takes effect
Your Worker URL:
https://mal-mcp-worker.<your-subdomain>.workers.dev
Option 2 — Fork and deploy your own copy
Same as Option 1, but gives you full control to modify and push your own changes.
- Fork this repo on GitHub
- Follow Option 1 steps, selecting your fork instead
- Any push to
mainin your fork will auto-deploy
Option 3 — Deploy from local clone
For those who prefer the CLI or want to develop locally.
# Clone and install
git clone https://github.com/Leander-Andersen/mal-mcp-worker.git
cd mal-mcp-worker
npm install
# Set your MAL Client ID as a Cloudflare secret
npx wrangler secret put MAL_CLIENT_ID
# Paste your Client ID when prompted
# Deploy
npm run deploy
<details> <summary>Local development (wrangler dev)</summary>
# Create your local secrets file
cp .dev.vars.example .dev.vars
# Edit .dev.vars and set MAL_CLIENT_ID=your_actual_client_id
# Start local dev server at http://localhost:8787
npm run dev
Test endpoints:
# Health check
curl http://localhost:8787/
# Initialize MCP session
curl -X POST http://localhost:8787/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{}}}'
# List available tools
curl -X POST http://localhost:8787/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
# Search anime
curl -X POST http://localhost:8787/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"mal_search_anime","arguments":{"query":"fullmetal alchemist","limit":3}}}'
</details>
Connecting to Claude.ai
- Open Claude.ai → Settings → Integrations
- Click Add Integration
- Enter your Worker URL:
https://mal-mcp-worker.<your-subdomain>.workers.dev/mcp - Save — Claude will discover all 5 tools automatically
Architecture
src/index.ts — Request routing, CORS, Env type
└─ src/mcp.ts — MCP/JSON-RPC protocol (initialize, tools/list, tools/call)
└─ src/tools.ts — Tool definitions (inputSchema) + dispatch + formatting
└─ src/mal.ts — MAL v2 API client (typed fetch wrappers)
Transport: Streamable HTTP (spec 2025-03-26) — client POSTs JSON-RPC to /mcp, server responds with SSE.
Notes
- Free to run — Cloudflare Workers free tier is more than enough for personal use
- Fully stateless — no KV, D1, or persistent storage. Each request is self-contained.
- Open-source safe —
MAL_CLIENT_IDis a Cloudflare secret injected at runtime; never in source code - Read-only — only public MAL data. No OAuth, no write operations
- CORS — wildcard origin (
*) so any MCP client can connect
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器