IMDb MCP服务器
一个全面的MCP服务器,提供详细的IMDb数据,包括电影、电视节目和即将上映的影片。
服务介绍
IMDb MCP 服务器
这是一个使用 IMDb API 服务实现模型上下文协议 (MCP) 的 Python 服务器,用于电影和电视剧信息。
目录
概述
该服务器通过 IMDb API 提供了一整套访问 IMDb 数据的工具。它作为代理与 IMDb 数据库之间的桥梁,提供关于电影、电视剧、演员、导演等的详细信息。
特性
- 🎬 电影和电视剧搜索功能
- 📋 电影和电视剧的详细信息
- 👨👩👧👦 演员和工作人员信息
- 🏆 最高评分和热门内容列表
- 💰 票房数据
- 🌍 国家特定的电影信息(特别关注印度电影)
- 🔜 即将上映的影片
- 🔄 高效的响应缓存系统
配置
此服务器需要来自 RapidAPI 的 IMDb API 服务的 API 密钥:
工具
搜索工具
| 工具 | 描述 | 示例 |
|---|---|---|
| search_imdb | 使用各种过滤选项搜索电影和电视剧 | search_imdb(primary_title="Inception") |
IMDb ID 工具
| 工具 | 描述 | 示例 |
|---|---|---|
| get_imdb_details | 获取电影或电视剧的详细信息 | get_imdb_details(imdb_id="tt1375666") |
| get_directors | 获取电影的导演 | get_directors(imdb_id="tt1375666") |
| get_cast | 获取电影的演员阵容 | get_cast(imdb_id="tt1375666") |
| get_writers | 获取电影的编剧 | get_writers(imdb_id="tt1375666") |
配置工具
| 工具 | 描述 | 示例 |
|---|---|---|
| get_types | 获取所有可用的内容类型 | get_types() |
| get_genres | 获取所有可用的流派 | get_genres() |
| get_countries | 获取所有可用的国家 | get_countries() |
| get_languages | 获取所有可用的语言 | get_languages() |
电影工具
分页(每页5条结果)
| 工具 | 描述 | 示例 |
|---|---|---|
| get_top_250_movies | 从IMDb获取排名前250的电影 | get_top_250_movies() |
| get_top_box_office_us | 获取美国票房记录 | get_top_box_office_us() |
| get_most_popular_movies | 获取最受欢迎的电影 | get_most_popular_movies() |
电视剧工具
分页(每页5条结果)
| 工具 | 描述 | 示例 |
|---|---|---|
| get_top_250_tv_shows | 从IMDb获取排名前250的电视剧 | get_top_250_tv_shows() |
| get_most_popular_tv_shows | 获取最受欢迎的电视剧 | get_most_popular_tv_shows() |
即将上映作品工具
分页(每页5条结果)
| 工具 | 描述 | 示例 |
|---|---|---|
| get_upcoming_releases | 按国家获取即将上映的电影和电视剧 | get_upcoming_releases(country_code="US", type="MOVIE") |
| get_available_country_codes_for_upcoming_releases | 获取可用于即将上映作品的国家代码 | get_available_country_codes_for_upcoming_releases() |
印度焦点工具(分页)
分页(每页5条结果)
| 工具 | 描述 | 示例 |
|---|---|---|
| get_top_rated_malayalam_movies | 获取评分最高的前50部马拉雅拉姆语电影 | get_top_rated_malayalam_movies() |
| get_upcoming_indian_movies | 获取最受期待的即将上映的印度电影 | get_upcoming_indian_movies() |
| get_trending_tamil_movies | 获取热门泰米尔语电影 | get_trending_tamil_movies() |
| get_trending_telugu_movies | 获取热门泰卢固语电影 | get_trending_telugu_movies() |
| get_top_rated_tamil_movies | 获取评分最高的前50部泰米尔语电影 | get_top_rated_tamil_movies() |
| get_top_rated_telugu_movies | 获取评分最高的前50部泰卢固语电影 | get_top_rated_telugu_movies() |
| get_top_rated_indian_movies | 获取评分最高的前250部印度电影 | get_top_rated_indian_movies() |
示例提示与响应
最近未来将上映的5部动作电影是什么?
我将为您查找即将上映的动作电影。
调用MCP工具 get_upcoming_releases
现在我将从这些即将上映的作品中寻找动作电影:
调用MCP工具 get_upcoming_releases
根据搜索结果,以下是最近未来将上映的5部动作电影:
-
《我的世界》电影 (2025年4月4日)
- 类型:动作、冒险、喜剧
- 描述:四个不合群的人被拉入一个立方体仙境,并与一位专业工匠一起踏上回家的旅程。
-
疯狂故事 (2025年4月4日)
- 类型:动作、冒险、喜剧
- 描述:四个相互关联的故事设定在1987年的加利福尼亚州奥克兰,讲述了对音乐、电影、人、地方和记忆的热爱。
-
醒来 (2025年4月4日)
- 类型:动作、恐怖
- 描述:年轻的活动家们闯入一家家具店抗议环境问题,却发现自己被困在一个痴迷于狩猎的夜班保安手中。
-
战争 (2025年4月11日)
- 类型:动作、剧情、战争
- 描述:根据前海军海豹突击队队员雷·门多萨在伊拉克战争中的真实经历改编。
-
业余者 (2025年4月11日)
- 类型:动作、惊悚
- 描述:一名中情局密码学家勒索其机构训练他追捕杀害其妻子的恐怖分子。
安装
通过Smithery安装
要通过Smithery自动为Claude Desktop安装IMDb Server:
npx -y @smithery/cli install @uzaysozen/imdb-mcp-server --client claude
选项1:使用Docker(推荐)
- 克隆此仓库
git clone https://github.com/uzaysozen/imdb-mcp-server.git
cd imdb-mcp-server
- 安装依赖
pip install -r requirements.txt
- 构建Docker镜像
docker build -t imdb_server .
- 运行Docker容器(确保将API密钥作为环境变量传递)
docker run -d -p 8000:8000 -e RAPID_API_KEY_IMDB=your_api_key_here --name imdb_server imdb_server
- 将以下内容添加到你的
claude_desktop_config.json文件中:
{
"mcpServers": {
"imdb_server": {
"command": "docker",
"args": [
"exec",
"-i",
"imdb_server",
"imdb-mcp-server"
],
"env": {
"RAPID_API_KEY_IMDB": "your_api_key_here"
}
}
}
}
选项2:直接执行Python
- 克隆此仓库
git clone https://github.com/uzaysozen/imdb-mcp-server.git
cd imdb-mcp-server
- 安装依赖
pip install -r requirements.txt
- 设置API密钥环境变量
export RAPID_API_KEY_IMDB=your_api_key_here
- 将以下内容添加到你的
claude_desktop_config.json文件中,根据需要调整Python路径:
{
"mcpServers": {
"imdb_server": {
"command": "/path/to/your/python",
"args": [
"/path/to/imdb_server.py"
],
"env": {
"RAPID_API_KEY_IMDB": "your_api_key_here"
}
}
}
}
启动服务器
# Start the server directly
python imdb_server.py
# Or using MCP CLI
mcp run imdb_server.py
# Or if using Docker, the server starts automatically with the container
docker run -d -p 8000:8000 -e RAPID_API_KEY_IMDB=your_api_key_here --name imdb_server imdb_server
添加所选配置后,重新启动Claude Desktop以加载IMDb服务器。然后你就可以在与Claude的对话中使用所有电影和电视剧的数据工具了。
技术细节
该服务器基于以下技术构建:
- 通过RapidAPI访问IMDb API
- 使用MCP进行API接口
- 使用Requests进行API通信
- 使用FastMCP实现服务器
- 自定义内存缓存系统
- 智能分页,每次请求限制为5条结果,优化AI代理的消费
分页系统
所有数据检索工具都实现了分页,以增强AI代理的性能:
目的
- AI优化响应:每次响应限制为5条,防止AI代理处理数据时信息过载
- 聚焦结果:帮助代理向用户提供更相关且简洁的信息
- 改进处理:减少AI代理在分析电影和电视剧数据时的认知负担
实现
- 每个分页端点接受一个
start参数(默认值:0) - 结果包括导航元数据(totalCount, hasMore, nextStart)
- 所有集合端点的一致5条页面大小
- 带有分页的示例请求:
get_top_250_movies(start=5)返回第6-10条项目
优点
- 更好的代理响应:防止 AI 代理一次性接收过多数据
- 可管理的信息:创建易于处理的数据块,使代理能够有效处理
- 顺序访问:通过多次工具调用允许对大型数据集进行结构化探索
缓存系统
服务器实现了一个高效的缓存系统以提高性能并减少 API 调用:
功能
- 内存缓存:将 API 响应存储在内存中以便快速检索
- 可配置的过期时间和大小:缓存条目在自定义时间段后过期(默认:10 分钟),并且默认大小为 100 个缓存键
- 自动缓存清理:定期(默认:5 分钟)使用后台线程删除已过期的条目以管理内存使用
- 缓存键:基于 URL 和查询参数生成以确保唯一性
优点
- 减少 API 使用:通过重用响应帮助保持在 API 速率限制内
- 更快的响应时间:消除缓存查询的网络延迟
- 成本效益:最小化 API 调用次数,特别是对于热门或重复查询
配置
可以在代码中调整缓存大小和过期时间:
# Default are 600 seconds (10 minutes) and 100 cache keys
response_cache = ResponseCache(expiry_seconds=120, max_size=50)
限制
- 根据您的 RapidAPI 订阅,API 速率限制适用
- 某些详细信息可能需要额外的 API 调用
- 搜索结果可能每次请求限制在一定数量的项目内
- 服务器重启时内存缓存会丢失
- 所有分页响应每页返回最多 5 个项目
故障排除
| 问题 | 解决方案 |
|---|---|
| API 密钥未被识别 | 确保 RAPID_API_KEY_IMDB 环境变量设置正确 |
| 超出速率限制 | 检查您的 RapidAPI 订阅级别和限制 |
| 超时错误 | 服务器超时时间为 30 秒;对于大量请求,尝试限制参数 |
| 结果为空 | 尝试更广泛的搜索词或检查内容是否存在于 IMDb 数据库中 |
| 内存使用高 | 如果运行较长时间且具有许多唯一查询,请偶尔重启服务器以清除缓存 |
许可证
此 MCP 服务器在 MIT 许可下提供。