动漫搜索与发现服务器

一个基于Model Context Protocol (MCP)的服务器,提供HiAnime和MyAnimeList (MAL)的动漫搜索、浏览和发现功能,支持26种工具。

  • by Shalin-Shah-2002
  • Python
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 Shalin-Shah-2002/MCP_Anime

使用说明

HiAnime MCP服务器🎬

A. 模型上下文协议(MCP) 用于浏览和搜索HiAnime和MyAnimeList(MAL)动漫的服务器。此服务器可用于 任何兼容MCP的客户端,而不仅仅是克劳德桌面!

🌟 特性

此MCP服务器提供 26个强大的工具 动漫探索:

📺 HiAnime工具

工具 说明
search_anime 按关键字搜索动漫
get_popular_anime 获取最受欢迎的动漫
get_top_airing_anime 获取当前正在播放的动漫
get_recently_updated_anime 获取最近更新的动漫
get_completed_anime 完成动漫
get_subbed_anime 获取带有字幕的动漫
get_dubbed_anime 获得配音动漫
get_anime_by_genre 按流派浏览动漫(40+流派)
get_anime_by_type 按类型浏览动漫(电视、电影、OVA等)
get_anime_details 获取特定动漫的详细信息
get_anime_episodes 获取动漫的剧集列表
get_episode_info 获取特定剧集的详细信息
get_anime_az_list 按字母顺序浏览动漫
get_anime_by_producer 按工作室/制作人浏览动漫
filter_anime 高级多标准过滤
get_available_filters 列出所有可用的筛选器选项
check_api_health 检查API是否响应

📊 MyAnimeList(MAL)工具

工具 说明
mal_search 使用官方API在MAL上搜索动漫
mal_anime_details 通过MAL ID获取详细的动漫信息
mal_ranking 获取动漫排名(顶部、播出、即将播出等)
mal_seasonal 按年份和季节获取季节性动漫

🔐 MAL用户身份验证工具

工具 说明
mal_get_auth_url 获取MAL登录的OAuth2授权URL
mal_exchange_token 访问令牌的Exchange身份验证码
mal_user_animelist 使用状态过滤器获取用户的动漫列表
mal_user_profile 获取用户的MAL配置文件信息

🔗 组合工具

工具 说明
combined_search 同时搜索HiAnime和MAL

📋 先决条件

  • Python 3.10+
  • 紫外线 (推荐)或 点

🚀 快速开始

选项1:使用紫外线(推荐)

# Clone or navigate to the project directory
cd MCP_Anime

# Create virtual environment and install dependencies
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install dependencies
uv pip install -e .

# Or install from requirements.txt
uv pip install -r requirements.txt

选项2:使用pip

# Create virtual environment
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

运行服务器

# Using uv
uv run hianime_mcp_server.py

# Or directly with Python
python hianime_mcp_server.py

🔧 MCP客户端的配置

克劳德桌面

编辑您的Claude Desktop配置文件:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 窗户: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "hianime": {
      "command": "uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/MCP_Anime",
        "run",
        "hianime_mcp_server.py"
      ]
    }
  }
}

直接使用Python的替代方案:

{
  "mcpServers": {
    "hianime": {
      "command": "/ABSOLUTE/PATH/TO/MCP_Anime/.venv/bin/python",
      "args": [
        "/ABSOLUTE/PATH/TO/MCP_Anime/hianime_mcp_server.py"
      ]
    }
  }
}

光标IDE

添加到光标MCP设置(.cursor/mcp.json 在项目或全局设置中):

{
  "mcpServers": {
    "hianime": {
      "command": "uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/MCP_Anime",
        "run",
        "hianime_mcp_server.py"
      ]
    }
  }
}

带有Continue扩展名的VS代码

添加到您的继续配置(~/.continue/config.json):

{
  "mcpServers": [
    {
      "name": "hianime",
      "command": "python",
      "args": ["/ABSOLUTE/PATH/TO/MCP_Anime/hianime_mcp_server.py"]
    }
  ]
}

通用MCP客户端

对于支持STDIO传输的任何MCP客户端:

# Command to run the server
uv --directory /path/to/MCP_Anime run hianime_mcp_server.py

# Or with Python
/path/to/MCP_Anime/.venv/bin/python /path/to/MCP_Anime/hianime_mcp_server.py

程序化使用(自定义MCP客户端)

import asyncio
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

async def main():
    server_params = StdioServerParameters(
        command="python",
        args=["/path/to/MCP_Anime/hianime_mcp_server.py"],
    )
    
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            # Initialize the connection
            await session.initialize()
            
            # List available tools
            tools = await session.list_tools()
            print("Available tools:", [t.name for t in tools.tools])
            
            # Call a tool
            result = await session.call_tool(
                "search_anime",
                arguments={"keyword": "naruto", "page": 1}
            )
            print(result)

asyncio.run(main())

📖 用法示例

连接到MCP客户端后,您可以提出以下问题:

  • “搜索关于恶魔的动漫”
  • “现在最受欢迎的动漫是什么?”
  • “向我展示当前正在播放的动漫”
  • “获取《海贼王》的详细信息”
  • “查找得分高于8的动作动漫”
  • “列出MAPPA工作室的所有动漫”
  • “什么动漫以字母A开头?”
  • “向我展示已完成的伊势凯动漫”
  • “获取火影忍者的剧集列表”
  • “MAL上排名最高的动漫是什么?”
  • “给我看2024年冬季的动漫”
  • “搜索HiAnime和MAL以攻击泰坦”
  • “获取我的MAL动漫列表”(需要身份验证)

