使用 aliyun mcp-proxy 可简化 OpenAPI MCP Server 的认证与调用。
aliyun mcp-proxy介绍
aliyun mcp-proxy 是阿里云 CLI 提供的 MCP Server 代理工具,用于简化应用程序(例如 Dify、LangChain)与 OpenAPI MCP Server 的交互。首次启动该工具时需手动完成 OAuth 授权,之后代理服务会自动处理 Token 刷新。应用程序通过该代理调用阿里云服务 API 时,无需自行处理认证逻辑。
工作原理
应用程序将 API 请求发送至 aliyun mcp-proxy。代理服务添加凭证后,将请求转发至 OpenAPI MCP Server。
[应用] -> [aliyun mcp-proxy] -> [OpenAPI MCP Server] -> [阿里云服务API]
启动 mcp-proxy 后,本机所有用户均可通过代理端口,以启动代理的 CLI 用户身份访问其权限范围内的所有 MCP Server。为避免权限滥用,请确保在受信任的单用户环境中使用,并禁止代理端口对外暴露。建议为 MCP Server 配置最小必要权限。更多信息,请参见安全风险。
配置并运行代理
步骤一:配置阿里云 CLI
安装或升级阿里云 CLI,确保版本不低于
3.2.0。安装方法,请参见安装CLI(Linux)。使用具备创建 OAuth 应用权限的阿里云账号或 RAM 用户凭据配置 CLI。也可在后续步骤中使用
--oauth-app-name参数指定一个已创建的 OAuth 应用。aliyun configure # 根据提示输入AccessKey ID、AccessKey Secret和默认地域。
步骤二:首次运行代理并完成 OAuth 授权
首次运行 mcp-proxy 时,需完成一次性 OAuth 授权以获取刷新 Token 的权限。
在前台启动。
在有图形界面的环境中,不带
--no-browser参数时,CLI 会自动拉起浏览器执行 OAuth 授权登录流程,完成授权后无需手动输入code。完成后您可直接跳至第5步。aliyun mcp-proxy --host 127.0.0.1 --port 8088在无图形界面的服务器环境中操作时,请添加
--no-browser参数,后续将引导您获取code。aliyun mcp-proxy --host 127.0.0.1 --port 8088 --no-browser
说明您可以使用
--oauth-app-name参数指定自定义 OAuth 应用,该应用必须满足以下条件:Oauth范围(Scope):必须为
/acs/mcp-server。回调地址(Redirect URI):必须与
aliyun mcp-proxy认证时使用的回调地址一致。
终端将输出授权 URL。
Setting up MCPOAuth profile 'default-mcp'... Opening browser for OAuth login... URL: https://signin.aliyun.com/oauth2/v1/auth?client_id=XXX8&response_type=code&scope=%2Facs%2Fmcp-server&redirect_uri=http://0.0.0.0:8088/callback&code_challenge=XXX&code_challenge_method=S256 Please open the authorization URL on a machine with a browser and complete the sign-in. After authorization, the browser will redirect to a callback URL. Even if the page fails to load (connection error), the authorization code is in the URL. Please copy the value of the `code` parameter from the browser's address bar. Example: If the URL is: http://127.0.0.1:8088/callback?code=abc123xyz&state=... Then copy only: abc123xyz Enter authorization code: <YOUR CODE>在浏览器中打开该 URL,登录并完成授权。
授权成功后,页面会跳转至包含
code参数的地址或直接显示授权码。将code值复制并粘贴至终端,按回车键确认。当终端显示
OAuth login successful!信息时,表示授权登录成功。2025/12/04 19:11:49 Oauth authorization successfully, code received: XXXX 2025/12/04 19:11:49 Start to exchange code for token with PKCE 2025/12/04 19:11:49 Exchange code for token with PKCE successfully OAuth login successful!当终端显示
MCP Proxy Server Started信息时,表示代理启动成功。MCP Profile 'default-mcp' configured for oauth app 'aliyun-cli-mcp-proxy' successfully! MCP Proxy Server Started Listen: 127.0.0.1:8088
步骤三:配置为 systemd 后台服务(以CentOS为例)
为确保代理稳定运行,建议将其配置为开机自启的 systemd 服务。
创建
systemd服务文件:aliyun-mcp-proxy。说明:
将命令中的
your-user替换为实际运行此命令的非root用户名。该用户必须是已通过aliyun configure配置凭据的用户。ExecStart中的$(which aliyun)可自动定位aliyun命令路径。如果定位失败,可手动将其替换为which aliyun命令的输出结果(例如/usr/local/bin/aliyun)。
sudo tee /etc/systemd/system/aliyun-mcp-proxy.service << 'EOF' [Unit] Description=Aliyun CLI MCP Proxy After=network.target [Service] Type=simple User=your-user ExecStart=$(which aliyun) mcp-proxy --host 127.0.0.1 --port 8088 --no-browser Restart=always RestartSec=10 Environment=HOME=/home/your-user [Install] WantedBy=multi-user.target EOF重新加载
systemd配置并启动服务。# 重新加载配置 sudo systemctl daemon-reload # 启动服务 sudo systemctl start aliyun-mcp-proxy # 设置开机自启 sudo systemctl enable aliyun-mcp-proxy
步骤四:验证代理服务
通过以下任一方式验证服务是否正常运行。
查看服务状态
执行以下命令查看服务状态。
sudo systemctl status aliyun-mcp-proxy若输出中包含
active (running),则表示服务已成功启动。请求代理端口
执行以下命令,直接请求代理端口。
curl http://127.0.0.1:8088/如果代理工作正常,将收到来自 MCP Server 的 XML 格式错误响应,表明代理与服务之间的链路已连通。
<?xml version='1.0' encoding='UTF-8'?><Error><RequestId>B3311876-XXXXX</RequestId><HostId>openapi-mcp.cn-hangzhou.aliyuncs.com</HostId><Code>InvalidAction.NotFound</Code><Message>Specified api is not found, please check your url and method.</Message><Recommend><![CDATA[https://api.aliyun.com/troubleshoot?q=InvalidAction.NotFound&product=OpenAPIExplorer&requestId=B3311876-XXX]]></Recommend></Error>
应用案例:在 Dify 中集成
以在同一台 ECS 上通过 Docker Compose 部署的 Dify 为例,介绍如何在应用中配置并使用 mcp-proxy 代理。
步骤一:获取宿主机 Docker 网桥IP并启动mcp-proxy代理服务
Dify 容器需通过宿主机的 Docker 网桥 IP 地址访问 mcp-proxy 服务。
执行以下命令,获取并记录该 IP 地址。
ip addr show docker0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1执行后会得到类似
172.17.0.1的 IP 地址。在前台启动 mcp-proxy 代理服务。或者,在
systemd中修改启动命令然后通过服务启动。aliyun mcp-proxy --host 172.17.0.1 --port 8088 --no-browser
步骤二:在 Dify 中配置 MCP Server
进入 Dify 的 工具 > MCP 配置页面。
点击 添加 MCP 服务(HTTP)。
在 服务端点 URL 字段中,填入您的 MCP 代理地址。
您可在 阿里云 OpenAPI MCP 服务控制台中获取原始的 Streamable HTTP Endpoint 地址。并将该地址中的域名部分(host)替换为本地或内网代理地址。
示例转换:
原始 Endpoint:
https://openapi-mcp.cn-hangzhou.aliyuncs.com/accounts/1234/custom/cli-proxy-test/id/1234/mcp替换为代理地址(假设代理运行在
172.17.0.1:8088):http://172.17.0.1:8088/accounts/1234/custom/cli-proxy-test/id/1234/mcp
按需填入其他信息后点击添加并授权。Dify 将通过该代理地址与您的 MCP 服务通信。
安全风险
启动 mcp-proxy 后,本机所有用户均可通过代理端口,以启动代理的 CLI 用户身份访问其权限范围内的所有 MCP Server。主要风险包括:
内部权限滥用:同一机器上的其他用户可利用代理端口执行越权操作,导致权限滥用或数据泄露。
外部暴露风险:代理端口监听在
0.0.0.0且未配置防火墙时,任何人均可通过该端口访问 MCP Server。
防护措施
环境隔离:仅在受信任的单用户环境中运行代理,避免在多用户共享服务器上使用。
网络访问控制:将代理监听地址(
--host)绑定到127.0.0.1(默认)或特定内网 IP。使用防火墙或安全组规则限制代理端口访问范围(例如仅允许特定应用服务器 IP 访问),严禁对公网暴露。最小权限原则:为代理使用的 CLI 用户及其关联的 MCP Server 配置最小必要权限,优先授予只读权限。
审计与监控:定期审查代理服务的访问日志,监控异常请求。
核心原则:MCP Proxy 使用CLI登录用户的阿里云身份代理请求,请像保护账号密码一样保护 MCP Proxy 的访问权限。
安全事件处理
如果怀疑代理认证 Token 泄露或被滥用,立即执行以下操作:
停止 MCP Proxy 服务。
删除本地配置文件:
rm ~/.aliyun/.mcpproxy_config。在阿里云控制台撤销 OAuth 授权。
检查 API 调用日志,确认是否存在异常操作。
重新配置 MCP Proxy 并生成新的 Token。
参数说明
aliyun mcp-proxy 命令支持通过不同参数以适应特定场景。
参数 | 描述 | 默认值 |
| 代理监听的主机地址。用户可以根据使用场景管理。 |
|
| 代理监听的端口。 |
|
| 在无图形界面的环境中进行 OAuth 认证时使用。启用后,认证链接将直接打印在终端。 | 未启用 |
| 指定已存在的 OAuth 应用名称。使用此参数时,CLI 不会尝试自动创建应用。 |
|
| 选择 OpenAPI MCP Server 的服务站点。 |
|
| 手动指定上游 OpenAPI MCP Server 的地址,以覆盖默认地址。 | 中国站: |
常见问题
在 Dify 中配置后,提示“Connection Refused”或“Timeout”?
请检查以下配置:
mcp-proxy服务启动时,--host参数是否已配置为 Docker 网桥 IP 或宿主机内网 IP,以确保 Docker 容器可以访问。云服务器安全组或宿主机防火墙是否已放行从 Docker 容器到代理端口(例如
8088)的 TCP 流量。
如何查看mcp-proxy服务的运行日志?
若已配置为systemd服务,可使用以下命令实时查看日志:
sudo journalctl -u aliyun-mcp-proxy -f