@ 2 位数/ tlo- mcp
一个个人Teamleader轨道网关:本地OAuth → 认证的HTTP MCP → OpenTunnel → 执行者 Cloud.
仅列出轨道工具 src/mcp/tools.ts 被暴露出来。 没有本地执行器, cookie 适配器, Amp 插件, Vercel 部署或托管 OAuth 桥.
运行
需要节点.js 24+. 以 :
npx @2digits/tlo-mcp
或在全球安装(npm i -g @2digits/tlo-mcp运行 tlo-mcp。 。 。 .
命令 :
- 创建/重新使用私人网关 API 密钥 .
- 如果没有本地 OAuth 会话( 新的客户端注册, 状态和 PKCE) , 则打开轨道登录 .
- 以效果连接轨道
McpClient(MCP 2025-11-25),只保留被允许上市的工具并开始/mcp打开127.0.0.1:4790。 。 。 . - 连接孤立的
tlo-mcp仅使用 OpenTunnel 配置文件tlo路线. - 打印一个公开的 HTTPS 端点, 以及执行器 Cloud 的快取代理 .
OpenTunnel 使用它的Effect SDK在此过程中运行. 没有安装单独的隧道 CLI 或守护进程 .
保持这个过程运行,计算机保持清醒. Ctrl- C 关闭 HTTP 服务器和隧道; 身份和密钥持续存在
因此随后开始重用 URL 。 使用 --port 4791 如果默认端口被占用.
首个隧道证书需要几分钟. 启动失败关闭已获取的资源 .
在背景中运行
任何过程监督员的工作(启动、系统、pm2、Pitchfork、.)。 铭记这些:
- 每个机器运行一个实例; 它绑定
127.0.0.1:4790(或--port) (中文(简体) ). - 把它当做准备一次
TLO gateway ready:已登录, 而非当端口打开时; 隧道稍后会出现. - 进程在隧道下降后永远退出,因此在失败时重新启动.
- 发送
SIGINT以清净地阻止它. - 第一个开始需要交互式轨道登录. 在终端运行一次( 或者运行)
tlo-mcp login),再交给主管. - 日志包含公共端点和执行器提示;网关密钥从未被打印.
示例 弹叉输入 ~/.config/pitchfork/config.toml数字 :
[daemons.tlo]
run = "npx -y @2digits/tlo-mcp --port 4790"
dir = "~/"
boot_start = true
retry = true
ready_output = { pattern = "TLO gateway ready:", timeout = "5m" }
health_port = { port = 4790, interval = "30s", retries = 3 }
stop_signal = { signal = "SIGINT", timeout = "10s" }
运行 pitchfork boot enable 所以主管从登录开始 刚开始的督导员得到的很少 PATH,因此使用
绝对路径 npx编号 :node 如果找不到的话 用它来管理 pitchfork status global/tlo, (中文(简体) ),
pitchfork logs global/tlo,以及 pitchfork restart global/tlo。 。 。 .
运行在您自己的 HTTPS URL 后面
在已终止 HTTPS( 例如 Amp Box 部署) 的恒定主机上, 跳过 OpenTunnel :
tlo-mcp --public-url https://tlo.example.com --port "$PORT"
网关听 0.0.0.0:<port> 和报告 https://tlo.example.com/mcp它不能打开浏览器,所以
需要一个已有的轨道会话: 运行 tlo-mcp login 在 Linux 机器上, 您可以打开登录 URL 并复制
2digits/tlo-mcp/session.json (模式) 0600)来自其配置目录($XDG_CONFIG_HOME 或者说 ~/.config)改为:
放在主机上。 macOS 将会话保存在键链中, 因此它不会产生 session.json 请复制。 没有会话, 网关将退出, 而不是等待登录 .
连接执行器云
将打印的提示粘贴到带有执行工具的代理 。 它登记一个可流式HTTP MCP集成器,与
API 密钥认证 : Authorization: Bearer <gateway-key>。 。 。 . 在执行器中不要配置轨道 OAuth .
密钥为 2digits/tlo-mcp/gateway.key 在平台配置目录(模式)中 0600,目录 0700:
~/Library/Application Support 在macOS上, $XDG_CONFIG_HOME 或者说 ~/.config 别的地方 键或会话由
较早版本在 ~/.config/2digits/tlo-mcp 从那里开始使用。 启动打印正在使用的密钥路径, 并在
马科斯 pbcopy 命令复制而不打印,例如:
pbcopy < "$HOME/Library/Application Support/2digits/tlo-mcp/gateway.key"
直接以执行者的安全证书形式输入, 永远不要在代理聊天中输入 。 在其它平台上,打开私人 将它复制到该表格中。 代理提示包含没有证书 。 执行者必须使用安全 aPI 密钥的交接和连接后验证一个只读工具 .
认证和安全
- 轨道证书仍保留在macOS 键链中(
@2digits/tlo-mcp/orbit) (中文(简体) ). 其他平台使用私人本地会话文件. - OAuth 访问令牌在过期前刷新;在使用前会持续旋转刷新令牌.
- 网关密钥与轨道证书分离. 所有HTTP路由/方法在MCP解析前都需要.
- 浏览器请求
Origin头被拒绝;支持非浏览器的MCP客户端. - 请求机构限为 1 MiB;响应不缓存;请求日志被禁用.
- OpenTunnel终止了此计算机上的TLS;其中继转发了加密流量,而不是HTTP平正文本.
- 主机名是公用/可发现;路由名不是认证. 有网关钥匙的人 可使用您允许的轨道工具,包括写作。 执行者政策无法防止出密钥被泄露.
- 工具,计划,说明,指令,结构化内容,出错和速率限制来自官方轨道.
只有允许列表的工具在
src/mcp/tools.ts(时间表、时间条目、计时器、门票、待办事宜和只读) 计划/项目查询)被转发;其他轨道工具被隐藏,无法调用. 轨道时启动警告 不再提供允许列表的工具.AddProjectTask财务报告和审定财务报表CloseTicketSilently是网关自己的工具,有更严格的方案 还是一个轨道写。 仅转发工具;资源/即时/逆向请求不曝光. 没有自动重放工具调用 . - 要旋转网关密钥, 请停止网关, 只删除
gateway.key,重新启动,并更新执行器连接.
重新登录和登录
npx @2digits/tlo-mcp login
npx @2digits/tlo-mcp logout
在任一命令之前停止运行的网关( 并禁用其主管) 。 登录后再启动. 登录后离开它停止,否则下一个开始会再次打开轨道登录. 登录删除本地 OAuth 证书, 而不是上游赠款, 网关密钥或隧道身份. 过期/拒绝的现有赠款明显失败;重新登录明确而非 默默注册替换客户端. OAuth 证书锁失败被关闭; 从不删除一个活过程的锁.
SDK 兼容补丁
工作空间针 @opentunnel/client 财务报告和审定财务报表 @opentunnel/protocol 0.2.2 至 4.0.1 具有范围覆盖.
版本补丁在 patches/ 更新旧 effect/unstable/* ,使用节点标准 WebSocket 构造器,
处理 WebSocket 错误,并以可删除字段取代 TypeScript 参数属性.
SDK/protocol被捆绑入CLI,所以所公布的输出并不依赖于节点加载TypeScript依赖性.
升级 OpenTunnel 时重新测试这些补丁 。 独立的 SDK 原始的 Bun 要求不适用
到此补丁的节点 CLI .
发展
从寄存器中的此包 :
vpr run # build and start the gateway from source
vpr test
vpr types
vpr build