使用说明
[!重要] 这个项目已经转移了。
mcp-server-return-to-dark-tower现在是 UltimateDarkTower单体回购 在apps/mcp-server. 那里的发展仍在继续;此存储库是 存档/只读. 完整的git历史记录被保留(标签mcp-v1.0.0).npm包名称不变--
npx -y mcp-server-return-to-dark-tower仍然有效, 现在从monorepo发布。
重返黑暗塔——AI MCP服务器
MCP服务器,让Claude、ChatGPT和Gemini等AI助手控制物理 返回黑暗塔 通过蓝牙连接棋盘游戏塔。连接、校准、播放声音、设置灯光动画、旋转鼓、打破封条和运行戏剧性的游戏序列——所有这些都是通过自然语言完成的。
特性
- 31个MCP工具 跨越6个领域——连接、音频、灯光、鼓、印章、状态和字形
- 15塔州资源 --连接状态、电池、鼓位置、字形、印章、音频库、灯光效果
- 8游戏知识资源 --规则、英雄、物品、任务、对手、建筑、传说、术语表
- 8个提示模板 --戏剧性的入口、胜利/失败的序列、每月的过渡、地牢运行、战斗开始、游戏大师设置、声音浏览器
- 双重运输 --stdio用于桌面AI工具,Streamable HTTP用于web应用程序
- 零自定义BLE代码 --基于UltimateParkTower适配器模式构建
AI智能体
此服务器和 ultimatedarktower 图书馆:
👉 返回黑暗塔特工
- 返回黑暗塔特工 --Claude.ai、ChatGPT和其他web ai工具的系统提示;知道所有31个工具、15个资源和8个提示
- 终极黑暗塔特工 --VS Code/GitHub Copilot编码代理,用于构建应用程序
ultimatedarktowernpm库
支持VS Code(GitHub Copilot)、Claude.ai、ChatGPT和20多种工具 AGENTS.md标准.
📚 目录
- 重返黑暗塔——AI MCP服务器
⚡ 快速开始
需要 Node.js 18+.快跑
node --version检查。
🌐 用于Web AI聊天应用程序(Claude.AI、ChatGPT等)
步骤1——打开终端启动服务器:
npx -y mcp-server-return-to-dark-tower --http-only --port 3001
npx 第一次运行时从npm获取包(之后缓存)并启动服务器。 保持此终端打开 --只要窗口打开,服务器就会运行。
步骤2——将您的网络AI应用程序连接到服务器。
在AI应用程序的设置中,添加一个指向以下位置的新MCP连接:
http://localhost:3001/mcp
看 基于网络的人工智能聊天应用 有关Claude.ai和ChatGPT的分步说明。
第三步——问它类似的问题:
“连接到塔,校准它,然后打开所有北门灯。”
🖥️ 用于桌面AI工具(克劳德桌面、光标、VS代码等)
步骤1——将此添加到AI工具的配置文件中 (在中查找工具的确切文件路径 使用您的AI工具进行设置):
{
"mcpServers": {
"return-to-dark-tower": {
"command": "npx",
"args": ["-y", "mcp-server-return-to-dark-tower", "--stdio-only"]
}
}
}
第二步——重启你的人工智能工具。
当它启动时,它会运行 npx 上面的命令-- npx 从npm获取包(仅第一次运行,之后缓存),并将服务器作为后台进程启动。不需要单独的终端。
第三步——问它类似的问题:
“连接到塔,校准它,然后打开所有北门灯。”
什么是MCP?
MCP(模型上下文协议) 是一个开放标准,允许人工智能助手使用工具并从外部系统访问数据,类似于浏览器加载插件的方式。人工智能不只是知道你的塔,它可以 控制 它
此服务器实现MCP标准。一旦配置完成,你的AI助手将获得31个可以按名称调用的工具——比如 tower_play_sound, tower_break_seal,或 tower_rotate_drum --它可以将它们连接在一起,根据命令运行完整的戏剧性游戏序列。
两种连接方式:
| 交通 | 最适合 | 它是如何工作的 |
|---|---|---|
| 标准 | 桌面AI应用程序(Claude Desktop、Cursor、VS Code等) | AI应用程序将此服务器作为后台进程启动,并通过stdin/stdout进行通信 |
| 超文本传输协议 | 基于Web的AI应用程序(Claude.AI、ChatGPT Web) | 您手动启动服务器;AI应用程序通过HTTP连接到它 |
入门指南
先决条件
在开始之前,请确保您已经:
- Node.js 18或更新版本 --下载自 nodejs.org。要检查您的版本,请运行
node --version在终端中。 - 蓝牙低功耗(BLE)硬件 --内置于2011年以后生产的大多数Mac和大多数现代Windows PC中。
- 物理返回黑暗塔,尽管您可以在没有塔的情况下使用服务器中的资源。
平台特定设置:
| 平台 | 你需要做什么 |
|---|---|
| macOS | 没什么特别的。首次使用后,授予蓝牙权限:系统设置→ 隐私和安全→ 蓝牙→ 允许终端(或您的AI应用程序)。 |
| Linux | 先安装BlueZ: sudo apt install bluetooth bluez libbluetooth-dev |
| 视窗 | 需要Windows 10或更新版本的蓝牙。无需额外设置。 |
安装
最简单的方法是使用 npx,它直接从npm运行包,无需任何安装步骤:
# Test that it works — this starts the server in stdio mode
npx -y mcp-server-return-to-dark-tower --stdio-only
是什么
npx? 这是一个与Node.js捆绑在一起的工具。它从下载并运行一个包 npm注册表 按需安装,因此您不必在全球范围内安装任何东西。
如果您更愿意全局安装它(以便在第一次运行后更快地启动):
npm install -g mcp-server-return-to-dark-tower
在下面选择你的AI工具,以粘贴准确的配置 不 需要自己运行服务器——你的AI工具将使用stdio为你启动它。
Prefer to build from source?
git clone https://github.com/your-org/mcp-server-return-to-dark-tower.git
cd mcp-server-return-to-dark-tower
npm install
npm run build
然后在下面的所有配置片段中,替换:
"command": "npx",
"args": ["-y", "mcp-server-return-to-dark-tower", "--stdio-only"]
与:
"command": "node",
"args": ["/absolute/path/to/dist/index.js", "--stdio-only"]
🖥️ 使用您的AI工具进行设置
每个部分都是独立的——直接跳到您使用的工具。
所有桌面AI工具都使用 stdio传输.配置告诉AI应用程序如何启动此服务器;该应用程序处理其余部分。您只需编辑一个JSON(或YAML)配置文件,保存它,然后重新启动您的AI应用程序。
如果配置文件还不存在,按照所示路径将其创建为新的空文件。下面显示的所有配置都是完整有效的——如果你刚开始,你可以按原样粘贴它们。
如果文件已存在,添加
"return-to-dark-tower"现有内部的块"mcpServers"(或同等)物体。不要替换整个文件。
Claude 桌面版
Claude Desktop在启动时读取其配置文件。保存更改后,您必须 完全退出并重新打开 应用程序(Mac上的⌘Q,而不仅仅是关闭窗口)。
配置文件位置:
| 操作系统 | 路径 |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| 窗户 | %APPDATA%\Claude\claude_desktop_config.json |
提示(macOS): 在终端中快速打开文件:
open -e ~/Library/Application\ Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"return-to-dark-tower": {
"command": "npx",
"args": ["-y", "mcp-server-return-to-dark-tower", "--stdio-only"]
}
}
}
重新启动Claude后,您应该看到一个锤子图标(🔨) 在聊天输入区域中,指示MCP工具可用。
Windows注意事项: 如果
npx不起作用,请尝试更换"command": "npx"与"command": "node"并将完整路径添加到node_modules/.bin/mcp-server-dark-tower.js作为第一个arg,或首先全局安装。
🎯 光标
Cursor可以从项目特定文件或全局文件加载MCP配置。
配置文件位置:
| 范围 | 路径 |
|---|---|
| 仅此项目 | .cursor/mcp.json (在项目根目录中) |
| 所有项目 | ~/.cursor/mcp.json (在您的主目录中) |
{
"mcpServers": {
"return-to-dark-tower": {
"command": "npx",
"args": ["-y", "mcp-server-return-to-dark-tower", "--stdio-only"]
}
}
}
游标会自动拾取更改,无需重新启动。
重要提示: MCP工具仅在您处于以下状态时显示 代理模式。在光标聊天面板中,查找模式选择器,并在要求AI使用塔之前从“正常”切换到“代理”。
🐙 VS代码(GitHub副本)
VS Code支持两个配置位置。这 .vscode/mcp.json 文件可以提交到您的仓库中,这样您的整个团队就可以共享相同的MCP设置。
要求: VS代码1.99或更高版本。通过帮助更新→ 检查更新。
选项A——工作区配置 (推荐,可与您的团队共享):
创建或编辑 .vscode/mcp.json 在项目根目录中:
{
"servers": {
"return-to-dark-tower": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-server-return-to-dark-tower", "--stdio-only"]
}
}
}
选项B——用户设置 (适用于您的所有项目):
打开 settings.json (Cmd/Ctrl+Shift+P→ “打开用户设置JSON”)并添加:
{
"mcp": {
"servers": {
"return-to-dark-tower": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-server-return-to-dark-tower", "--stdio-only"]
}
}
}
}
重要提示: 将副驾驶聊天面板切换到 代理模式 (在聊天面板中查找模式下拉菜单)。MCP工具在询问或编辑模式下不可用。
🌊 帆板运动
Windsurf为所有MCP服务器使用一个全局配置文件。
配置文件位置:
| 操作系统 | 路径 |
|---|---|
| macOS/Linux | ~/.codeium/windsurf/mcp_config.json |
| 窗户 | %USERPROFILE%\.codeium\windsurf\mcp_config.json |
您也可以从Windsurf中打开它:单击 MCP图标 在Cascade面板的右上角→ 配置。
{
"mcpServers": {
"return-to-dark-tower": {
"command": "npx",
"args": ["-y", "mcp-server-return-to-dark-tower", "--stdio-only"]
}
}
}
保存后重新启动Windsurf。塔架工具将出现在 级联 代理人小组。
⚡ 泽德
Zed的MCP服务器在其全局设置文件中进行了配置。
配置文件位置:
| 操作系统 | 路径 |
|---|---|
| macOS/Linux | ~/.config/zed/settings.json |
| 窗户 | %APPDATA%\Zed\settings.json |
添加 context_servers 块(与文件中的任何现有设置一起):
{
"context_servers": {
"return-to-dark-tower": {
"source": "custom",
"command": "npx",
"args": ["-y", "mcp-server-return-to-dark-tower", "--stdio-only"],
"env": {}
}
}
}
保存后重新启动Zed。打开 代理面板 并在服务器名称旁边寻找一个绿点——这意味着它已成功连接。
🔎 困惑(macOS应用程序)
Perplexity的原生MCP支持可在 Mac应用程序 (从App Store下载)。web界面不支持MCP。
要求:
- 仅限macOS
- 付费困惑计划(专业版或更高版本)
- 免费套餐不包括MCP
设置:
- 安装 困惑Mac应用程序 如果你还没有从App Store下载
- 打开应用程序并转到 账户设置 → 连接器
- 点击 “安装帮助程序” 并安装 困惑XPC 助手应用程序在收到提示时——这是macOS应用商店沙盒规则要求的一次性步骤
- 点击 “添加连接器” → 简单 → “添加MCP连接器”
- 填写:
- 服务器名称:
return-to-dark-tower(或任何你喜欢的东西) - 命令:
npx - 论据:
-y mcp-server-return-to-dark-tower --stdio-only
- 服务器名称:
- 点击 保存 并等待状态指示器显示 跑步
- 在困惑聊天中,单击 来源 并启用
return-to-dark-tower连接器
没有可编辑的配置文件——一切都是通过Perplexity的UI完成的。
注: 远程MCP支持(用于web界面)在Perplexity的路线图上,但尚未提供。
🐋 深度求索
DeepSeek的网络聊天(chat.deepseek.com)API目前不支持MCP-没有配置文件或UI可以将MCP服务器直接连接到DeepSeek。
如果你通过支持DeepSeek的IDE使用它 (游标和VS代码都允许您将底层AI模型切换到DeepSeek,同时保持其MCP层),MCP工具工作良好。IDE处理MCP连接;它与哪种AI模型为响应提供动力无关。使用配置塔 光标 或 VS Code 然后在IDE的设置中将模型切换到DeepSeek。
如果您使用DeepSeek自己的web或API接口,MCP此时不可用。检查 DeepSeek的文档 以获取更新。
摘要
| 工具 | 配置文件 | 根密钥 | 是否需要代理模式? |
|---|---|---|---|
| 克劳德桌面 | claude_desktop_config.json |
mcpServers |
否(始终打开) |
| 光标 | .cursor/mcp.json |
mcpServers |
是 |
| VS代码(副本) | .vscode/mcp.json |
servers |
是 |
| 风帆冲浪 | mcp_config.json |
mcpServers |
否(仅Cascade) |
| Zed | settings.json |
context_servers |
没有 |
| 困惑 | 应用程序UI(无文件) | -- | 仅限macOS+付费计划 |
| DeepSeek | -- | -- | 本机不支持 |
🌐 基于网络的人工智能聊天应用
基于网络的人工智能工具无法像桌面应用程序那样在您的机器上启动流程。相反,您自己启动HTTP服务器,并将web应用程序指向它。
启动HTTP服务器
打开终端并运行:
npx mcp-server-return-to-dark-tower --http-only --port 3001
保持此终端窗口打开 当你使用你的网络人工智能工具时。服务器公开:
http://localhost:3001/mcp--主MCP端点http://localhost:3001/health--退货{"status":"ok"}如果它正在运行
要验证它是否已打开,请打开 http://localhost:3001/health 在您的浏览器中。你应该看看 {"status":"ok"}.
是什么
localhost? 意思是“这台电脑”。服务器正在您的计算机上运行,只能从您自己的浏览器访问,默认情况下不会暴露在互联网上。
Claude.ai(网络版)
远程MCP连接可在 Pro、Max、团队和企业 计划(不是免费套餐)。
- 首选 claude.ai 并打开 设置 → 集成
- 点击 添加集成 (或 添加MCP服务器)
- 输入URL:
http://localhost:3001/mcp - 保存。塔工具将出现在您的下一次对话中。
请注意: Claude.ai从您的浏览器连接到
localhost,只要您的浏览器和服务器在同一台机器上,它就可以工作。如果你想在其他设备(如手机)上使用它,你需要公开服务器——见下面的注释。
Accessing from another device or sharing with others
使用隧道工具,如 吸烟 为本地服务器创建公共URL:
# In a second terminal (while the server is running)
ngrok http 3001
ngrok将打印一个公共URL,如下所示 https://abc123.ngrok.io.使用该URL而不是 http://localhost:3001 在您的AI应用程序的设置中。
⚠️ 任何拥有该URL的人都可以向您的塔发送命令。使用ngrok的身份验证功能或保持会话简短。
ChatGPT/OpenAI
ChatGPT在2025年底增加了MCP支持,可通过 开发人员模式 (需要ChatGPT Plus或更高版本)。
- 在ChatGPT中,打开 设置 → 开发人员模式 (如果没有启用它)
- 首选 连接器 → 添加连接器
- 选择 可流式传输的HTTP 作为运输类型
- 输入URL:
http://localhost:3001/mcp - 保存并开始新的对话。将提供塔架工具。
注: OpenAI的MCP UI正在快速发展。如果“连接器”已重命名为“应用程序”或类似名称,请在那里查找MCP集成选项。检查 OpenAI的帮助文档 了解最新进展。
自定义Web应用程序
构建自己的网络应用程序来控制塔楼?直接使用HTTP端点。
启动服务器 两个传输同时运行:
npx mcp-server-return-to-dark-tower
# stdio on stdin/stdout + HTTP on http://localhost:3001/mcp
使用fetch发送命令:
// Generate a session ID once per user session
const sessionId = crypto.randomUUID();
const response = await fetch("http://localhost:3001/mcp", {
method: "POST",
headers: {
"Content-Type": "application/json",
"mcp-session-id": sessionId, // keeps this session's context consistent
},
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "tools/call",
params: {
name: "tower_play_sound_by_name",
arguments: { name: "Ashstrider" },
},
}),
});
const result = await response.json();
console.log(result);
订阅流媒体事件(SSE):
const eventSource = new EventSource("http://localhost:3001/mcp");
eventSource.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log("Tower event:", data);
};
CORS: 如果您的web应用程序在不同的端口上运行(例如。,
localhost:5173),浏览器将阻止以下请求localhost:3001由于CORS。将您的开发服务器配置为代理/mcp请求或向MCP服务器添加CORS标头。看 建筑学 有关HTTP和stdio如何共享单塔连接的详细信息,请参阅第节。
可用工具
连接(8个工具)
| 工具 | 说明 |
|---|---|
tower_connect |
通过BLE连接到塔 |
tower_disconnect |
与塔架断开连接 |
tower_calibrate |
校准滚筒位置 |
tower_status |
获取连接状态、校准状态、电池 |
tower_device_info |
获取制造商、型号、固件信息 |
tower_is_responsive |
主动连接检查 |
tower_cleanup |
清理资源 |
tower_set_monitoring |
配置连接监控 |
音频(3个工具)
| 工具 | 说明 |
|---|---|
tower_play_sound |
按索引播放声音(1-113) |
tower_play_sound_by_name |
按名称播放声音(例如“Ashstroder”) |
tower_list_sounds |
列出可用声音,可选择按类别过滤 |
灯(5个工具)
| 工具 | 说明 |
|---|---|
tower_set_lights |
设置门道、窗台和基础灯 |
tower_set_led |
按层和索引设置单个LED |
tower_light_sequence |
按ID运行命名灯光序列 |
tower_light_sequence_by_name |
按名称运行一个轻量级序列(例如“胜利”) |
tower_lights_off |
关闭所有灯 |
鼓(4个工具)
| 工具 | 说明 |
|---|---|
tower_rotate |
将所有滚筒旋转到特定位置 |
tower_rotate_drum |
将单个滚筒旋转到某个位置 |
tower_random_rotate |
随机旋转滚筒 |
tower_get_drum_positions |
获取当前滚筒位置 |
密封件(5个工具)
| 工具 | 说明 |
|---|---|
tower_break_seal |
在特定侧面和水平面打破密封 |
tower_is_seal_broken |
检查特定密封件是否损坏 |
tower_get_broken_seals |
清除所有损坏的密封件 |
tower_reset_seals |
重置所有密封件 |
tower_random_seal |
随机获得一个完整的密封 |
状态和字形(7个工具)
| 工具 | 说明 |
|---|---|
tower_get_state |
获取当前塔状态 |
tower_send_state |
发送塔状态更新 |
tower_get_glyphs |
获取所有字形位置 |
tower_get_glyph |
获取特定字形的位置 |
tower_glyphs_facing |
使字形朝向某个方向 |
tower_skull_count |
获取颅骨脱落计数 |
tower_reset_skull_count |
重置颅骨掉落计数 |
可用资源
资源是人工智能可以提取的只读数据(例如,在长序列之前检查电池电量)。
塔州资源
| 资源 | URI | 描述 |
|---|---|---|
| 塔架连接 | tower://connection |
连接状态、校准、忙碌状态 |
| 设备信息 | tower://device-info |
制造商、型号、固件版本 |
| 蓄电池 | tower://battery |
毫伏、百分比、先前值 |
| 滚筒位置 | tower://drums |
所有3个滚筒位置 |
| 字形位置 | tower://glyphs |
所有5个字形位置和方向 |
| 印章状态 | tower://seals |
密封件破裂/未破损 |
| 塔州 | tower://state |
完整的塔状态快照 |
| 音频库 | tower://audio-library |
所有113种声音及其分类 |
| 灯光效果 | tower://light-effects |
6个效果+19个命名序列 |
游戏知识资源
| 资源 | URI | 描述 |
|---|---|---|
| 规则 | tower://game/rules |
设置、回合、输赢条件 |
| 对手 | tower://game/adversaries |
能力、生成机制、升级 |
| 任务 | tower://game/quests |
任务类型、条件、奖励 |
| 项目 | tower://game/items |
设备、药水、文物 |
| 英雄 | tower://game/heroes |
类别、统计数据、能力 |
| 建筑物 | tower://game/buildings |
城堡、避难所、村庄、集市 |
| Lore | tower://game/lore |
世界传说、塔历史、风味 |
| 术语表 | tower://game/glossary |
关键术语和概念 |
字形图标资源
| 资源 | URI | 描述 |
|---|---|---|
| 清洁 | tower://glyphs/cleanse |
清理字形SVG |
| 任务 | tower://glyphs/quest |
任务字形SVG |
| 战斗 | tower://glyphs/battle |
战斗图形SVG |
| 横幅 | tower://glyphs/banner |
横幅字形SVG |
| 加强 | tower://glyphs/reinforce |
加强字形SVG |
| 所有字形 | tower://glyphs/all |
组合SVG表 |
可用提示
提示是预先构建的指令模板,您可以按名称调用。他们将多个工具连接在一起,形成一个戏剧性的序列。
| 提示 | 参数 | 描述 |
|---|---|---|
dramatic_entrance |
adversary? |
连接、校准、产生声音、频闪灯、随机鼓声 |
victory_sequence |
soundIndex? |
胜利之声+胜利之光序列 |
defeat_sequence |
-- | 击败声音+击败灯光 |
monthly_transition |
month? |
月底/月初的声音和灯光 |
dungeon_run |
type? |
地牢声音+怠速灯 |
battle_start |
-- | 战斗声+闪烁的灯光 |
game_master_setup |
-- | 完整游戏会话设置指南 |
sound_browser |
category? |
按类别浏览音频库 |
建筑学
┌─────────────────┐ ┌──────────────────┐
│ Claude Desktop │────▶│ stdio transport │──┐
└─────────────────┘ └──────────────────┘ │ ┌───────────────────┐ ┌─────────┐
├───▶│ TowerController │────▶│ Tower │
┌─────────────────┐ ┌──────────────────┐ │ │ (singleton) │ BLE │ (HW) │
│ React App │────▶│ HTTP transport │──┘ └───────────────────┘ └─────────┘
└─────────────────┘ └──────────────────┘
这 TowerController 单例包装 UltimateDarkTower (v2.0.0),并由两个传输共享。图书馆的 BluetoothAdapterFactory 自动检测Node.js环境并使用 @stoprocent/noble 用于BLE通信。
CLI选项
| 标志 | 描述 |
|---|---|
--stdio-only |
仅运行stdio传输(适用于桌面AI工具) |
--http-only |
仅运行HTTP传输(适用于web应用程序) |
--port <n> |
HTTP端口(默认值:3001) |
依赖项
| 包装 | 用途 |
|---|---|
@modelcontextprotocol/sdk |
MCP服务器和传输 |
ultimatedarktower |
塔BLE控制库 |
@stoprocent/noble Node.js BLE后端 |
|
zod |
架构验证 |
express |
HTTP传输服务器 |
发展
npm run dev # Watch mode with tsx
npm run build # Compile TypeScript
npm run lint # Run ESLint + Prettier check
npm test # Run tests
许可证
麻省理工学院——见 许可证.
