这是一个使用 IMDb API 服务实现电影和电视节目信息的 Model Context Protocol (MCP) 的 Python 服务器。
此服务器提供了一整套工具,通过 IMDb API 访问 IMDb 数据。它充当代理与 IMDb 数据库之间的桥梁,提供关于电影、电视剧、演员、导演等的详细信息。
此服务器需要 RapidAPI 的 IMDb API 服务的 API 密钥:
在 RapidAPI 创建一个账户
在 RapidAPI 上订阅 IMDb API
使用以下方法之一配置 API 密钥:
方法 1: Smithery 配置(适用于 HTTP 模式)
方法 2: 环境变量(适用于 stdio 模式)
export RAPID_API_KEY_IMDB=your_api_key_here
| 工具 | 描述 | 示例 |
|---|---|---|
| search_imdb | 使用各种过滤选项搜索电影和电视剧 | search_imdb(primary_title="Inception") |
| 工具 | 描述 | 示例 |
|---|---|---|
| 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(start=0) |
| get_top_box_office_us | 获取美国票房记录 | get_top_box_office_us(start= 0) |
| get_most_popular_movies | 获取最受欢迎的电影 | get_most_popular_movies(start=0) |
分页(每页 5 条结果)
| 工具 | 描述 | 示例 |
|---|---|---|
| get_top_250_tv_shows | 获取 IMDb 排名前 250 的电视剧 | get_top_250_tv_shows(start=0) |
| get_most_popular_tv_shows | 获取最受欢迎的电视剧 | get_most_popular_tv_shows(start=0) |
分页(每页 5 条结果)
| 工具 | 描述 | 示例 |
|---|---|---|
| get_upcoming_releases | 根据国家获取即将上映的电影和电视剧 | get_upcoming_releases(country_code="US", type="MOVIE", start=0) |
| get_country_codes_for_upcoming_releases | 获取可用的国家代码 | get_country_codes_for_upcoming_releases() |
分页(每页 5 条结果)
| 工具 | 描述 | 示例 |
|---|---|---|
| get_top_rated_malayalam_movies | 获取评分最高的 50 部马拉雅拉姆语电影 | get_top_rated_malayalam_movies(start=0) |
| get_upcoming_indian_movies | 获取最受期待的即将上映的印度电影 | get_upcoming_indian_movies(start=0) |
| get_trending_tamil_movies | 获取热门泰米尔语电影 | get_trending_tamil_movies(start=0) |
| get_trending_telugu_movies | 获取热门泰卢固语电影 | get_trending_telugu_movies(start=0) |
| get_top_rated_tamil_movies | 获取评分最高的 50 部泰米尔语电影 | get_top_rated_tamil_movies(start=0) |
| get_top_rated_telugu_movies | 获取评分最高的 50 部泰卢固语电影 | get_top_rated_telugu_movies(start=0) |
| get_top_rated_indian_movies | 获取评分最高的 250 部印度电影 | get_top_rated_indian_movies(start=0) |
最近未来将上映的 5 部动作电影是什么?
我将为您找到即将上映的动作电影。
调用 MCP 工具 get_upcoming_releases
现在我将从这些即将上映的电影中查找动作电影:
调用 MCP 工具 get_upcoming_releases
根据搜索结果,以下是最近未来将上映的 5 部动作电影:
我的世界电影(2025年4月4日)
怪异故事(2025年4月4日)
醒来(2025年4月4日)
战争(2025年4月11日)
业余爱好者(2025年4月11日)
要通过 Smithery 自动安装 IMDb 服务器到 Claude Desktop:
npx -y @smithery/cli install @uzaysozen/imdb-mcp-server --client claude
这将自动通过 Smithery 的配置系统配置服务器并使用您的 RapidAPI 密钥。
git clone https://github.com/uzaysozen/imdb-mcp-server.git
cd imdb-mcp-server
docker build -t imdb_server .
docker run -d -p 8081:8081 -e RAPID_API_KEY_IMDB=your_api_key_here --name imdb_server imdb_server
注意:Docker 容器默认在 HTTP 模式下运行,端口为 8081。
git clone https://github.com/uzaysozen/imdb-mcp-server.git
cd imdb-mcp-server
# 在 macOS 和 Linux 上
curl -LsSf https://astral.sh/uv/install.sh | sh
# 在 Windows 上
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
uv sync
claude_desktop_config.json 中:{
"mcpServers": {
"imdb_server": {
"command": "uv",
"args": [
"--directory",
"/path/to/imdb-mcp-server",
"run",
"imdb-server"
],
"env": {
"RAPID_API_KEY_IMDB": "your_api_key_here"
}
}
}
}
# 使用 uv(推荐)
uv run imdb-server
# 或直接使用 Python 模块
python -m imdb_mcp_server
# 使用 uv
TRANSPORT=http uv run imdb-server
# 或使用 Python 模块
TRANSPORT=http python -m imdb_mcp_server
# 使用自定义端口
TRANSPORT=http PORT=8081 uv run imdb-server
在添加了您选择的配置后,请重启 Claude Desktop 以加载 IMDb 服务器。然后,您可以在与 Claude 的对话中使用所有电影和电视剧数据工具。
服务器构建于:
服务器支持两种传输模式:
Stdio 模式(默认): 传统的 MCP 服务器通过标准输入/输出进行通信
RAPID_API_KEY_IMDB) 配置HTTP 模式: 支持 CORS 的 RESTful HTTP 传输
PORT 环境变量配置)所有数据检索工具都实现了分页以增强 AI 代理性能:
start 参数(默认值:0)get_top_250_movies(start=5) 返回第 6 到第 10 项服务器实现了一个高效的缓存系统以提高性能并减少 API 调用次数:
可以在 src/main.py 中调整缓存大小和过期时间:
# 默认值:600 秒(10 分钟)和 100 个缓存键
# 您可以通过修改 ResponseCache 实例化来定制:
response_cache = ResponseCache(max_size=100, expiry_seconds=600)
# 示例使用自定义值:
# response_cache = ResponseCache(max_size=50, expiry_seconds=120)
| 问题 | 解决方案 |
|---|---|
| API 密钥未被识别 | Stdio 模式: 确保 RAPID_API_KEY_IMDB 环境变量正确设置。HTTP 模式: 验证 Smithery 配置中的 rapidApiKeyImdb 是否提供 |
| 达到速率限制 | 检查您的 RapidAPI 订阅级别和限制在 RapidAPI 仪表板 |
| 超时错误 | 服务器有一个 30 秒超时;对于大请求,尝试限制参数或使用分页 |
| 结果为空 | 尝试更广泛的搜索词或检查内容是否存在于 IMDb 数据库中 |
| 内存使用过高 | 如果长时间运行且有许多独特查询,请偶尔重启服务器以清除缓存 |
| 端口已被占用 | 使用 PORT 环境变量更改端口(仅限 HTTP 模式): `PORT=8082 python src/main |