视频元数据MCP服务器
一种模型上下文协议(MCP)服务器,用于管理包含游戏信息、球队、比分和其他体育相关数据的视频元数据。此服务器使用PostgreSQL作为数据库后端。
特性
- CRUD操作:创建、读取、更新和删除视频元数据记录
- 高级搜索:按游戏类型、球队、联赛、赛季、标签和日期范围过滤视频
- PostgreSQL集成:强大的数据库,支持JSONB,实现灵活的数据存储
- MCP协议:与Claude Desktop和其他MCP客户端兼容
- 元数据:支持游戏统计、玩家数据、场地等
数据库模式
服务器使用以下字段管理视频元数据:
id:唯一标识符(自动生成)title:视频标题game_type:游戏类型(例如,“篮球”、“足球”、“英式足球”)teams:参赛队伍名称数组score:最终得分为字符串duration_seconds:视频持续时间(秒)video_url:视频文件的URLthumbnail_url:缩略图的URLdescription:视频描述tags:用于分类的标签数组player_stats:包含玩家统计信息的JSON对象match_date:比赛日期venue:比赛地点league:联赛或比赛名称season:季节标识符created_at/updated_at:时间戳
先决条件
- Node.js(v18或更高版本)
- PostgreSQL(v12或更高版本)
- npm或纱线
安装
- 克隆并设置项目:
git clone
cd metadata-mcp
npm install- 配置PostgreSQL:
- 确保PostgreSQL正在运行 - 创建一个名为的数据库 video_metadata (或使用您喜欢的名字) - 复制 .env.example 到 .env 并更新数据库凭据:
cp .env.example .env- 更新中的环境变量
.env:
POSTGRES_USER=your_username
POSTGRES_PASSWORD=your_password
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=video_metadata- 构建项目:
npm run build- 使用示例数据初始化数据库:
npm run setup用法
运行MCP服务器
npm start服务器将在stdio上运行,可以通过MCP客户端连接。
可用工具
服务器提供以下工具:
1. list_video_metadata
获取所有视频元数据记录。
2. get_video_metadata
按ID获取特定的视频元数据记录。
- 参数:
id(编号)
3. search_video_metadata
使用过滤器搜索视频元数据。
- 参数:
- game_type (字符串,可选) - teams (字符串数组,可选) - league (字符串,可选) - season (字符串,可选) - tags (字符串数组,可选) - match_date_from (ISO日期字符串,可选) - match_date_to (ISO日期字符串,可选)
4. create_video_metadata
创建新的视频元数据记录。
- 所需参数:
title,game_type,teams - 可选参数:所有其他字段
5. update_video_metadata
更新现有的视频元数据记录。
- 所需参数:
id - 可选参数:要更新的任何字段
6. delete_video_metadata
删除视频元数据记录。
- 参数:
id(编号)
7. get_game_types
从数据库中获取所有独特的游戏类型。
8. get_teams
从数据库中获取所有独特的团队。
9. get_leagues
从数据库中获取所有独特的联赛。
Claude Desktop使用示例
将此添加到您的Claude Desktop MCP配置中:
{
"mcpServers": {
"video-metadata": {
"command": "node",
"args": ["/path/to/metadata-mcp/build/index.js"],
"env": {
"POSTGRES_USER": "your_username",
"POSTGRES_PASSWORD": "your_password",
"POSTGRES_HOST": "localhost",
"POSTGRES_PORT": "5432",
"POSTGRES_DB": "video_metadata"
}
}
}
}样品数据
安装脚本包括以下示例数据:
- NBA总决赛第七场(湖人vs凯尔特人)
- 超级碗LVIII(酋长队vs 49人队)
- 冠军联赛决赛(皇家马德里vs利物浦)
发展
项目结构
src/
├── index.ts # Main MCP server implementation
├── database.ts # Database manager and schema
└── setup.ts # Database initialization script
build/ # Compiled JavaScript files
tsconfig.json # TypeScript configuration
package.json # Dependencies and scripts
.env.example # Environment variables template建筑
npm run build添加新功能
- 扩展
VideoMetadata接口在database.ts - 在中添加相应的数据库架构更改
initializeSchema() - 在MCP服务器中实施新工具(
index.ts) - 使用Zod添加验证模式
数据库索引
为了获得最佳性能,会自动创建以下索引:
idx_video_metadata_game_type:在game_type字段上idx_video_metadata_teams:团队JSONB数组上的GIN索引idx_video_metadata_tags:JSONB数组标签上的GIN索引idx_video_metadata_match_date:在match_date字段上idx_video_metadata_league:在联赛赛场上
错误处理
服务器包括全面的错误处理:
- 数据库连接错误
- 无效的参数验证(使用Zod架构)
- 找不到资源错误
- 正确的MCP错误代码和消息
贡献
- 复刻仓库
- 创建要素分支
- 添加新功能的测试
- 提交拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
