你是否曾经想查询一部电影的详细信息,却不得不在多个网站间来回切换?或者你需要整理一份“本周最受欢迎电影”的列表,却只能手动复制粘贴数据?现在,利用 Model Context Protocol (MCP) 和 AI 助手,你可以直接通过对话完成这一切。

imdb-mcp-server 是一个用 Python 实现的 MCP 服务器,它将庞大的 IMDb 电影数据库与 AI 应用连接起来。通过这个服务器,像 Claude 这样的 AI 可以直接调用工具来搜索电影、获取演职人员信息、查看票房数据,甚至关注特定地区的电影动态。这意味着,查询电影信息将变得像和朋友聊天一样简单直接。

项目基本信息

信息项详情
项目名称imdb-mcp-server
GitHub地址https://github.com/uzaysozen/imdb-mcp-server
项目描述一个为电影和电视节目信息提供 MCP 服务的 Python 服务器,使用 IMDb API。
作者uzaysozen
开源协议MIT License
开源状态公开状态
LanguagesPython
支持平台Windows / macOS / Linux
最后更新2026-04-13

一、项目介绍

imdb-mcp-server 的核心价值在于,它将 IMDb 这个庞大的、非结构化的影视信息库,转化为了 AI 能够轻松理解和调用的结构化工具集。它充当了 AI 与 IMDb 数据之间的桥梁,让你用自然语言指令就能完成复杂的影视信息查询和分析工作。

这个项目不仅仅是封装了一个简单的搜索接口。它针对 AI 的使用场景做了深度优化。例如,它引入了智能分页机制,所有列表类工具(如最受欢迎电影、Top 250 榜单)每次只返回 5 条结果,这能有效防止 AI 的“上下文窗口”被海量数据淹没,让 AI 能够更清晰地处理信息。同时,它还内置了一个 智能缓存系统,可以减少对 IMDb API 的重复请求,既提升了响应速度,也帮助你更好地管理 API 使用额度。

二、核心优势

为 AI 对话而生的工具设计

这个项目最精妙的地方在于,它的每个工具都设计得像一个“可调用的函数”,并配有清晰的描述。AI 能够理解 search_imdb(搜索电影)、get_directors(获取导演)或 get_upcoming_releases(获取即将上映影片)这些工具的用途,并根据你的问题自动组合调用它们。这构建了一个流畅的对话式数据查询体验。

优化的数据交付:分页与缓存

普通的 API 可能会一次性返回 100 个电影结果,这对于人类或 AI 来说都难以消化。imdb-mcp-server 的所有列表接口都严格限制为每页 5 条记录。当 AI 获取了一个榜单的前 5 名后,如果用户想看更多,AI 会明白需要再次调用工具并传入 start=5 参数来获取第 6-10 名。同时,内存缓存机制会暂存常见查询的结果(默认 10 分钟),这使得重复查询“什么是目前最受欢迎的电影”几乎是即时响应的。

对印度电影的特别关注

这是一个非常独特的亮点。项目专门提供了一套“India Spotlight”(印度聚焦)工具,如 get_top_rated_malayalam_movies(获取马拉雅拉姆语高分电影)或 get_upcoming_indian_movies(获取即将上映的印度电影)。如果你对快速增长的印度电影市场(宝莱坞、托莱坞等)感兴趣,或者需要处理相关数据,这个功能的价值巨大。

灵活的部署与传输模式

项目支持 stdioHTTP 两种传输模式。stdio 模式非常适合与本地安装的 Claude Desktop 等客户端集成。而 HTTP 模式则允许你将服务器部署为一个独立的网络服务,通过 Docker 容器运行,这使得它可以被远程的 AI 应用或服务调用,架构上更加灵活。

三、适用场景

构建智能影视推荐助手

想象一下,你可以打造一个 AI 聊天机器人,用户可以直接问它:“给我推荐几部即将上映的动作片。” AI 会调用 get_upcoming_releases 获取未来上映列表,再从结果中筛选出动作片,最终用自然的语言推荐给用户。这个服务器提供了完成此闭环所需的所有数据工具。

自动化内容创作与数据分析

