@ arcadeai/ mcp- remote (法语)
当地人 静态 连接Arcade MCP网关.
Arcade为MCP网关服务于可流的HTTP. 一些MCP客户只说 斯特迪奥运输,更重要的是, 局部过程可以工作 云 网关不能:它可以从机器读取文件. 这桥是本地的, 向客户端提交一个 stdio MCP 服务器,并将每个请求转发到 远程网关通过HTTP.
这个解锁的头条能力是 本地文件实际化页:1 模型释放出一个简短的文件路径, 桥会读取字节并取而代之 在请求离开机器之前,由工具返回的文件将被写入 磁盘和交回作为路径。 大基数64blobs 从来没有进入模型的 上下文窗口.
状态
桥将 MCP 流量中继到网关, 通过基于浏览器认证 OAuth (动态客户端注册 + PKCE, 无声刷新), 重写 文件携带工具参数,所以模型通过一个本地路径(上载),以及 实现通过工具返回磁盘的文件,使模型获得路径而不是 a blob (负载)。 在 macOS 上, OAuth 令牌保存在 keychain; 文件 读取由证书目录和可选许可列表守护.
尚未完成: arcade connect --local 融入社会与公众npm
出版(该套件已经编写,但有意未出版).
使用量
把你的MCP客户点到桥上 第一次连接到你的网关
尚未授权, 桥将打开您的浏览器以登录, 缓存
迹象,然后是服务;以后的每一个开始都是沉默的。 (一组) ARCADE_AUTO_LOGIN=0
以禁用并需要明确 login (第一个。 )
提前授权,所以第一个产卵 从来没有等待你,运行一次 在终端中:
npx @arcadeai/mcp-remote login <gateway-slug-or-url>
无论怎样,你的MCP客户端在桥上:
// in your MCP client config (e.g. claude_desktop_config.json)
{
"mcpServers": {
"arcade": {
"command": "npx",
"args": ["-y", "@arcadeai/mcp-remote", "<gateway-slug-or-url>"]
}
}
}
单词要么是网关 弹片 (扩大至
https://api.arcade.dev/mcp/<slug>)或完整的网关 網址。 。 。 .
要签到: npx @arcadeai/mcp-remote logout [<gateway-slug-or-url>] (目标
参数以清除所有缓存的证书.
无头主机
在没有浏览器的机器上添加 --no-browser (或设置) ARCADE_NO_BROWSER=1(中文(简体) )
改为 login它打印授权 URL 而不是打开浏览器; 打开
任何可以回回调的机器上的 URL,例如
通过 SSH 转发回调端口 :
ssh -L 9908:localhost:9908 you@remote-host
不提供设备代码授权, 因为 Arcade 授权服务器 不支持它.
认证
默认情况下,该桥使用缓存的 OAuth 令牌 login,刷新访问
当它过期的时候,你应当默默地表示。 不需要 API 密钥, 所以项目成员
无法将 API 密钥连接起来 .
或者,通过环境通过无记名证书。 这个 覆盖
缓存登录并方便 CI 。 发动机接收到 Authorization
两种形状:
| 变量 | 含义 |
|---|---|
ARCADE_API_KEY | API密钥. 发送为 Authorization: Bearer <key>。 。 。 . |
ARCADE_USER_ID | 发自内心 ARCADE_API_KEY (同意为 Arcade-User-Id 头曰. |
ARCADE_TOKEN | OAuth 访问符 。 发送为 Authorization: Bearer <token>。 。 。 . |
托肯存储
在 macOS 上, OAuth 令牌存储在登录密钥链中(通过
security 工具,所以没有本地模块可编译),和上盘文件
只有非秘密客户注册。 在其它平台上,或何时
ARCADE_USE_KEYCHAIN=0,符号写给 credentials.json (0600) 输入
替换为缓存目录 。 在 Keychain 仍在使用之前编写的文件
工作,并在下一个符号写入时迁移.
其他环境变量
| 变量 | 默认 | 含义 |
|---|---|---|
ARCADE_ENGINE_URL | https://api.arcade.dev | 发动机基础用来扩张一发子弹. |
ARCADE_OAUTH_CALLBACK_PORT | 9908 | 循环端口 login 转向. |
ARCADE_LOGIN_TIMEOUT_SECONDS | 600 | 多长时间 login 等唤回. |
ARCADE_MCP_REMOTE_DIR | ~/.arcade/mcp-remote | 在客户端注册(以及没有键链,代币)被存储的地方(0600). |
ARCADE_USE_KEYCHAIN | (大型操作系统) | 设定 0 以在文件中保留指号,而不是 OS 键链. |
ARCADE_NO_BROWSER | (未设定) | 设定 1 无头 login (与 --no-browser) (中文(简体) ). |
ARCADE_DOWNLOAD_DIR | ~/Downloads/arcade | 保存工具返回的文件( 另) --download-dir) (中文(简体) ). |
ARCADE_ALLOWED_DIRS | (未设定) | 相隔的底盘上传可能从中读取;未设置是指除证书底盘以外的任何地方. |
ARCADE_MAX_FILE_BYTES | 26214400 (25 MB) (中文(简体) ) | 最大内存上传/下载大小 . |
ARCADE_MAX_DOWNLOAD_BYTES | 262144000 (250甲基溴) | Max 组装了被拆卸的负载大小 . |
ARCADE_DOWNLOAD_CHUNKED | 打开 | 设定 0 以禁用被块化的下载组件. |
ARCADE_PUBLIC_UPLOAD_BASE | (未设定) | 允许 URL- faching 工具接受本地文件路径的公用基址 . |
ARCADE_UPLOAD_PORT | 9909 | 本地端口上传主机绑定( 在您的地道后) . |
MCP_REMOTE_LOG_LEVEL | info | debug | info | warn | error。 。 。 . |
所有诊断都写给 标准; stdout 只携带 MCP 协议 交通,如斯地迪奥运输需要.
如何运作
MCP client <--stdio--> @arcadeai/mcp-remote <--Streamable HTTP--> Arcade gateway
该桥作为MCP客户端连接出入口,读取其
初始化期间的能力和身份,然后提出入境
镜像他们的Stdio服务器. 大多数请求和通知通过
未转换; tools/list 财务报告和审定财务报表 tools/call 是文件参数的接合符
重写(上载)并实现返回文件(下载).
对于认证,出局客户端携带OAuth无记名符号. 在401个SDK上
跟踪从网关到授权服务器的 RFC 9728 发现,
动态注册公共客户端(PKCE S256),并在 login驱动器
浏览器+回放授权码流。 在服务模式下,它只使用过
缓存的符号( 静默地重现); 它从不打开浏览器 .
文件上传
当一个工具将一个文件取为字节时,模型就不应该看到或产生碱基64.
打开 tools/list 代理检测文件载运参数,并在 tools/call, (中文(简体) ),
本地读取文件,并在转发前替换其内容。 模型
只发出一条短的本地路径.
检测偏好精度; 一个模糊的参数未被更改( 今天的) 行为,基数64通过模型:
- 密码登记 用于已知形状: Gmail
attachments[].source(项目 已接受一个file://URI,它变成一个data:URI,与filename编号 :mime_type从文件中填入)和基数64工作手册/附件 参数(作为局部路径参数提交模型). - 防血压 对于新工具:字符串参数仅在
它的名字看起来像字节字段( name
*_base64, (中文(简体) ),file_content*, (中文(简体) ),file_bytes, (中文(简体) ),attachment*(中文(简体) ) 财务报告和审定财务报表 其描述带有基质64/二进制信号. 这个 排除纯文本content参数. - 明确标记: 一个参数
contentEncoding: base64被视为 权威.
通过一条绝对路径或一条 file:// URI (英语). 读取最多25 MB 的文件( 覆盖)
与 ARCADE_MAX_FILE_BYTES页:1.
正在上传到获取 URL 的工具
有些工具完全不接受字节: 公开 URL 关于
网关获取服务器侧( 例如) GoogleDrive_UploadFile是因为 source_url, (中文(简体) ),
Resend_SendEmail 附录, Fireflies_UploadRecording) (中文(简体) ). 远程网关
无法在您的机器上找到文件, 因此此选项是: set
ARCADE_PUBLIC_UPLOAD_BASE 到到达此机器的 URL( SSH 隧道或
a 一个 ngrok编号 :cloudflared 隧道到 ARCADE_UPLOAD_PORT,默认为 99.09. 用这个
设置, 您可以通过这些工具的本地路径, 而桥头主控文件
在一个不可理解的符号下并替换公共 URL; 本地服务器
绑定 127.0.0.1 只是,所以除了通过你的地道之外,没有其他东西暴露出来.
没有设置, 传出本地路径返回一个明确的错误解释如何
启用托管.
文件下载
当一个工具返回一个文件时, 代理保存到下载目录
(单位:千美元)~/Downloads/arcade/ 默认,或 --download-dir 编号 : ARCADE_DOWNLOAD_DIR(中文(简体) )
并用本地路径取而代之,所以字节永远无法到达模型的
上下文。 它在工具结果中处理三个形状:
- (单位:千美元)
resource_linkURL——下载(最有效,未经认证)并保存; - (单位:千美元)
data:<mime>;base64,...结果中的 URI 任意位置(文本块或 结构化领域; - 字节外观字段名下的基准64值,扩展已解决
从兄弟文件名,然后是魔法字节,然后是
.bin· ; - a 一个
http(s)媒体/文件字段下的 URL(image_url, (中文(简体) ),file_url, (中文(简体) ),download_url一个赤裸的image编号 :photo,一个巢*_image_url),该词 代理获取并保存 。 页面和配置 URL 被故意排除在外, 所以 代理服务器不获取工具返回的每个 URL.
一些工具返回一个大文件作为“用块抓我”的引用,而不是
内含字节( Google 驱动器) DownloadFile 3⁄4 ̄ ̧漯B
DownloadFileChunk) (中文(简体) ). 代理识别出这个形状, 将每个块拉入
网关,将其流入磁盘上的一个文件,并返回相同的本地路径
结果是一个小文件的直接下载得到,所以模型只发出一个呼叫
从来没有看到块。 集成下载封顶 ARCADE_MAX_DOWNLOAD_BYTES
(250 MB 默认值).
每个工具的小型登记册增加一个文件编制者,其产出是在 a 下到达的
字段丢失通用规则(例如 Figma_ExportImage, (中文(简体) ),
Firecrawl_ScrapeUrl, (中文(简体) ), GoogleSlides_GetSlideThumbnail); 附带图像如
缩略图和上市缩略图被故意留下。 当文件 URL 是
在网关自己的主机上,它与携带者一起取出;其他主机都是
取出未经认证的,所以信使从不漏出. 供应商-私人附件
因此,URL(微软图形、Zendesk、相通、线性)不能是
由桥梁实现,因为它持有的是Arcade标志,而不是提供者的;
他们需要一个返回字节的网关边工具.
任何代理机构无法自信地识别的东西都未受影响. 设定
ARCADE_DOWNLOAD_MATERIALIZE=0 以禁用全部内容, ARCADE_DOWNLOAD_LINKS=0
停止获取 resource_link 和媒体 URL,或 ARCADE_DOWNLOAD_CHUNKED=0
以禁用被块化的下载组件.
文件访问政策
上传读取被限制. 内置块列表总是拒绝认证
目录( e)~/.ssh, (中文(简体) ), ~/.aws, (中文(简体) ), ~/.gnupg, (中文(简体) ), ~/.kube, (中文(简体) ), ~/.docker, (中文(简体) ),
~/.config/gcloud,而代理机本身 ~/.arcade),并解决了符号链接
在检查之前,链接不能走私读取它。 设定 ARCADE_ALLOWED_DIRS
(结肠分离)附加限制是指具体的根源。 下载为
仅在下载目录内写入; 减少网关提供的文件名
到它的底名,所以它不能逃脱.
发展
npm install
npm run build # tsc -> dist/
npm test # unit + end-to-end passthrough against an in-process gateway
端到端测试站出真正的服务器在进程中:一个产出已建成的
童年时的桥梁 并声称初始化, tools/list, (中文(简体) ),
tools/call,而错误传播 全部横跨桥面
模拟授权服务器及安全网关以进行 OAuth 完整登录
(DCR + PKCE +回放),无声服务,和无声信使刷新;第三盘
桥对接回声网关,确认基数64参数被重写
到路径和文件字节( raw base64和 data: URIs) 之前替换为
转发;和 第四个确认文件通过工具返回(data: 核电站,
base64 字段,以及 resource_link URL)被保存到磁盘并交回为
路径。 单元测试覆盖 MIME 的打字, 证书店的密钥链拆分( 有
注入后端,所以真正的键链从未被触碰),流出
下载大小封顶,以及被块-下载装配(带有一个被注入的工具呼叫器,
因此不需要网关.
许可证
专有-Arcade软件许可协议 v1.0. 见 自由主义。 。 。 . 版权 (c) 2025 Arcade Technologies, Inc. 版权所有.