使用说明
TMDB MCP服务器
一个可用于生产的模型上下文协议(MCP)服务器,与电影数据库(TMDB)API集成,旨在使用Hono.js框架在Cloudflare Workers上运行。
特性
- 34 MCP工具 用于全面的TMDB API访问
- 双重运输支持:SSE(传统)和流式HTTP(新标准)
- Cloudflare缓存 集成以提高性能
- 稳健的错误处理 带有优雅的错误消息
- 类型安全 完全支持TypeScript
- 了解费率限制 具有适当的错误响应
可用工具
搜索与发现
| 工具 | 说明 |
|---|---|
search_movies |
使用可选的年份过滤器按标题搜索电影 |
search_tv_shows |
按名称搜索电视节目 |
search_person |
寻找演员、导演和工作人员 |
discover_movies |
使用滤镜进行高级电影发现 |
discover_tv |
使用滤镜进行高级电视节目发现 |
get_trending |
获取热门电影、电视节目或人物 |
电影详细信息
| 工具 | 说明 |
|---|---|
get_movie_details |
获取包括演员和工作人员在内的全面电影细节 |
get_movie_recommendations |
根据电影获得电影推荐 |
get_similar_movies |
获取与特定电影类似的电影 |
get_movie_videos |
获取一部电影的所有视频(预告片、预告片、剪辑) |
get_movie_images |
获取电影的所有图片(海报、背景、徽标) |
get_movie_reviews |
获取电影的用户评论 |
电视节目详情
| 工具 | 说明 |
|---|---|
get_tv_details |
获取电视节目的详细信息,包括季节和剧集 |
get_tv_recommendations |
根据节目获取电视节目推荐 |
get_similar_tv |
获取与特定节目类似的电视节目 |
get_tv_videos |
获取电视节目的所有视频 |
get_tv_images |
获取电视节目的所有图像 |
get_tv_reviews |
获取电视节目的用户评论 |
get_season_details |
获取有关电视节目季的详细信息 |
get_episode_details |
获取有关电视节目集的详细信息 |
人员详细信息
| 工具 | 说明 |
|---|---|
get_person_details |
获取人物传记和电影目录 |
get_person_images |
获取一个人的所有个人资料图像 |
列表和图表
| 工具 | 说明 |
|---|---|
get_now_playing |
获取当前在影院播放的电影 |
get_upcoming |
让电影在未来两周内上映 |
get_popular_movies |
获取当前热门电影 |
get_top_rated_movies |
获得有史以来收视率最高的电影 |
get_latest_movie |
获取最近添加的电影 |
get_airing_today |
让电视节目今天播出 |
get_on_the_air |
获取当前正在播放的电视节目 |
get_popular_tv |
获取当前流行的电视节目 |
get_top_rated_tv |
获得有史以来收视率最高的电视节目 |
get_latest_tv |
获取最新添加的电视节目 |
参考数据
| 工具 | 说明 |
|---|---|
get_movie_certifications |
按国家获得电影认证 |
get_tv_certifications |
按国家获得电视节目认证 |
先决条件
- Node.js 18+
- npm或纱线
- TMDB API密钥 (读取访问令牌)
- Cloudflare帐户(用于部署)
设置
1.安装依赖项
npm install
2.配置环境变量
创建一个 .dev.vars 本地开发文件:
cp .dev.vars.example .dev.vars
编辑 .dev.vars 并添加您的TMDB API密钥:
TMDB_API_KEY=your_tmdb_api_key_here
3.地方发展
启动开发服务器:
npm run dev
服务器将在以下时间可用 http://localhost:8787
4.测试终点
离线测试套件:
npm test
实时集成测试(要求 TMDB_API_KEY 以及出站访问 api.themoviedb.org):
npm run test:endpoints
npm run test:integration
健康检查:
curl http://localhost:8787/health
列出可用工具:
curl http://localhost:8787/tools
SSE连接(适用于MCP客户端):
curl -N http://localhost:8787/sse
部署
部署到Cloudflare Workers
- 将TMDB API密钥设置为机密:
wrangler secret put TMDB_API_KEY
- 部署:
npm run deploy
MCP客户端配置
苏格兰和南方能源公司运输(传统)
配置您的MCP客户端以使用SSE进行连接:
{
"mcpServers": {
"tmdb": {
"url": "http://localhost:8787/sse",
"transport": "sse"
}
}
}
流式HTTP传输(推荐)
更新、更高效的传输协议:
{
"mcpServers": {
"tmdb": {
"url": "http://localhost:8787/mcp",
"transport": "streamable-http"
}
}
}
对于已部署的员工:
{
"mcpServers": {
"tmdb": {
"url": "https://tmdb-mcp-server.<your-subdomain>.workers.dev/mcp",
"transport": "streamable-http"
}
}
}
可用端点
| 端点 | 方法 | 描述 |
|---|---|---|
/health |
GET | 健康检查和服务器信息 |
/tools |
GET | 列出所有可用工具 |
/sse |
GET | SSE传输连接(传统) |
/message |
POST | SSE传输消息(传统) |
/mcp |
GET/POST/DELETE | 流式HTTP传输 |
工具使用示例
搜索电影
{
"name": "search_movies",
"arguments": {
"query": "The Matrix",
"year": 1999
}
}
获取电影详细信息
{
"name": "get_movie_details",
"arguments": {
"movie_id": 603
}
}
发现电影
{
"name": "discover_movies",
"arguments": {
"genres": "28,12",
"min_rating": 7.5,
"sort_by": "popularity.desc"
}
}
获取趋势
{
"name": "get_trending",
"arguments": {
"media_type": "movie",
"time_window": "week"
}
}
项目结构
tmdb-mcp/
├── src/
│ ├── index.ts # Main server entry point
│ └── lib/
│ ├── tmdb-client.ts # TMDB API client with caching
│ └── mcp-tools.ts # MCP tool definitions
├── package.json
├── wrangler.toml
├── tsconfig.json
└── .dev.vars.example
API 参考
TMDB客户端
这 TMDBClient 类为TMDB API提供了一个类型安全的包装器:
- 自动错误处理
- 速率限制检测(429个响应)
- Cloudflare缓存集成
- 图像URL转换
图像URL
工具返回的所有图像路径都使用以下格式转换为完整URL:
https://image.tmdb.org/t/p/w500/{path}
可选尺寸:w92、w154、w185、w342、w500、w780、原装
错误处理
服务器处理各种错误情况:
- TMDB API错误:返回描述性错误消息
- 速率限制:返回429并在标头后重试
- 网络错误:优美的错误消息
- 无效输入:Zod验证错误
许可证
麻省理工学院