MediaSage
一个模型上下文协议(MCP)服务器,用于跟踪电影、书籍和电视节目,根据您的偏好提供智能推荐。使用Bun、SQLite(通过Drizzle ORM)构建,支持本地(stdio)和远程(HTTP/SSE)连接。
特性
- 多媒体跟踪:跟踪带有评级、状态和注释的电影、书籍和电视节目
- 智能过滤:按类型、状态、评级、流派等列出媒体
- 跨媒体推荐:根据您对所有媒体类型的偏好获取建议
- 元数据:从OMDB(电影)、Google Books(书籍)和TMDB(电视节目)自动获取元数据
- 偏好分析:了解你最喜欢的流派、创作者以及你通常喜欢什么
- 永久存储:具有Drizzle ORM和适当关系的SQLite数据库
- 远程访问:支持服务器发送事件(SSE)的HTTP服务器
- 安全:远程连接的API密钥身份验证
安装
# Clone the repository
git clone
cd mediasage
# Install dependencies
bun install
# Set up API keys (required for metadata enrichment)
cp .env.example .env
# Edit .env and add your API keys:
# - OMDB_API_KEY (required for movies): Get from http://www.omdbapi.com/apikey.aspx
# - TMDB_API_KEY (required for TV shows): Get from https://www.themoviedb.org/settings/api
# - GOOGLE_BOOKS_API_KEY (optional for books): Get from Google Cloud Console
# Run migration if you have existing movie data
bun run src/migrate-to-media.ts用法
本地模式(stdio)
用于Claude Desktop或其他MCP客户端:
# Development (with file watching)
bun run dev
# Production
bun run start远程模式(HTTP/SSE)
对于通过HTTP进行远程访问:
# Set environment variables
export API_KEY="your-secure-api-key"
export PORT=3000 # optional, defaults to 3000
# Development (with file watching)
bun run dev:http
# Production
bun run start:http可用工具
电影工具
search_and_add_movie
搜索一部电影,并从OMDB中添加自动填充的元数据。
参数:
title(必填):要搜索的电影标题year:发布年份(有助于准确性)watched:是否观看过(默认值:false)rating:如果观看,您的评分(1-10)notes:个人笔记likedAspects:你喜欢什么(逗号分隔)dislikedAspects你不喜欢什么mood:你什么时候/为什么看它recommendationContext:这将如何影响建议
书籍工具
search_and_add_book
搜索一本书,并添加来自谷歌图书的自动填充元数据。
参数:
title(必填):要搜索的书名author:作者姓名(有助于准确性)read:是否已阅读(默认值:false)rating:如果阅读,您的评分(1-10)notes:个人笔记likedAspects:你喜欢什么(逗号分隔)dislikedAspects你不喜欢什么mood:你什么时候/为什么读它recommendationContext:这将如何影响建议
电视节目工具
search_and_add_tv_show
搜索电视节目,并添加来自TMDB的自动填充元数据。
参数:
title(必填):要搜索的电视节目标题year:首次播出年份(有助于准确性)watched:是否观看过(默认值:false)rating:如果观看,您的评分(1-10)notes:个人笔记likedAspects:你喜欢什么(逗号分隔)dislikedAspects你不喜欢什么mood:你什么时候/为什么看它recommendationContext:这将如何影响建议
通用工具
list_media
列出所有具有高级过滤选项的媒体。
参数:
type:按媒体类型筛选(“电影”、“书籍”、“tv_show”)watched_only:仅显示已观看/已阅读的项目watchlist_only:仅显示未查看/未读项目min_rating:最小额定值过滤器(1-10)genre:按流派筛选creator:按导演/作者/创作者筛选year:按年份筛选
add_movie_to_watchlist
将电影添加到您的观看列表(您想观看的电影)。
参数:
title(必填):电影标题year:发布年份notes你为什么想看recommendationContext:为什么推荐
get_smart_recommendations
根据您对所有媒体类型的偏好获得智能推荐。
参数:
mood当前情绪(例如,“充满活力”、“深思熟虑”)genre_preference:特定流派兴趣length_preference:首选长度(短/中/长/任意)count:建议数(默认值:5)
mark_as_watched
将观看列表中的一部电影标记为已观看,并对其进行评分。
参数:
id(必填):电影IDrating:您的评分(1-10)likedAspects:你喜欢什么dislikedAspects你不喜欢什么notes:你的想法
analyze_preferences
分析你的媒体偏好,了解你的品味。
update_movie
更新现有的电影条目。
参数:
id(必填):电影IDrating:新评分(1-10)watched:更新手表状态notes:更新笔记likedAspects:更新喜欢的方面dislikedAspects:更新不喜欢的方面mood:更新情绪上下文
配置
克劳德桌面
添加到您的Claude Desktop配置中:
{
"mcpServers": {
"mediasage": {
"command": "bun",
"args": ["run", "/path/to/mediasage/index.ts"]
}
}
}远程客户端配置
连接到HTTP端点:
Endpoint: http://localhost:3000/mcp
Method: POST
Headers:
- Content-Type: text/event-stream
- Authorization: Bearer YOUR_API_KEY环境变量
PORT:HTTP服务器端口(默认值:3000)API_KEY:远程访问的身份验证密钥(HTTP模式需要)OMDB_API_KEY:OMDB电影元数据的API密钥(在获取免费密钥 omdbapi.com)
电影元数据
服务器自动从OMDB API获取电影元数据,包括:
- 导演、演员、流派、情节摘要
- IMDb评分,烂番茄评分
- 发布日期、运行时间、票房数据
- 海报图片及其他
若要启用元数据获取,请从获取一个免费的API密钥 omdbapi.com 并设置:
export OMDB_API_KEY="your-api-key"工作流程
- 添加您观看过的电影:使用
search_and_add_movie随着watched: true以及您的评分 - 建立你的观察名单:使用
add_movie_to_watchlist你想看的电影 - 评分和分析:使用
mark_as_watched当你观看列表中的内容时 - 获取推荐:使用
get_smart_recommendations用于个性化建议 - 了解你的口味:使用
analyze_preferences查看您的电影模式
发展
项目结构:
movie-rec-mcp/
├── index.ts # Main stdio server
├── src/
│ ├── http-server.ts # HTTP/SSE server
│ ├── sse-transport.ts # SSE transport implementation
│ └── db/
│ ├── index.ts # Database operations
│ └── schema.ts # Drizzle schema definitions
├── movies.db # SQLite database (auto-created)
└── package.json安全说明
- 部署时更改默认的API密钥
- HTTP服务器包含用于开发的CORS标头
- 考虑在生产环境中使用HTTPS
- 出于隐私考虑,数据库文件被忽略
许可证
麻省理工学院