内容创作者在写影评或影视分析文章时,往往需要收集大量数据。通过 AI,你可以直接命令:“查找 1994 年上映的《肖申克的救赎》的导演、主要演员和它在 Top 250 榜单中的排名。” AI 会并行调用 get_imdb_detailsget_top_250_movies 等工具,然后将结构化信息直接整合到你的草稿中。市场分析师也可以用它来追踪票房趋势或不同类型电影的流行度变化。

为你的应用注入实时影视数据

如果你正在开发一个影视相关的网站、App 或游戏,需要获取实时的电影元数据(如海报、简介、评分),传统的做法是直接集成 IMDb API。但通过 imdb-mcp-server,你可以将其作为中间层,利用其分页和缓存优势,更方便地获取格式化数据。并且,由于它支持 HTTP 模式,可以作为微服务独立运行,供你主程序的其他部分调用。

AI 驱动的影视数据库学习工具

对于学习 MCP 协议或 AI 应用开发的开发者来说,这是一个极佳的范例项目。它的代码结构清晰,很好地展示了如何将复杂的第三方 API(RapidAPI 上的 IMDb API)封装成符合 MCP 标准的工具。你可以通过研读它的 src 目录代码,学习如何定义工具、处理分页、实现缓存以及支持两种传输模式。

四、安装教程

在开始前,你需要准备两样东西:

  1. Python 环境:需要 Python 3.13 或更高版本。你可以从 Python 官网下载并安装。
  2. RapidAPI 的 IMDb API 密钥

    • 访问 RapidAPI 网站并注册账号。
    • 搜索 “IMDb API”(通常由 imdb8 提供)并订阅一个套餐(通常有免费额度)。
    • 在你的 RapidAPI 控制台中找到你的 API 密钥(通常名为 X-RapidAPI-Key)。

下面介绍最便捷的方法:通过 Smithery 自动配置到 Claude Desktop。这是推荐给大多数用户的方式。

步骤一:通过 Smithery 安装

打开你的终端(命令提示符或 PowerShell),运行以下命令:

npx -y @smithery/cli install @uzaysozen/imdb-mcp-server --client claude

这个命令会自动下载、配置服务器,并会提示你输入你的 RapidAPI 密钥。你需要在此处提供你的 IMDb API 密钥。

步骤二:重启 Claude Desktop

安装成功后,完全退出并重启 Claude Desktop 应用程序。

步骤三:开始使用

在 Claude 的对话输入框中,你现在可以尝试输入:“帮我查一下电影《盗梦空间》(Inception)的导演和主要演员。” 如果配置成功,Claude 会提示正在调用 MCP 工具,并给出准确的答案。

备选方案:手动配置(使用 uv 包管理器)

如果你想手动配置以进行开发或调试,可以遵循以下步骤:

  1. 克隆并进入项目目录:

    git clone https://github.com/uzaysozen/imdb-mcp-server
    cd imdb-mcp-server
  2. 安装 uv 包管理器:

    • macOS/Linux: curl -LsSf https://astral.sh/uv/install.sh | sh
    • Windows: powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
  3. 同步项目依赖:uv sync
  4. 找到你的 Claude Desktop 配置文件并编辑:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  5. 添加以下 JSON 配置(请务必将路径和 API 密钥替换成你自己的):
{
  “mcpServers”: {
    “imdb_server”: {
      “command”: “uv”,
      “args”: [
        “--directory”,
        “/你的完整路径/imdb-mcp-server”,
        “run”,
        “imdb-server”
      ],
      “env”: {
        “RAPID_API_KEY_IMDB”: “你的RapidAPI密钥”
      }
    }
  }
}
  1. 保存文件并重启 Claude Desktop。

五、使用示例

以下是你配置好 imdb-mcp-server 后,能与 AI 进行的真实对话样例。

示例 1:查找电影详情与主创

用户指令:“请找出电影《沙丘》(Dune, 2021年)的导演、两位主要编剧和最终票房收入。”

AI 背后的操作:AI 会先调用 search_imdb 找到确切的 imdb_id。然后,它会并行或按顺序调用 get_directorsget_writersget_imdb_details(因为详细信息中包含票房数据),最后汇总信息。

示例 2:对比两部电影的评分

