GEOZ

用 MCP 让 Claude Desktop 陪你下双陆棋:一个可参考的开源示例项目

2026/9/21
用 MCP 让 Claude Desktop 陪你下双陆棋:一个可参考的开源示例项目

AIAI Summary (BLUF)

这是一个通过MCP协议让Claude Desktop玩西洋双陆棋的开源项目,也支持独立网页版。文章详细介绍了项目结构、环境要求、安装步骤以及两种运行模式(本地双人模式和与Claude对战模式)的配置方法,并指出了当前存在的已知限制。

核心洞察

Claude Desktop 下棋这件事,MCP 的 UI 交互还远没到丝滑的程度。作者自己都承认了两个硬伤:棋盘每回合重绘、点结束回合不会自动触发模型。如果你只是想找个能跑起来的 MCP 示例项目参考,这个仓库的结构值得一看。


一个能跟大模型对弈的双陆棋项目。可以通过 Claude Desktop 走 MCP 协议玩,也能当独立网页应用打开。

核心结论

  1. 该项目是一个可运行的双陆棋(Backgammon)示例,支持两种运行方式:通过 Claude Desktop 走 MCP 协议对弈,或作为独立网页应用在浏览器中本地对弈。

  2. 项目采用 monorepo 结构,分为四个包:game(基于 Redux Toolkit 的纯游戏逻辑,不依赖框架)、viewer(受控的 React 棋盘 UI 组件)、web-appVite + React 独立应用)、mcp-server(对接 Claude Desktop 的 MCP 服务端)。

  3. 运行环境要求 Node.js 18 及以上,并使用 pnpm 作为包管理器。

  4. 首次使用 MCP 模式前必须执行 pnpm --filter @backgammon/mcp-server build:client 构建客户端 UI 包,产物为单文件 packages/mcp-server/dist/client/index.html;修改 viewer 或 client 代码后需重新构建。

  5. 项目存在两个已知 UI 交互问题:每回合棋盘会完整重绘;点击“结束回合”后模型不会自动走棋,需手动在聊天框按回车触发(相关讨论见 modelcontextprotocol/ext-apps#430)。

项目结构

packages/
├── game/          核心游戏逻辑(基于 Redux,不依赖框架)
├── viewer/        棋盘的 React UI 组件
├── web-app/       独立网页应用(沙发模式)
└── mcp-server/    MCP 服务端,对接 Claude Desktop

前置条件

  • Node.js 18 及以上
  • pnpm(npm install -g pnpm

安装

git clone <repo-url>
cd backgammon-mcp
pnpm install

运行方式

沙发模式(独立网页应用)

在浏览器里本地对弈,适合两个人共用一台设备。

# 启动开发服务器
pnpm --filter @backgammon/web-app dev

浏览器打开 http://localhost:3000 就行。

Claude Desktop(MCP 应用)

让 Claude 当对手,或者看 Claude 自己跟自己下。

1. 构建 MCP 应用

MCP 服务端需要一个构建好的客户端 UI 包。第一次使用前必须执行,之后改了 viewer 或 client 代码也要重新构建。

# 构建客户端 UI 包(必须)
pnpm --filter @backgammon/mcp-server build:client

构建产物在 packages/mcp-server/dist/client/index.html,是一个单文件包,里面就是交互式棋盘的完整 UI。

2. 配置 Claude Desktop

编辑 Claude Desktop 的配置文件:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json

加入 backgammon 服务端:

{
  "mcpServers": {
    "backgammon": {
      "command": "npx",
      "args": [
        "tsx",
        "/ABSOLUTE/PATH/TO/backgammon-mcp/packages/mcp-server/src/server.ts"
      ]
    }
  }
}

注意:把 /ABSOLUTE/PATH/TO/backgammon-mcp 换成仓库的实际完整路径。

3. 重启 Claude Desktop

保存配置后重启。MCP 服务列表里应该能看到 backgammon。

4. 开始下棋

让 Claude 开一局:

“来下双陆棋吧!开一局新游戏,我执白你执黑。”

或者看 AI 自己打自己:

“开一局双陆棋,你同时控制双方,自己跟自己下。”

已知问题

每回合棋盘会重绘:你或模型每走一步,棋盘 UI 都会完整重绘一次。这个问题在 modelcontextprotocol/ext-apps#430 里有讨论,以后可能会改善。

结束回合不会自动触发模型:在界面上点“结束回合”之后,模型不会自动走棋。MCP Apps SDK 的 ui/message(至少在 Claude Desktop 里)只是把内容填进聊天输入框,并不会发送,你得手动按回车。ui/update-model-context 也一样,会等到用户下一条消息才生效。目前的变通做法是:点完“结束回合”,在聊天框里按一下回车,提示模型该它走了。

开发

跑测试

# 所有包
pnpm test

# 指定某个包
pnpm --filter @backgammon/game test

类型检查

pnpm typecheck

Lint

pnpm lint

架构说明

  • game/:纯游戏逻辑,不依赖任何 UI。用 Redux Toolkit 管理状态,导出 reducer、action、selector 和类型定义。
  • viewer/:渲染双陆棋棋盘的 React 组件。完全受控,所有状态通过 props 传入,事件通过回调抛出。用 CSS 自定义属性做主题。
  • web-app/:独立的 Vite + React 应用,把游戏逻辑和 viewer 组合在一起,用 Redux 管理状态。
  • mcp-server/:MCP 服务端,对外暴露游戏工具,同时把 viewer 作为 MCP App 资源提供。viewer 通过 vite-plugin-singlefile 打包成单个 HTML 文件。

常见问题(FAQ)

Cooley ChatGPT 这个双陆棋项目怎么安装?

先确保 Node.js 18+ 和 pnpm,然后 git clone 仓库,进入目录执行 pnpm install 即可。之后可按需运行沙发模式或配置 Claude Desktop 的 MCP 服务。

怎么让 Claude Desktop 跟我在这个项目里下双陆棋?

先构建 MCP 客户端 UI 包,再编辑 Claude Desktop 配置文件加入 backgammon 服务端,重启后让 Claude 开一局,比如“来下双陆棋吧!我执白你执黑”。

这个双陆棋项目目前有哪些已知问题?

每回合棋盘会完整重绘;点“结束回合”后模型不会自动走棋,需要手动在聊天框按回车触发。这些是 MCP UI 交互的当前限制。

Roger深圳
本文由 Roger 审核,最后更新于 2026年9月21日
联系编辑 →
← 返回文章列表
分享到:微博

版权与免责声明:本文仅用于信息分享与交流,不构成任何形式的法律、投资、医疗或其他专业建议,也不构成对任何结果的承诺或保证。

文中提及的商标、品牌、Logo、产品名称及相关图片/素材,其权利归各自合法权利人所有。本站内容可能基于公开资料整理,亦可能使用 AI 辅助生成或润色;我们尽力确保准确与合规,但不保证完整性、时效性与适用性,请读者自行甄别并以官方信息为准。

若本文内容或素材涉嫌侵权、隐私不当或存在错误,请相关权利人/当事人联系本站,我们将及时核实并采取删除、修正或下架等处理措施。也请勿在评论或联系信息中提交身份证号、手机号、住址等个人敏感信息。