用 MCP 让 Claude Desktop 陪你下双陆棋:一个可参考的开源示例项目
AIAI Summary (BLUF)
这是一个通过MCP协议让Claude Desktop玩西洋双陆棋的开源项目,也支持独立网页版。文章详细介绍了项目结构、环境要求、安装步骤以及两种运行模式(本地双人模式和与Claude对战模式)的配置方法,并指出了当前存在的已知限制。
核心洞察
用 Claude DesktopAnthropic推出的桌面版AI助手应用,支持通过MCP集成外部工具。 下棋这件事,MCPModel Context Protocol - a protocol that enables AI models to access external tools, data sources, and services to enhance their capabilities and context awareness. 的 UI 交互还远没到丝滑的程度。作者自己都承认了两个硬伤:棋盘每回合重绘、点结束回合不会自动触发模型。如果你只是想找个能跑起来的 MCP 示例项目参考,这个仓库的结构值得一看。
一个能跟大模型对弈的双陆棋项目。可以通过 Claude Desktop 走 MCP 协议玩,也能当独立网页应用打开。
核心结论
该项目是一个可运行的双陆棋(Backgammon)示例,支持两种运行方式:通过 Claude Desktop 走 MCP 协议对弈,或作为独立网页应用在浏览器中本地对弈。
项目采用 monorepo 结构,分为四个包:
game(基于 Redux Toolkit用于Redux状态管理的官方工具集,简化了Redux的配置和使用。 的纯游戏逻辑,不依赖框架)、viewer(受控的 React 棋盘 UI 组件)、web-app(Vite一个快速的前端构建工具和开发服务器,Astro 底层使用 Vite。 + React 独立应用)、mcp-server(对接 Claude Desktop 的 MCP 服务端)。运行环境要求 Node.js 18 及以上,并使用 pnpm一个快速、节省磁盘空间的Node.js包管理器。OpenClaw从源代码安装时强制推荐使用pnpm,因为它在处理复杂依赖树时比npm更高效稳定。 作为包管理器。
首次使用 MCP 模式前必须执行
pnpm --filter @backgammon/mcp-server build:client构建客户端 UI 包,产物为单文件packages/mcp-server/dist/client/index.html;修改 viewer 或 client 代码后需重新构建。项目存在两个已知 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 交互的当前限制。
版权与免责声明:本文仅用于信息分享与交流,不构成任何形式的法律、投资、医疗或其他专业建议,也不构成对任何结果的承诺或保证。
文中提及的商标、品牌、Logo、产品名称及相关图片/素材,其权利归各自合法权利人所有。本站内容可能基于公开资料整理,亦可能使用 AI 辅助生成或润色;我们尽力确保准确与合规,但不保证完整性、时效性与适用性,请读者自行甄别并以官方信息为准。
若本文内容或素材涉嫌侵权、隐私不当或存在错误,请相关权利人/当事人联系本站,我们将及时核实并采取删除、修正或下架等处理措施。也请勿在评论或联系信息中提交身份证号、手机号、住址等个人敏感信息。



