Skip to main content

MCP 代理工具性能对比

mcp-remote (Node.js) 和 mcp-proxy (Python) 是两个主流的MPC代理工具,可以实现MCP服务器传输协议转换,支持将 Remote MCP server (基于SSE 或 http streaming)转换成 stdio 模式的本地 MPC server ,便于不同MCP客户端与MCP服务器间的通信适配
 
 
本文以Q CLI 配置 AWS Knowledge MCP Server 远程MPC服务器为例,对比评测两个MPC代理工具的实际性能表现。

测试环境

  • 操作系统: Linux (aarch64)
  • Node.js: v20.19.0
  • npm: 10.8.2
  • uv: 0.6.14
  • Python: 3.12.3

测试结果

指标 mcp-remote (Node.js) mcp-proxy (Python) 胜者
安装时间 3.288s 0.373s 🏆 mcp-proxy
最大内存使用 70,748 KB (~69MB) 52,936 KB (~52MB) 🏆 mcp-proxy
CPU 时间 (User) 0.31s 0.41s 🏆 mcp-remote
CPU 时间 (System) 0.06s 0.05s 🏆 mcp-proxy
启动连接时间 ~1.0s ~1.0s 🤝 平手  

 对测试结果分析如下:

🏆 mcp-proxy (Python) 的优势:

  1. 安装速度快 9 倍:0.373s vs 3.288s
  2. 内存占用少 25%:52MB vs 69MB
  3. 系统调用效率略高
  4. 包管理更高效:uv 比 npm 快很多

🏆 mcp-remote (Node.js) 的优势:

  1. CPU 使用效率更高:用户态 CPU 时间更少 (0.31s vs 0.41s)
  2. 运行时性能稳定

🤝 相似表现:

  • 连接建立时间基本相同 (~1.0s)
  • 运行时稳定性都很好
  • 都能成功代理 MCP 连接

结论

实际测试表明,Python 工具 mcp-proxy 在安装速度、内存使用等关键指标上都优于 Node.js 工具 mcp-remote。这主要得益于:

  1. uv 的高效包管理:比传统 npm 快很多
  2. 现代 Python 异步库:httpx 等库的优化
  3. 更精简的依赖树:27 个包 vs 81 个包 

基于实际测试结果,推荐使用 mcp-proxy, 理由:

  1. 更好的用户体验:安装快速,资源占用少
  2. 更适合生产环境:内存效率高,适合资源受限场景
  3. 现代化工具链:uv 是新一代 Python 包管理工具

Q CLI  mcp.json 配置示例:

{
  "mcpServers": {
    "aws-knowledge-mcp-server": {
      "command": "uvx",
      "args": [
        "mcp-proxy",
        "--transport",
        "streamablehttp", 
        "https://knowledge-mcp.global.api.aws"
      ]
    }
  }
}

  

详细测试数据

1. 安装时间测试

mcp-remote (npm):

$ time npm install -g mcp-remote
added 81 packages in 3s
real    0m3.288s
user    0m1.379s
sys     0m0.237s

mcp-proxy (uv):

$ time uv tool install mcp-proxy
Installed 27 packages in 9ms
real    0m0.373s
user    0m0.027s
sys     0m0.064s

2. 内存使用测试

mcp-remote:

Maximum resident set size (kbytes): 70748
User time (seconds): 0.31
System time (seconds): 0.06

mcp-proxy:

Maximum resident set size (kbytes): 52936
User time (seconds): 0.41
System time (seconds): 0.05

3. 连接测试

两个工具都能成功连接到 https://knowledge-mcp.global.api.aws,连接建立时间相近。

mcp-remote 连接日志:

[39247] Connecting to remote server: https://knowledge-mcp.global.api.aws
[39247] Connected to remote server using StreamableHTTPClientTransport
[39247] Proxy established successfully

mcp-proxy 连接日志:

[I] HTTP Request: POST https://knowledge-mcp.global.api.aws "HTTP/1.1 200 OK"
[I] Negotiated protocol version: 2025-03-26

测试命令参考

安装命令:

# mcp-remote
npm install -g mcp-remote

# mcp-proxy  
uv tool install mcp-proxy

测试命令:

# mcp-remote
npx mcp-remote https://knowledge-mcp.global.api.aws

# mcp-proxy
uvx mcp-proxy --transport streamablehttp https://knowledge-mcp.global.api.aws

性能测试命令:

# 内存测试
/usr/bin/time -v timeout 3s [command]

# 连接测试
time timeout 1s [command]

Comments

Popular posts from this blog

关于VMware虚拟网卡网络问题的处理