🛠 可用工具参考

HiAnime-搜索与发现

search_anime(keyword: str, page: int = 1)

按名称或关键字搜索动漫。

HiAnime-浏览分类

get_popular_anime(page: int = 1)
get_top_airing_anime(page: int = 1)
get_recently_updated_anime(page: int = 1)
get_completed_anime(page: int = 1)
get_subbed_anime(page: int = 1)
get_dubbed_anime(page: int = 1)

HiAnime-按属性过滤

get_anime_by_genre(genre: str, page: int = 1)
get_anime_by_type(anime_type: str, page: int = 1)
get_anime_by_producer(producer_slug: str, page: int = 1)
get_anime_az_list(letter: str, page: int = 1)

HiAnime-详细信息

get_anime_details(slug: str)
get_anime_episodes(slug: str)
get_episode_info(slug: str, episode_number: int)

HiAnime-高级过滤

filter_anime(
    anime_type: str = None,      # movie, tv, ova, ona, special, music
    status: str = None,          # finished, airing, upcoming
    rated: str = None,           # g, pg, pg-13, r, r+, rx
    score: int = None,           # 1-10
    season: str = None,          # spring, summer, fall, winter
    language: str = None,        # sub, dub
    genres: str = None,          # comma-separated: "action,fantasy"
    sort: str = None,            # default, recently_added, score, etc.
    page: int = 1
)

MyAnimeList(MAL)-搜索和浏览

mal_search(query: str, limit: int = 10)

使用官方API在MAL上搜索动漫。

mal_anime_details(mal_id: int)

通过MAL ID获取详细的动漫信息。

mal_ranking(ranking_type: str = "all", limit: int = 10)

获取动漫排名。类型:全部、播出、即将上映、电视、电影、小众、最爱

mal_seasonal(year: int, season: str, limit: int = 10)

购买季节性动漫。季节:冬、春、夏、秋

MyAnimeList-用户身份验证

mal_get_auth_url(client_id: str, redirect_uri: str, client_secret: str = None)

获取MAL登录的OAuth2授权URL。

mal_exchange_token(client_id: str, code: str, code_verifier: str, redirect_uri: str, client_secret: str = None)

访问令牌的交换授权码。

mal_user_animelist(client_id: str, access_token: str, status: str = None, limit: int = 100)

获取用户的动漫列表。状态选项:正在监视、已完成、on_hold、已删除、plan_to_watch

mal_user_profile(client_id: str, access_token: str)

获取用户的MAL配置文件信息。

组合工具

combined_search(query: str, limit: int = 5)

同时搜索HiAnime和MAL进行比较。

效用

get_available_filters()          # List all filter options
check_api_health()               # Check API status

🎭 可用类型

动作,冒险,汽车,喜剧,痴呆症,恶魔,戏剧,ecchi,幻想,游戏,后宫,历史,恐怖,isekai,josei,儿童,魔术,武术,机甲,军事,音乐,神秘,模仿,警察,心理,浪漫,武士,学校,科幻,塞纳,shoujo,shoujo-ai,shounen,shounen-ai,生活切片,空间,体育,超能力,超自然,惊悚片,吸血鬼

📁 可用类型

电影、电视、ova、ona、特别节目、音乐

🏆 MAL排名类型

  • all -顶级动漫系列
  • airing -热门动漫
  • upcoming -热门动漫
  • tv -顶级电视剧
  • movie -热门电影
  • bypopularity -最受欢迎
  • favorite -最喜欢的

🍂 可用季节

  • winter -1月至3月
  • spring -4月至6月
  • summer -7月至9月
  • fall -10月至12月

🔐 MAL身份验证设置

要使用MAL用户功能(动漫列表、个人资料),您需要:

  1. 创建一个MAL API应用程序:

    • 首选https://myanimelist.net/apiconfig
    • 创建新应用程序
    • 复制您的客户端ID(以及可选的客户端密码)
  2. 获取授权:

    # Use mal_get_auth_url to get the authorization URL
    # Open the URL in your browser and authorize
    # Copy the 'code' from the callback URL
    
  3. 代币兑换:

    # Use mal_exchange_token with the code and code_verifier
    # Save the access_token securely
    
  4. 使用经过身份验证的端点:

    # Use mal_user_animelist and mal_user_profile with your access_token
    

⚠️ 隐私: 此服务器不会存储您的凭据和令牌。

🔧 故障排除

服务器未显示在Claude Desktop中

  1. 确保在编辑配置后重新启动了Claude Desktop
  2. 检查配置中的路径是否为绝对路径(以开头 / 在macOS/Linux或 C:\ 在Windows上)
  3. 验证Python环境是否安装了所有依赖项

连接超时

HiAnime API可能响应缓慢。服务器配置了30秒超时。

日志记录

服务器记录到stderr。检查MCP客户端的日志以获取调试信息。

手动测试服务器

# Test with MCP inspector
npx @modelcontextprotocol/inspector python hianime_mcp_server.py

📄 许可证

MIT许可证-随意使用和修改!

🤝 贡献

欢迎投稿!请随时提交问题和拉取请求。

🙏 学分