用户指令:“比较一下《肖申克的救赎》和《教父》在 IMDb Top 250 榜单中的排名谁更高?”

AI 背后的操作:AI 会调用 get_top_250_movies 工具(注意这是一个分页工具,默认返回前 5 名)。它可能只从第一页结果中就找到了这两部经典电影的名次。如果没有,它会知道通过调用 get_top_250_movies(start=5) 等方式继续获取,直到找到并比较两者的名次。

示例 3:查询特定国家的即将上映影片

用户指令:“未来在日本上映的有哪些动画电影?请列出三部。”

AI 背后的操作:首先,AI 可能需要调用 get_country_codes_for_upcoming_releases 来确认日本的代码是“JP”。然后,它会调用 get_upcoming_releases 工具,并传入 country_code=JP,从返回的列表中筛选出类型或题材包含“动画”的电影,并列举三部。

六、常见问题

问题 1:在 Claude Desktop 中配置后,AI 说找不到工具或没有响应

解决方案: 这通常是因为配置文件的路径或命令写错了。请仔细检查你的 claude_desktop_config.json 文件:

  • 路径:确保 --directory 后面的路径是你的项目所在的绝对路径
  • 命令:确认 commanduv,并且 uv 已经正确安装并添加到系统 PATH 中。你可以在终端输入 uv --version 来测试。
  • 重启:修改配置文件后,务必完全退出并重启 Claude Desktop,不是仅仅关掉聊天窗口。

问题 2:AI 告诉我“API key not recognized”或认证失败

解决方案: 这表明你的 RapidAPI 密钥没有正确传递。

  • stdio 模式:确认你在配置文件中的 env 部分正确设置了 RAPID_API_KEY_IMDB 这一环境变量名,并且值是你在 RapidAPI 上获取的真实密钥。
  • 网络问题:请确保你的网络可以正常访问 https://imdb8.p.rapidapi.com 这个域名。

问题 3:AI 列出的榜单只有 5 个项目,我问它“还有吗?”它不知道怎么回答

解决方案: 这不是错误,这是项目的智能分页功能。你需要用更明确的指令来触发下一页。你可以这样问:“显示接下来的 5 个最受欢迎电影。” 或者 “翻到下一页”。AI 会理解并再次调用同一个工具,但会传入 start=5 这个参数来获取第 6-10 名。

问题 4:运行一段时间后,感觉查询变慢了

解决方案: 可能是内存缓存积累了很多数据,或者是你的 IP 达到了 RapidAPI 免费套餐的速率限制。

  • 可以尝试重启 imdb-mcp-server 服务。对于 Claude Desktop 配置,重启 Claude Desktop 即可,这会清空内存缓存。
  • 检查你的 RapidAPI 账户使用情况,看是否接近或达到了订阅套餐的调用上限。

七、总结

imdb-mcp-server 是一个非常专注且实用的项目。它精准地解决了“如何让 AI 以符合自身交互模式的方式访问结构化影视数据”这一问题。它没有试图做太多事情,而是把搜索、查询详情、获取榜单这几类核心功能做精做深。通过优秀的分页设计和缓存机制,它照顾到了 AI 应用的性能和稳定性。

对于开发者而言,它是一个学习如何将现有 Web API 包装成 MCP 工具的绝佳范例。对于普通用户和内容创作者来说,它是连接你的 AI 助手与海量 IMDb 数据世界的最短路径。无论你是想快速查询一个电影细节,还是构建一个复杂的影视聊天机器人,这个项目都是一个非常值得投入时间尝试的起点。

标签: 内容抓取

已有 35 条评论

    1. AlexSmith AlexSmith

      This tutorial is a lifesaver. I was struggling to set up the API key, and the environment variable part finally made it click for me.

    2. JessieLin JessieLin

      Does this server also support getting actor filmographies? The article only mentions cast for a single movie.

    3. MikeRogers MikeRogers

      The India spotlight tools are surprising but very welcome. Malayalam cinema has some real gems.

    4. SarahJones SarahJones

      I used the Docker method and it worked perfectly. The HTTP mode is great for my multi-service setup.

    5. DavidWang DavidWang

      Is there a reason for the 3.13+ Python requirement? That seems very strict. Many systems still run 3.10.