mcp文件代理
一个stdio到HTTP MCP代理,允许MCP客户端将本地文件发送到远程MCP服务器。
像Claude Desktop这样的MCP客户端在本地运行,但通过HTTP连接到远程服务器。当工具期望二进制文件数据时, 客户端无法读取本地文件并将其发送。此代理位于两者之间:它检测文件参数,读取 来自磁盘的文件,以base64格式流式传输,并将编码数据转发到远程服务器。所有其他请求 (资源、提示、非文件工具调用)按原样转发。
文件检测的工作原理
代理检查每个工具的 inputSchema 当它收到a tools/list 来自远程服务器的响应。任何参数 随着 "format": "binary" 被视为文件参数。当调用该工具时,代理会检查参数值 是一个本地文件路径,如果是这样的话,它会在转发之前读取文件并对其进行base64编码。已经存在的值 base64编码不变地传递。
要在服务器上将参数标记为二进制,请设置 format 到 "binary" 在工具的输入模式中:
{
"name": "upload-document",
"inputSchema": {
"type": "object",
"properties": {
"file": {
"type": "string",
"format": "binary",
"description": "The document to upload"
}
}
}
}代理将在二进制参数的描述前添加“提供文件路径”,以便客户端知道要提供路径。
配置
添加到MCP客户端配置中:
{
"mcpServers": {
"my-server": {
"command": "npx",
"args": ["@dongit/mcp-file-proxy"],
"env": {
"MCP_URL": "https://example.com/mcp",
"MCP_HEADERS": "{\"Authorization\": \"Bearer your-token\"}"
}
}
}
}环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
MCP_URL | 是 | 远程MCP服务器的URL |
MCP_HEADERS | 没有 | 要与请求一起发送的JSON标头对象 |
旗帜
| 标志 | 描述 |
|---|---|
--accept-insecure-certs | 禁用TLS证书验证(对于开发中的自签名证书) |
