视频元数据管理服务器

一个基于Model Context Protocol (MCP)的视频元数据管理服务器,支持体育比赛视频的元数据存储、检索和管理,适用于体育数据分析、视频归档等场景。

  • by stich-studios
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 stich-studios/metadata-mcp

使用说明

视频元数据MCP服务器

一种模型上下文协议(MCP)服务器,用于管理包含游戏信息、球队、比分和其他体育相关数据的视频元数据。此服务器使用PostgreSQL作为数据库后端。

特性

  • CRUD操作:创建、读取、更新和删除视频元数据记录
  • 高级搜索:按游戏类型、球队、联赛、赛季、标签和日期范围过滤视频
  • PostgreSQL集成:强大的数据库,支持JSONB,实现灵活的数据存储
  • MCP协议:与Claude Desktop和其他MCP客户端兼容
  • 元数据:支持游戏统计、玩家数据、场地等

数据库模式

服务器使用以下字段管理视频元数据:

  • id:唯一标识符(自动生成)
  • title:视频标题
  • game_type:游戏类型(例如,“篮球”、“足球”、“英式足球”)
  • teams:参赛队伍名称数组
  • score:最终得分为字符串
  • duration_seconds:视频持续时间(秒)
  • video_url:视频文件的URL
  • thumbnail_url:缩略图的URL
  • description:视频描述
  • tags:用于分类的标签数组
  • player_stats:包含玩家统计信息的JSON对象
  • match_date:比赛日期
  • venue:比赛地点
  • league:联赛或比赛名称
  • season:季节标识符
  • created_at / updated_at:时间戳

先决条件

  • Node.js(v18或更高版本)
  • PostgreSQL(v12或更高版本)
  • npm或纱线

安装

  1. 克隆并设置项目:

    git clone <repository-url>
    cd metadata-mcp
    npm install
    
  2. 配置PostgreSQL:

    • 确保PostgreSQL正在运行
    • 创建一个名为的数据库 video_metadata (或使用您喜欢的名字)
    • 复制 .env.example 到 .env 并更新数据库凭据:
    cp .env.example .env
    
  3. 更新中的环境变量 .env:

    POSTGRES_USER=your_username
    POSTGRES_PASSWORD=your_password
    POSTGRES_HOST=localhost
    POSTGRES_PORT=5432
    POSTGRES_DB=video_metadata
    
  4. 构建项目:

    npm run build
    
  5. 使用示例数据初始化数据库:

    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

添加新功能

  1. 扩展 VideoMetadata 接口在 database.ts
  2. 在中添加相应的数据库架构更改 initializeSchema()
  3. 在MCP服务器中实施新工具(index.ts)
  4. 使用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错误代码和消息

贡献

  1. 复刻仓库
  2. 创建要素分支
  3. 添加新功能的测试
  4. 提交拉取请求

许可证

MIT许可证-有关详细信息,请参阅许可证文件。