这是一个模型上下文协议(MCP)服务器,使像Claude这样的AI助手能够与Tinderbox进行交互,Tinderbox是一款强大的macOS知识管理应用程序。这使得你可以使用自然语言控制Tinderbox,并将其连接到助手可以访问的其他服务。在后台,它使用Tinderbox的AppleScript集成来创建和更新笔记并导航文档层次结构。
版本 0.2.0+ 已经用Python重写,并使用HTTP传输实现远程访问。
Python重写实现了基于HTTP的远程访问,允许你:
typescript分支中找到.scpt文件未改变该服务器包括以下Tinderbox操作工具:
create_note - 在文档中创建新的笔记link_notes - 创建现有笔记之间的链接,可选指定链接类型update_attributes - 更改指定笔记的属性值read_note - 获取笔记的内容(目前仅限于笔记的标题和文本)get_siblings - 查找同一层级的笔记(此工具及后续工具返回笔记路径及其ChildCount,以便助手知道可以进一步探索的位置)get_children - 获取指定父笔记的所有子笔记get_links - 查找从一个笔记出发的所有出站链接所有这些操作都需要模型知道要使用哪个文档。默认文档可以配置(参见下面的配置部分)。
git clone https://github.com/phkus/tinderbox-m
cd tinderbox-mcp
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
设置GitHub OAuth应用:
Tinderbox MCPhttp://localhost:8000http://localhost:8000/oauth/callback配置服务器(选择一种方法):
方法A:使用.env文件(推荐给大多数用户)
cp .env.example .env
# 编辑.env文件,填入你的凭证
方法B:导出环境变量(适合测试)
export GITHUB_CLIENT_ID="your_client_id"
export GITHUB_CLIENT_SECRET="your_client_secret"
export DEFAULT_DOCUMENT="YourDocument" # 不带.tbx扩展名
方法C:启动时设置内联参数(快速一次性测试)
GITHUB_CLIENT_ID="your_id" GITHUB_CLIENT_SECRET="your_secret" DEFAULT_DOCUMENT="YourDocument" python src/server.py
GITHUB_CLIENT_ID:你的GitHub OAuth应用客户端IDGITHUB_CLIENT_SECRET:你的GitHub OAuth应用客户端密钥DEFAULT_DOCUMENT:你的Tinderbox文档名称不带.tbx扩展名
Research.tbx,则设置DEFAULT_DOCUMENT=ResearchAPPLESCRIPT_DIR:AppleScript文件路径(默认:./applescripts)SERVER_PORT:服务器端口(默认:8000)SERVER_HOST:服务器主机(默认:localhost)注意:环境变量可以通过三种方式设置(参见安装步骤5)。.env文件是最方便的永久配置方式。
在终端中启动服务器:
source venv/bin/activate # 如果尚未激活
python src/server.py
你应该看到如下输出:
正在 http://localhost:8000 上启动Tinderbox MCP Server
MCP端点:http://localhost:8000/mcp
AppleScript目录:/path/to/applescripts
默认文档:YourDocument
在Claude设置中添加此URL作为连接器:
http://localhost:8000/mcp
保持此终端窗口打开 - 服务器需要运行以处理请求。
http://localhost:8000/mcphttp://localhost:8000/mcp要从任何地方(而不仅仅是本地主机)访问你的Tinderbox服务器:
选项1:Tailscale(推荐用于安全性)
localhosthttp://100.x.x.x:8000/mcp选项2:Ngrok(临时公开访问)
ngrok http 8000https://abc123.ngrok.io/mcp安全提示:始终使用OAuth认证进行远程访问。不要在超出本地主机的情况下禁用认证。
一旦配置好,你可以要求Claude与你的Tinderbox文档进行交互:
update_attribute工具允许助手覆盖现有笔记的属性,包括Name和Text属性。提供的工具描述要求助手谨慎使用,但仍可能导致内容丢失。请备份你的Tinderbox文档。
这是唯一可以更改现有笔记内容的工具,因为create_note只会创建具有相同名称的新笔记在同一容器中。为了额外的安全性,你可以通过删除配置中的条目或脚本文件来移除update_attribute工具。或者,可以修改AppleScript以只允许编辑没有值的属性。
可以在任何时候编辑位于applescripts文件夹中的现有脚本文件,即使服务器正在运行。要添加自定义Tinderbox操作,必须重新启动服务器:
src/server.py中添加一个带有@mcp.tool()装饰器的工具定义查看CLAUDE.md以获取详细的开发说明。
"GitHub OAuth凭证所需"
GITHUB_CLIENT_ID和GITHUB_CLIENT_SECRET环境变量.env文件是否包含正确的值"AppleScript目录不存在"
applescripts/文件夹APPLESCRIPT_DIR环境变量"文档未找到"
DEFAULT_DOCUMENT与文档名称完全匹配(不带.tbx)"脚本未找到"
.scpt文件存在于applescripts/目录中无法从Claude连接
http://localhost:8000/mcp该项目受到了Josh Rutkowski的applescript-mcp服务器的启发。这两个服务器之间的主要区别在于,applescript-mcp将完整的AppleScript内容传递给终端,而这里的实现调用了独立的脚本文件,解决了参数中特殊字符如引号的问题。
感谢Tinderbox开发者Mark Bernstein,他使这款应用具备了可编程性。
MIT
欢迎在此处贡献或通过Tinderbox论坛(用户名:pkus)向我提供反馈。
这基本上只是一个执行AppleScript的服务器。因此,它可以被改编成在MacOS上做任何其他可编程的事情。
注:对于TypeScript版本的文档,请参阅typescript分支。