Use o aliyun mcp-proxy como proxy de autenticação local para aplicações de IA que não gerenciam credenciais da Alibaba Cloud. O proxy administra a autorização OAuth e a renovação de tokens automaticamente.
aliyun mcp-proxy
O aliyun mcp-proxy é uma ferramenta CLI que atua como proxy nas requisições entre aplicações de IA (como Dify e LangChain) e servidores OpenAPI MCP. A primeira execução exige uma autorização OAuth única; o proxy cuida das renovações de token automaticamente.
Funcionamento: A aplicação envia requisições ao aliyun mcp-proxy, que adiciona as credenciais e as encaminha ao servidor OpenAPI MCP.
Após iniciar o aliyun mcp-proxy, qualquer usuário na máquina host pode acessar os servidores MCP pela porta do proxy, dentro do escopo de permissões do usuário da CLI. Execute o proxy apenas em um ambiente confiável e de usuário único, sem expor a porta externamente. Use --allowed-servers ou --blocked-servers para restringir os servidores acessíveis. Riscos de segurança e mitigações.
Configurar e executar o proxy
Etapa 1: Configure a CLI da Alibaba Cloud
Instale ou atualize a CLI da Alibaba Cloud para a versão
3.2.0ou posterior. Instalar ou atualizar a CLI da Alibaba Cloud.-
Configure a CLI com as credenciais de uma conta Alibaba Cloud ou de um usuário RAM com permissão para criar aplicações OAuth. Para usar uma aplicação OAuth existente, especifique
--oauth-app-nameem uma etapa posterior.aliyun configure # Enter your AccessKey ID, AccessKey Secret, and default region as prompted.
Etapa 2: Primeira execução e autorização OAuth
Na primeira execução, o mcp-proxy exige uma autorização OAuth única para obter um token de atualização.
-
Inicie o proxy em primeiro plano.
-
Em ambientes com interface gráfica, a CLI abre o navegador para a autorização OAuth, a menos que você especifique
--no-browser. Após a autorização, pule para a etapa 5.aliyun mcp-proxy --host 127.0.0.1 --port 8088 -
Em ambientes sem interface gráfica (headless), adicione
--no-browser. A CLI solicitará que você obtenha o código de autorização manualmente.aliyun mcp-proxy --host 127.0.0.1 --port 8088 --no-browser
NotaPara especificar uma aplicação OAuth personalizada com
--oauth-app-name, a aplicação deve atender aos seguintes requisitos:Escopo OAuth: Deve ser
/acs/mcp-server.URI de Redirecionamento: Deve corresponder à URI de Redirecionamento usada durante a autenticação do
aliyun mcp-proxy.Tipo de Aplicação: Deve ser uma aplicação
Native.
-
-
O terminal exibe a URL de autorização.
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> Abra a URL no navegador, faça login e conclua a autorização.
Após a autorização, a página redireciona para uma URL contendo um parâmetro
codeou exibe o código diretamente. Copie o valor docode, cole-o no terminal e pressione Enter.-
O terminal exibe
OAuth login successful!quando a autorização é bem-sucedida.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! -
O terminal exibe
MCP Proxy Server Startedquando o proxy está pronto.MCP Profile 'default-mcp' configured for oauth app 'aliyun-cli-mcp-proxy' successfully! MCP Proxy Server Started Listen: 127.0.0.1:8088
Etapa 3: Configure serviço systemd (CentOS)
Para garantir operação estável, configure o proxy como um serviço systemd que inicia na inicialização do sistema.
-
Crie um arquivo de serviço
systemdchamado aliyun-mcp-proxy.service.Nota:
Substitua
your-userpelo nome de usuário real, diferente deroot, que executará este serviço. Esse usuário deve ter credenciais configuradas viaaliyun configure.Na linha
ExecStart, o comando$(which aliyun)localiza automaticamente o caminho para o comandoaliyun. Se isso falhar, substitua manualmente pela saída do comandowhich aliyun(por exemplo,/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 -
Recarregue a configuração do
systemde inicie o serviço.# Reload the configuration sudo systemctl daemon-reload # Start the service sudo systemctl start aliyun-mcp-proxy # Enable the service to start on boot sudo systemctl enable aliyun-mcp-proxy
Etapa 4: Verifique o serviço de proxy
Verifique se o serviço está em execução.
-
Visualize status do serviço
Confira o status do serviço.
sudo systemctl status aliyun-mcp-proxySe a saída contiver
active (running), o serviço foi iniciado com sucesso. -
Solicitar a porta do proxy
Envie uma requisição de teste para a porta do proxy.
curl http://127.0.0.1:8088/Um proxy funcional retorna uma resposta de erro XML do servidor MCP, confirmando a conectividade.
<?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>
Integração com Dify
Este exemplo configura o mcp-proxy com o Dify implantado via docker Compose na mesma instância ECS.
Etapa 1: Obter IP do host e iniciar o proxy
O contêiner do Dify acessa o mcp-proxy pelo IP da ponte docker da máquina host.
-
Obtenha o endereço IP da ponte docker.
ip addr show docker0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1Este comando retorna um endereço IP semelhante a
172.17.0.1. -
Inicie o aliyun mcp-proxy em primeiro plano ou modifique o comando de inicialização do
systemdpara executá-lo como serviço.aliyun mcp-proxy --host 172.17.0.1 --port 8088 --no-browser
Etapa 2: Configure o servidor MCP no Dify
No Dify, acesse a página de configuração Tools > MCP.
Clique em Add MCP Server (HTTP).
-
No campo server endpoint URL, insira o endereço do seu proxy MCP.
Localize o Streamable HTTP Endpoint no console do Serviço OpenAPI MCP e substitua o host pelo endereço do seu proxy.
Exemplo de conversão:
Endpoint Original:
https://openapi-mcp.cn-hangzhou.aliyuncs.com/accounts/1234/custom/cli-proxy-test/id/1234/mcpEndpoint com Proxy: (considerando que o proxy roda em
172.17.0.1:8088):http://172.17.0.1:8088/accounts/1234/custom/cli-proxy-test/id/1234/mcp
Preencha os campos restantes e clique em Add & Authorize. O Dify roteará o tráfego MCP por este proxy.
Riscos de segurança e mitigações
Após iniciar o mcp-proxy, qualquer usuário da máquina host pode acessar os servidores MCP pela porta do proxy, dentro do escopo de permissões do usuário da CLI. Principais riscos:
Abuso de privilégios internos: Outros usuários na mesma máquina podem usar a porta do proxy para realizar ações não autorizadas, resultando em abuso de privilégios ou vazamento de dados.
Exposição externa: Se o proxy escutar em
0.0.0.0sem firewall, qualquer pessoa na rede poderá acessar os servidores MCP pela porta.
O proxy usa a identidade Alibaba Cloud do usuário conectado na CLI. Configure as permissões de acesso com cuidado.
Mitigações
Isolamento de ambiente: Execute o proxy apenas em um ambiente confiável e de usuário único.
Controle de acesso à rede: Vincule o
--hosta127.0.0.1(padrão) ou a um IP interno específico. Use regras de firewall ou grupo de segurança para restringir o acesso à porta do proxy. Jamais exponha a porta à internet pública.Controle de acesso ao servidor: Use
--allowed-servers(lista de permissões) ou--blocked-servers(lista de bloqueios) para restringir os servidores MCP acessíveis. Configurar controle de acesso ao servidor.Princípio do menor privilégio: Conceda ao usuário da CLI e ao servidor MCP apenas as permissões mínimas necessárias. Prefira acesso somente leitura.
Auditoria e monitoramento: Revise regularmente os logs de acesso do proxy. Requisições bloqueadas são registradas nos logs.
Configure controle de acesso ao servidor
O aliyun mcp-proxy suporta modos de lista de permissões e lista de bloqueios para restringir os servidores MCP acessíveis.
Regras de prioridade
O controle de acesso segue esta ordem de avaliação:
Lista de bloqueios primeiro: Uma requisição correspondente à lista de bloqueios é rejeitada imediatamente, mesmo que também esteja na lista de permissões.
Filtragem por lista de permissões: Se houver uma lista de permissões configurada, apenas os servidores nela listados serão permitidos.
Permissão padrão: Se nenhuma lista estiver configurada, o acesso a todos os servidores será permitido.
Obter nome e ID do servidor
Após iniciar o aliyun mcp-proxy, o terminal lista os servidores MCP disponíveis:
Available Servers:
- cloudphone
MCP: http://127.0.0.1:8088/accounts/0000000000000000/system/eds-aic/cloudphone/id/XSkb9v4dXx000000/mcp
SSE: http://127.0.0.1:8088/accounts/0000000000000000/system/eds-aic/cloudphone/id/XSkb9v4dXx000000/sse
- multi_account
MCP: http://127.0.0.1:8088/accounts/0000000000000000/custom/multi_account/id/OV0Qkpxh0Uodx000/mcp
SSE: http://127.0.0.1:8088/accounts/0000000000000000/custom/multi_account/id/OV0Qkpxh0Uodx000/sse
Na saída,
cloudphoneemulti_accountsão os valores denamedo servidor (geralmente localizados antes da palavra-chaveid).Na saída,
XSkb9v4dXx000000eOV0Qkpxh0Uodx000são os valores deiddo servidor (geralmente localizados antes da palavra-chavemcp).
O caminho da URL geralmente segue estes padrões:
......./system/eds-aic/$server_name/id/$server_id/mcp
......./custom/$server_name/id/$server_id/mcp
Padrões de correspondência
Os parâmetros --allowed-servers e --blocked-servers suportam três padrões de correspondência, identificados automaticamente pelo formato do valor:
|
Padrão de correspondência |
Formato |
Exemplo |
Descrição |
|
Correspondência por Nome do Servidor |
String que não começa com |
|
Corresponde exatamente ao campo |
|
Correspondência por ID do Servidor |
String que não começa com |
|
Corresponde exatamente ao campo |
|
Correspondência por Prefixo de Caminho |
String que começa com |
|
Corresponde ao prefixo do caminho da URL da requisição. |
Nota
A correspondência por nome e ID do servidor é exata.
A correspondência por prefixo de caminho usa comparação de prefixo. Por exemplo,
/acs/mcp-server/ecscorresponde tanto a/acs/mcp-server/ecs/mcpquanto a/acs/mcp-server/ecs/sse.É possível combinar todos os três padrões no mesmo parâmetro.
Exemplos de configuração
-
Modo Lista de Permissões: Permitir acesso apenas a servidores específicos
aliyun mcp-proxy --allowed-servers "ecs,oss"Apenas
ecseossficam acessíveis. Requisições para outros servidores retornam 403 Forbidden. -
Modo Lista de Bloqueios: Negar acesso a servidores específicos
aliyun mcp-proxy --blocked-servers "ram"Todos os servidores, exceto
ram, permanecem acessíveis. -
Uso de correspondência por prefixo de caminho
aliyun mcp-proxy --allowed-servers "/acs/mcp-server/ecs,/acs/mcp-server/oss"Mesmo efeito da correspondência baseada em nome, mas com controle preciso do caminho.
Verifique controle de acesso
Após iniciar o proxy, o terminal mostra a configuração de controle de acesso e o status do servidor:
MCP Proxy Server Started
Listen: 127.0.0.1:8088
Region: CN
Access Control:
Blacklist (blocked servers):
- ram
Whitelist (allowed servers):
- ecs
- oss
Available Servers:
- ecs
MCP: http://127.0.0.1:8088/acs/mcp-server/ecs/mcp
- oss
MCP: http://127.0.0.1:8088/acs/mcp-server/oss/mcp
- ram (blocked)
Requisições bloqueadas são registradas no log do proxy para solução de problemas.
Resposta a incidentes de segurança
Caso suspeite que o token de autenticação do proxy vazou ou foi usado indevidamente:
Interrompa o serviço MCP Proxy.
Exclua o arquivo de configuração local:
rm ~/.aliyun/.mcpproxy_config.Revogue a autorização OAuth no console da Alibaba Cloud.
Verifique os logs de chamadas de API para identificar operações anormais.
Reconfigure o MCP Proxy e gere um novo token.
Parâmetros
O comando aliyun mcp-proxy suporta os seguintes parâmetros.
|
Parâmetro |
Descrição |
Padrão |
|
|
Endereço de escuta do proxy. |
|
|
|
Porta de escuta do proxy. |
|
|
|
Desativa a abertura automática do navegador para autorização OAuth. Em ambientes headless, a CLI imprime a URL de autorização no terminal. |
Não ativado |
|
|
Nome de uma aplicação OAuth pré-existente. Ignora a criação automática da aplicação. |
|
|
|
Site de serviço para o servidor OpenAPI MCP. Valores válidos: |
|
|
|
Substitui o endereço padrão do servidor upstream OpenAPI MCP. |
Site China: |
|
|
Lista de permissões de servidores MCP acessíveis (separados por vírgula). Suporta nome do servidor, ID ou prefixo de caminho. Se não especificado, todos os servidores são permitidos. Configurar controle de acesso ao servidor. |
Não ativado |
|
|
Lista de bloqueios de servidores MCP inacessíveis (separados por vírgula). Suporta nome do servidor, ID ou prefixo de caminho. Tem precedência sobre a lista de permissões. Configurar controle de acesso ao servidor. |
Não ativado |
FAQ
Após executar o aliyun mcp-proxy para autenticação OAuth, recebo o erro "ERROR: OAuth flow returned empty RefreshToken" e o proxy falha ao iniciar. Por que isso acontece?
Geralmente, isso indica um tipo de aplicação OAuth ou identidade incorreta. Verifique:
Se o tipo de aplicação OAuth utilizado é Native.
Se você está autenticando com uma conta Alibaba Cloud ou um usuário RAM. Assumir uma função RAM não permite obter um token de atualização.
Erro de Conexão Recusada ou Timeout no Dify
Verifique estas configurações:
Defina
--hostcomo o IP da ponte docker ou o IP interno do host para que o contêiner possa alcançar o serviçomcp-proxy.O grupo de segurança do ECS ou o firewall do host deve permitir tráfego TCP dos contêineres docker para a porta do proxy (por exemplo,
8088).
Como visualizar os logs do mcp-proxy?
Para implantações via systemd, visualize os logs em tempo real com:
sudo journalctl -u aliyun-mcp-proxy -f