Todos os produtos
Search
Central de documentação

OpenAPI Explorer:Use Aliyun mcp-proxy to proxy the OpenAPI MCP Server

Última atualização: Jul 04, 2026

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.

Aviso

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

  1. Instale ou atualize a CLI da Alibaba Cloud para a versão 3.2.0 ou posterior. Instalar ou atualizar a CLI da Alibaba Cloud.

  2. 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-name em 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.

  1. 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
    Nota

    Para 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.

  2. 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>
  3. Abra a URL no navegador, faça login e conclua a autorização.

  4. Após a autorização, a página redireciona para uma URL contendo um parâmetro code ou exibe o código diretamente. Copie o valor do code, cole-o no terminal e pressione Enter.

  5. 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!
  6. O terminal exibe MCP Proxy Server Started quando 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.

  1. Crie um arquivo de serviço systemd chamado aliyun-mcp-proxy.service.

    Nota:

    • Substitua your-user pelo nome de usuário real, diferente de root, que executará este serviço. Esse usuário deve ter credenciais configuradas via aliyun configure.

    • Na linha ExecStart, o comando $(which aliyun) localiza automaticamente o caminho para o comando aliyun. Se isso falhar, substitua manualmente pela saída do comando which 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
  2. Recarregue a configuração do systemd e 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-proxy

    Se 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.

  1. Obtenha o endereço IP da ponte docker.

    ip addr show docker0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1

    Este comando retorna um endereço IP semelhante a 172.17.0.1.

  2. Inicie o aliyun mcp-proxy em primeiro plano ou modifique o comando de inicialização do systemd para 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

  1. No Dify, acesse a página de configuração Tools > MCP.

  2. Clique em Add MCP Server (HTTP).

  3. 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/mcp

    • Endpoint 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

  4. 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.0 sem firewall, qualquer pessoa na rede poderá acessar os servidores MCP pela porta.

Nota

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 --host a 127.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:

  1. Lista de bloqueios primeiro: Uma requisição correspondente à lista de bloqueios é rejeitada imediatamente, mesmo que também esteja na lista de permissões.

  2. Filtragem por lista de permissões: Se houver uma lista de permissões configurada, apenas os servidores nela listados serão permitidos.

  3. 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, cloudphone e multi_account são os valores de name do servidor (geralmente localizados antes da palavra-chave id).

  • Na saída, XSkb9v4dXx000000 e OV0Qkpxh0Uodx000 são os valores de id do servidor (geralmente localizados antes da palavra-chave mcp).

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 /

cloudcontrol

Corresponde exatamente ao campo name do servidor.

Correspondência por ID do Servidor

String que não começa com /

OV0Qkpxh0Uodx000

Corresponde exatamente ao campo id do servidor.

Correspondência por Prefixo de Caminho

String que começa com /

/acs/mcp-server/ecs

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/ecs corresponde tanto a /acs/mcp-server/ecs/mcp quanto 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 ecs e oss ficam 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

--host

Endereço de escuta do proxy.

127.0.0.1

--port

Porta de escuta do proxy.

8088

--no-browser

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

--oauth-app-name

Nome de uma aplicação OAuth pré-existente. Ignora a criação automática da aplicação.

aliyun-cli-mcp-proxy

--region-type

Site de serviço para o servidor OpenAPI MCP. Valores válidos: CN (site China) e INTL (site internacional).

CN

--upstream-url

Substitui o endereço padrão do servidor upstream OpenAPI MCP.

Site China: https://openapi-mcp.cn-hangzhou.aliyuncs.com Site Internacional: https://openapi-mcp.ap-southeast-1.aliyuncs.com

--allowed-servers

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

--blocked-servers

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:

  1. Defina --host como o IP da ponte docker ou o IP interno do host para que o contêiner possa alcançar o serviço mcp-proxy.

  2. 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