本篇适用情形: VMware虚机拷贝或移动后网络问题 其它虚机格式转换VMware虚机后网络问题 VMware虚机虚拟网卡设置问题 修改VMware虚机虚拟网卡类型 Ubuntu 16.04虚拟机网卡设置问题 Highlight: /etc/network/interface       //网卡配置文件(ubuntu) lspci -vk lsmod ifconfig –a ethtool resolvconf -u 正文: 【 Step1】 在着手解决问题之前,先查看一下VMware虚机的网卡配置是否正常。打开虚机目录下的 xxx.vmx   文件,找到虚拟网卡的配置信息(第1块网卡通常为ethernet0),例如: VMware虚拟网卡有以下几种设备类型: ethernet0.virtualDev = "vlance"          //AMD PCNet AM79C970A 10/100Mbps ethernet0.virtualDev = "e1000"          //Intel(R) 82545EM PRO/1000 PCI ethernet0.virtualDev = "e1000e"        //Intel(R) 82545L PRO/1000 PCIe ethernet0.virtualDev = "vmxnet"        //VMware PCI Ethernet Adapter VMware Workstation / Player 建的虚机默认“vlance” 是一块比较老的百兆网卡,可以修改为e1000或e1000e(这两者的区别可以看做一块是pci网卡一块是pcie接口网卡);没有正常安装vmware tools的情况下,不建议改为“vmxnet”。 以下...

Bitwarden 配置 Let’s Encrypt 证书

由于在内网环境部署的Bitwarden,不能通过安装脚本自动申请 Let’s Encrypt 的证书。 起初我用了一个自签名证书,发现特别不好使,虽然在firefox 跟 chrome 内核的浏览器上都能通过插件访问,但必须添加信任才行,特别是用Bitwarden Desktop 客户端连的时候,一直报错,可能是不认自签名证书。 于是琢磨了下怎么手动申请Let’s Encrypt的证书用于内网,对过程简单梳理如下。 自签名证书 | Self-Signed Certificate 如果你在内网环境只需要自签名证书,可以参考Bitwarden的帮助文档( Installing and depoying )进行设置: 1、生成自签名证书: //一条命创建私钥和证书: openssl req -x509 -newkey rsa:4096 -sha256 –nodes -days 10950 \    -keyout privite.key -out identity.crt \    -subj "/C= US /ST= New York /L= New York /O= Company Name /OU= CREAST /CN= bw.creast.win " 将生成的文件放到 /ssl 目录下: privite.key     ~/bwdata/ssl/ bw.creast.win/private.key identity.crt      ~/bwdata/ssl/ bw.creast.win/identity.crt 2、生成.pfx格式证书文件: //一条命令将前面生成的私钥和证书打包成需要的pfx格式文件 openssl pkcs12 -export -out ./ identity.pfx -inkey privite.key \    -in identity.crt -certfile identity.crt -passout pass: IDENTITY_CERT_PASSWORD ...

Tor洋葱路由的设置与使用

先说明一下,这里只是利用Tor来访问被GWF屏蔽的优秀服务(如Wikipedia、Blogger、GG App等),并不侧重于如何匿名访问网络。以下Tor设置方法适用于: MS Windows(2000/XP/Vista/Server)系统 第一步:下载并安装Tor 关于Tor(The Onion Router,洋葱路由)的工作原理,可以参考枪旗工作室的说明 ( http://tcno.net/doc/tor/#para1 )。在Windows下安装配置Tor已经非常容易了,直接下载这样一个Tor的Windows 捆绑软件包( Vidalia-Tor-Privoxy Bundle ),其中已经预先配置好这些软件能够一同工作。 安装前可以看到套件捆绑了哪些软件:Tor、Vidalia(Tor 的一个图形用户界面)和 Privoxy(Web 代理软件)、Torbutton(Firefox浏览器插件)全选这些软件进行安装。 安装完成后会自动运行Vidalia,在弹出的控制面板上可以看到当前的状态,Tor已经运行了,此时不需要再进行其它设置了。 第二步:配置浏览器使用Tor 如果使用 Firefox 浏览器,Bundle里已经附带了 Torbutton 插件 ,打开/重启Firefox就会在右下角显示Tor Enabled/Disabled,单击它可以选择是否开启Tor代理功能。 对于 Internet Explorer 没有现成的插件可用,需要手动配置代理设置,也很容易。 菜单位置 工具 - Internet 选项 - 连接 - 局域网设置 - 代理服务器 - 高级 - 服务器 在代理理服务器地址栏里填入 "localhost",端口为 "8118"(Privoxy不支持FTP代理,填不填都无所谓了);注意套接字SOCKS代理的端口为 "9050",如果有其它选项,请选择Socks5,然后"确定"即可。 对于 Maxthon ,如果对IE设置了Tor可以选择“使用IE代理设置”,或者手动添加一个代理列表,内容与上面填写的一样,然后选择应用就可以了。 这里说明一下 Privoxy 的作用,因为当直接使用 SOCKS 代理时,浏览器会泄露...