Tinderbox MCP服务器

一个独立的MCP服务器,为Tinderbox提供11种工具,通过AppleScript读取、创建和操作笔记、链接和属性。

  • by jacobio
  • Ruby
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 jacobio/tbx-mcp

使用说明

增强型Tinderbox MCP服务器

一个独立的MCP(模型上下文协议)服务器 火药桶 它提供了11个工具,用于通过AppleScript读取、创建和操作笔记、链接和属性。与Tinderbox捆绑的MCP服务器不同,tbx-MCP作为一个单独的进程运行,使其可用于容器、远程环境和任何兼容MCP的客户端。

需求

  • 火药桶 已安装(11.6.0或更高版本)
  • Ruby 3.1+与Bundler

安装Ruby

如果您没有安装Ruby(或需要更新版本),请通过以下方式安装 家酿:

brew install ruby

安装后,按照Homebrew打印的说明将Homebrew的Ruby添加到PATH中。通常:

echo 'export PATH="/opt/homebrew/opt/ruby/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

验证安装并安装Bundler Gem:

ruby --version
gem install bundler

安装

git clone <repo-url> tbx-mcp
cd tbx-mcp
bundle install

设置

克劳德桌面

将以下内容添加到您的Claude Desktop配置文件中:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "tinderbox": {
      "command": "ruby",
      "args": ["/full/path/to/tbx-mcp/server.rb"]
    }
  }
}

替换 /full/path/to/tbx-mcp 使用克隆存储库的实际路径。

保存配置后重新启动Claude Desktop。

克劳德代码

将服务器添加到Claude Code项目设置或全局设置中:

项目级别 (建议添加到 .claude/settings.json 在项目根目录中):

{
  "mcpServers": {
    "tinderbox": {
      "command": "ruby",
      "args": ["/full/path/to/tbx-mcp/server.rb"]
    }
  }
}

全球 (适用于所有项目-添加到 ~/.claude/settings.json):

{
  "mcpServers": {
    "tinderbox": {
      "command": "ruby",
      "args": ["/full/path/to/tbx-mcp/server.rb"]
    }
  }
}

保存后,重新启动Claude Code或运行 /mcp 重新连接。

验证

一旦连接,服务器就会公开11个工具和6个参考资源。在Claude Code中,您可以通过以下方式进行验证 /mcp --你应该看看 tinderbox 列出了它的工具。

工具

所有操作文档的工具都需要 document 参数(文档名称)。使用 get_document 首先发现打开的文档名称。

工具 说明
get_document 列出所有打开的Tinderbox文档,包括名称、修改状态和文件路径
open_document 打开a .tbx 文件来自磁盘上的路径
get_notes 通过路径或查询获取笔记,并可选择属性值
create_note 创建一个或多个注释(注释、代理或装饰)
create_link 使用可选链接类型在两个笔记之间创建笔记级别链接
create_text_link 创建一个锚定到源注释文本中正则表达式匹配的文本链接
set_value 在一个或多个笔记上设置属性值
do 在一个或多个笔记上执行Tinderbox操作代码
evaluate 在笔记上下文中评估Tinderbox表达式
get_view 捕获文档当前视图的屏幕截图
get_reference 按主题检索详细的Tinderbox参考文档

这 get_reference 该工具提供对详细文档的按需访问。可用主题: action-attributes, action-functions, adornments, export-codes, expressions, system-containers.

资源

服务器将详细的Tinderbox参考文档作为MCP资源公开。仅当需要更深入的引用时,LLM才会按需加载这些内容。

资源URI 描述
tinderbox://ref/adornments 地图装饰:智能装饰、粘性/锁、网格、分隔器
tinderbox://ref/expressions 表达式和动作语言语法及其示例
tinderbox://ref/action-functions 按类别组织的300+动作功能目录
tinderbox://ref/action-attributes 12个动作持有属性($Rule、$AgentQuery、$OnAdd等)
tinderbox://ref/system-containers 内置容器:原型、模板、提示、复合材料
tinderbox://ref/export-codes 46^ caret^导出HTML/文本的模板代码

情境感知设计

该服务器旨在通过两层架构最大限度地减少上下文窗口的消耗:

始终存在(约3400个代币,占20万代币的1.7%)

组件 代币 200000的百分比
服务器说明(快速参考) ~2300 1.15%
工具定义(9个工具) ~1130 0.57%
总始终存在 ~3,430 1.71%

这些说明提供了一个精心策划的快速参考,涵盖了表达式语法、30多个关键属性、动作代码模式、日期格式代码和11个常见陷阱。

按需资源(约26000个代币,仅在需要时加载)

资源 令牌 内容
action-functions.md ~8250 300+个按类别划分的动作函数
export-codes.md ~6340 46个导出模板代码
expressions.md ~3840 表达式和操作代码语法
system-containers.md ~3210 原型、模板、提示、复合材料
action-attributes.md ~2770 12个动作保持属性
装饰品.md ~1650 地图装饰品和智能装饰品
所有资源合计 ~26,060

预算汇总表

场景 代币 200000的百分比
基线(说明+工具定义) ~3430 1.7%
典型使用(+1-2个资源) ~6400-9400 3-5%
最大值(所有资源已加载) ~29490 14.7%

即使在加载了所有资源的最坏情况下,服务器也会保持 15% 20万个上下文窗口——为对话留下17万多个令牌。

运行测试

测试套件要求Tinderbox在运行时至少打开一个文档。

bundle exec rake test

该套件包括59个测试,涵盖所有工具、AppleScript帮助程序和跨工具一致性检查。测试笔记前缀为 [MCP-TEST] 并自动清理。

建筑

.
|-- Gemfile
|-- Rakefile
|-- README.md
|-- server.rb
|-- lib
|   |-- apple_script_helper.rb
|   |-- tinderbox_mcp.rb
|   `-- tinderbox_mcp
|       |-- create_link.rb
|       |-- create_note.rb
|       |-- do_action.rb
|       |-- evaluate.rb
|       |-- get_document.rb
|       |-- get_notes.rb
|       |-- get_view.rb
|       |-- instructions.rb
|       |-- open_document.rb
|       `-- set_value.rb
|-- references
|   |-- action-attributes.md
|   |-- action-functions.md
|   |-- export-codes.md
|   |-- expressions.md
|   `-- system-containers.md
`-- test
    |-- apple_script_helper_test.rb
    |-- consistency_test.rb
    |-- create_link_test.rb
    |-- create_note_test.rb
    |-- do_action_test.rb
    |-- evaluate_test.rb
    |-- get_document_test.rb
    |-- get_notes_test.rb
    |-- get_view_test.rb
    |-- open_document_test.rb
    |-- set_value_test.rb
    `-- test_helper.rb

设计决策

  • 版本无关的AppleScript:所有脚本都使用 tell application id "Cere" 而不是 tell application "Tinderbox 11",因此该服务器适用于任何Tinderbox版本。
  • 明确的文档定位:每个工具都需要一个 document 参数--否 front document 可能针对错误窗口的调用。
  • set_value没有操作代码:值是通过AppleScript设置的 attribute of API绕过Tinderbox在操作字符串中缺少引号转义。
  • 无状态:没有服务器端状态。每个工具调用都是自包含的。

许可证

麻省理工学院