国际象棋数据服务

一个通过Model Context Protocol(MCP)提供国际象棋.com API数据访问的服务,支持AI助手如Claude和ChatGPT等。

  • by SalvatoreDiPalo
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 salvatoredipalo/chess-mcp-server

使用说明

国际象棋MCP服务器

模型上下文协议(MCP)服务器,通过Claude、ChatGPT等人工智能助手提供对Chess.com API数据的无缝访问。

MCP资源

项目架构

此国际象棋MCP服务器提供三个主要工具:

  1. getPlayerProfile -检索玩家信息和统计数据
  2. getPlayerStats -获取详细的玩家评级和表现数据
  3. getDailyPuzzle -访问每日国际象棋拼图

快速开始

先决条件

  • Node.js 18.0.0或更高版本
  • npm或yarn包管理器

安装

  1. 克隆存储库

    git clone https://github.com/dipalosalvatore/chess-mcp-server.git
    cd chess-mcp-server
    
  2. 安装依赖项

    npm install
    
  3. 构建项目

    npm run build
    
  4. 启动服务器

    npm start
    

Docker支持

使用Docker

  1. 构建Docker镜像

    docker build -t chess-mcp-server .
    
  2. 运行容器

    docker run -it chess-mcp-server
    

MCP客户端的Docker配置

使用Docker时,更新MCP客户端配置以使用Docker容器:

Claude桌面与Docker

{
  "mcpServers": {
    "chess": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "chess-mcp-server"],
      "env": {}
    }
  }
}

MCP配置

适用于克劳德桌面

  1. 打开克劳德桌面设置
  2. 导航到“服务器”部分
  3. 使用以下设置添加新服务器:
{
  "name": "Chess MCP Server",
  "command": "node",
  "args": ["/path/to/chess-mcp-server/dist/index.js"],
  "env": {}
}

对于其他MCP客户端

大多数MCP客户端支持类似的配置。服务器通过stdin/stdout进行通信,因此您需要指定:

  • 命令: node
  • 参数: [path-to-dist/index.js]
  • 工作目录:您的项目目录

配置文件示例

克劳德桌面(claude_desktop_config.json)

{
  "mcpServers": {
    "chess": {
      "command": "node",
      "args": ["/Users/username/projects/chess-mcp-server/dist/index.js"],
      "env": {}
    }
  }
}

ChatGPT(如果支持)

{
  "servers": [
    {
      "name": "Chess Server",
      "command": "node",
      "args": ["dist/index.js"],
      "cwd": "/path/to/chess-mcp-server"
    }
  ]
}

可用工具

1.获取玩家资料

从Chess.com检索全面的玩家信息。

工具名称: getPlayerProfile

参数:

  • username (字符串,必填):Chess.com用户名

示例用法:

Get the profile for player "magnuscarlsen"

2.获取玩家统计信息

检索详细的玩家统计数据和评级。

工具名称: getPlayerStats

参数:

  • username (字符串,必填):Chess.com用户名

示例用法:

Get statistics for player "hikaru"

3.获取每日拼图

从Chess.com检索当前每日谜题。

工具名称: getDailyPuzzle

参数:无

示例用法:

Get today's chess puzzle

发展

从源头构建

# Install dependencies
npm install

# Type checking
npm run type-check

# Build the project
npm run build

项目结构详图

国际象棋API包装(src/chess/)

国际象棋API分为几个专业类:

  • PlayerApi -玩家资料、统计数据和游戏历史
  • PuzzleApi -日常谜题和随机谜题
  • CommunityApi -俱乐部、锦标赛和球队
  • BaseChessApi -常见功能和HTTP客户端设置

MCP工具(src/tools/)

每个工具都被实现为一个函数,该函数:

  1. 使用Zod模式验证输入
  2. 调用相应的Chess.com API
  3. 返回标准化的MCP响应
  4. 优雅地处理错误

错误处理

服务器提供全面的错误处理:

  • 验证错误 (400)-输入参数无效
  • 未找到错误 (404)-未找到玩家或资源
  • 速率限制错误 (429)-超过API速率限制
  • 服务器错误 (5xx)-Chess.com API问题

贡献

欢迎投稿!请随时提交拉取请求。

开发设置

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

致谢