AniList

AniList MCP server for accessing AniList API data

71MITother

Install

Config snippet generator goes here (5 client tabs)

README

# AniList MCP Server

A Model Context Protocol (MCP) server that interfaces with the AniList API, allowing LLM clients to access and interact with anime, manga, character, staff, and user data from AniList.

## Features

- Search for anime, manga, characters, staff, and studios
- Get detailed information about specific anime, manga, characters, and staff members
- Access user profiles and lists
- Support for advanced filtering options
- Retrieve genres and media tags
- **Dual transport support**: Both HTTP and STDIO transports
- **Cloud deployment ready**: Support Smithery and other platforms

## Requirements

- Node.js 18+

## Local Installation (STDIO Transport)

1. Add this server to your `mcp.json` / `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "anilist": {
      "command": "npx",
      "args": ["-y", "anilist-mcp"],
      "env": {
        "ANILIST_TOKEN": "your_api_token"
      }
    }
  }
}
```

You may remove the `env` object entirely, if you are not planning to use the AniList Token for operations that require login.

2. Restart your MCP client (e.g., Claude Desktop)
3. Use the tools to interact with AniList

## Server Deployment (HTTP Transport)

### Self-Hosting
Follow the [Local Development](#local-development) instructions to set up the project locally, then run:
```bash
pnpm run start:http
```
This will start the server on port 8081 by default. You can change the port by setting the `PORT` environment variable.

### Cloud Deployment

You can deploy this MCP server to any cloud platform that supports Node.js server applications.

You can also deploy via MCP platforms like [Smithery](https://smithery.ai/server/@yuna0x0/anilist-mcp).

## Configuration
### Environment Variables (STDIO Transport and HTTP Transport server where host provides the config)

When using the STDIO transport or hosting the HTTP transport server, you can pass configuration via environment variables:
- `ANILIST_TOKEN`: (Optional) AniList API Token (Only needed for operations that require login)

> [!CAUTION]
> If you are hosting the HTTP transport server with token pre-configured, you should protect your endpoint and implement authentication before allowing users to access it. Otherwise, anyone can access your MCP server while using your AniList token.

### HTTP Headers (HTTP Transport where user provides the config)

When using the HTTP transport, user can pass configuration via HTTP headers:
- `Anilist-Token`: (Optional) AniList API Token (Only needed for operations that require login)

If the user provides the token in the header, while the server also has `ANILIST_TOKEN` set, the header value will take precedence.

### Get an AniList API Token (Optional)

To get an API token, follow these steps:

1. Go to [AniList settings](https://anilist.co/settings/developer).
2. Click on "Create New Client".
3. Use this URL as your client's "Redirect URL":
```
https://anilist.co/api/v2/oauth/pin
```

4. Click "Save"
5. Then go to https://anilist.co/api/v2/oauth/authorize?client_id={clientID}&response_type=token, replace the `{clientID}` with the client ID you get. It will ask you to log in and then provide you with the token to use.
6. Copy the generated token and use it in your `.env` file or environment variables.

## Available Tools

### Misc Tools
- **get_genres**: Get all available genres on AniList
- **get_media_tags**: Get all available media tags on AniList
- **get_site_statistics**: Get AniList site statistics over the last seven days
- **get_studio**: Get information about a studio by its AniList ID or name
- **favourite_studio**: [Requires Login] Favourite or unfavourite a studio by its ID

### Activity Tools
- **delete_activity**: [Requires Login] Delete the current authorized user's activity post
- **get_activity**: Get a specific AniList activity by its ID
- **get_user_activity**: Fetch activities from a user
- **post_message_activity**: [Requires Login] Post a new message activity or update an existing one
- **post_text_activity**: [Requires Login] Post a new text activity or update an existing one

### List Tools
- **get_user_anime_list**: Get a user's anime list
- **get_user_manga_list**: Get a user's manga list
- **add_list_entry**: [Requires Login] Add an entry to the authorized user's list
- **remove_list_entry**: [Requires Login] Remove an entry from the authorized user's list
- **update_list_entry**: [Requires Login] Update an entry on the authorized user's list

### Media Tools
- **get_anime**: Get detailed information about an anime by its AniList ID
- **get_manga**: Get detailed information about a manga by its AniList ID
- **favourite_anime**: [Requires Login] Favourite or unfavourite an anime by its ID
- **favourite_manga**: [Requires Login] Favourite or unfavourite a manga by its ID

### People Tools
- **get_character**: Get information about a character by their AniList ID
- **get_staff**: Get information about staff member by their AniList ID
- **favourite_character**: [Requires Login] F