すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud CLI:aliyun mcp-proxy による OpenAPI MCP サーバーのプロキシ

最終更新日:Jun 05, 2026

Alibaba Cloud の認証情報を処理できない AI アプリケーション向けに、aliyun mcp-proxy をローカル認証プロキシとして使用します。このプロキシは、OAuth 認可とトークンの更新を自動的に管理します。

aliyun mcp-proxy

aliyun mcp-proxy は、AI アプリケーション (Dify や LangChain など) と OpenAPI MCP サーバー間のリクエストをプロキシする CLI ツールです。初回起動時に 1 回限りの OAuth 認可が必要ですが、その後のトークンの更新はプロキシが自動的に処理します。

動作原理:アプリケーションは aliyun mcp-proxy にリクエストを送信し、プロキシが認証情報を追加して OpenAPI MCP サーバーに転送します。

警告

aliyun mcp-proxy を開始すると、ホストマシン上の任意のユーザーが、CLI ユーザーの権限スコープ内でプロキシポート経由で MCP サーバーにアクセスできます。 プロキシは、信頼できるシングルユーザー環境でのみ実行し、ポートを外部に公開しないでください。 アクセス可能なサーバーを制限するには、--allowed-servers または --blocked-servers を使用してください。 セキュリティリスクと緩和策

プロキシの設定と実行

手順 1:Alibaba Cloud CLI の設定

  1. Alibaba Cloud CLI をバージョン 3.2.0 以降にインストールまたはアップグレードするには、「Alibaba Cloud CLI をインストールまたは更新する」をご参照ください。

  2. OAuth アプリケーションを作成する権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーの認証情報で CLI を設定します。 既存の OAuth アプリケーションを使用するには、後のステップで--oauth-app-nameを指定します。

    aliyun configure
    # プロンプトに従って、AccessKey ID、AccessKey Secret、デフォルトのリージョンを入力します。

手順 2:初回実行と OAuth 認可

初回実行時、mcp-proxy はリフレッシュトークンを取得するために、1回限りの OAuth 認可が必要です。

  1. プロキシをフォアグラウンドで起動します。

    • GUI 環境では、--no-browser が指定されている場合を除き、CLI は OAuth 認証のためにブラウザを開きます。認証後、ステップ 5 に進みます。

      aliyun mcp-proxy --host 127.0.0.1 --port 8088
    • ヘッドレス環境では、--no-browser を追加します。 CLI から、認証コードを手動で取得するように求められます。

      aliyun mcp-proxy --host 127.0.0.1 --port 8088 --no-browser
    説明

    --oauth-app-name でカスタム OAuth アプリケーションを指定するには、アプリケーションは次の要件を満たす必要があります。

    • OAuth スコープ: /acs/mcp-server にする必要があります。

    • リダイレクト URI: aliyun mcp-proxy の認証で使用するものと一致させる必要があります。

    • アプリケーションタイプ: Native アプリケーションである必要があります。

  2. ターミナルに認可 URL が表示されます。

    MCPOAuth プロファイル 'default-mcp' を設定しています...
    OAuth ログインのためにブラウザを開いています...
    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
    ブラウザが利用可能なマシンで認可 URL を開き、サインインを完了してください。
    認可後、ブラウザはコールバック URL にリダイレクトされます。
    ページがロードに失敗した場合 (接続エラーなど) でも、認可コードは URL に含まれています。
    ブラウザのアドレスバーから `code` パラメーターの値をコピーしてください。
    例:URL が次の場合:
      http://127.0.0.1:8088/callback?code=abc123xyz&state=...
      この場合、`abc123xyz` のみコピーします。
    認可コードを入力してください: <YOUR CODE>
  3. ブラウザで URL を開き、サインインして認可を完了します。

  4. 承認後、ページは code パラメーターを含む URL にリダイレクトされるか、コードが直接表示されます。code の値をコピーして、ターミナルに貼り付け、Enter キーを押します。

  5. 認証に成功すると、ターミナルにOAuth login successful!と表示されます。

    2025/12/04 19:11:49 OAuth 認可が成功し、コードを受信しました: XXXX
    2025/12/04 19:11:49 PKCE を使用してコードをトークンに交換します
    2025/12/04 19:11:49 PKCE を使用したコードとトークンの交換に成功しました
    OAuth ログインに成功しました!
  6. プロキシの準備が整うと、ターミナルに MCP Proxy Server Started が表示されます。

    MCP プロファイル 'default-mcp' は OAuth アプリ 'aliyun-cli-mcp-proxy' 用に正常に設定されました!
    MCP プロキシサーバーが起動しました
    リッスン: 127.0.0.1:8088

手順 3:systemd サービスの設定 (CentOS)

安定した運用のために、OS 起動時に自動起動するよう、プロキシを systemd サービスとして設定します。

  1. aliyun-mcp-proxy.service という名前のsystemd サービスファイルを作成します。

    注意:

    • 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
  2. systemd の設定を再読み込みし、サービスを起動します。

    # 設定を再読み込み
    sudo systemctl daemon-reload
    # サービスを起動
    sudo systemctl start aliyun-mcp-proxy
    # 起動時にサービスを自動起動するように設定
    sudo systemctl enable aliyun-mcp-proxy

手順 4:プロキシサービスの確認

サービスが実行中であることを確認します。

  • サービスステータスの表示

    サービスステータスを確認します。

    sudo systemctl status aliyun-mcp-proxy

    出力に active (running) と表示されている場合、サービスは正常に起動しています。

  • プロキシポートへのリクエスト

    プロキシポートにテストリクエストを送信します。

    curl http://127.0.0.1:8088/

    正常に動作しているプロキシからは MCP サーバーからの 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 を設定します。

手順 1:ホスト IP の取得とプロキシの起動

Dify コンテナは、ホストマシンの Docker ブリッジ IP を介して mcp-proxy にアクセスします。

  1. Docker ブリッジ IP アドレスを取得します。

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

    このコマンドは、172.17.0.1 のような IP アドレスを返します。

  2. aliyun mcp-proxy をフォアグラウンドで起動するか、または systemd の起動コマンドを変更してサービスとして実行します。

    aliyun mcp-proxy --host 172.17.0.1 --port 8088 --no-browser

手順 2:Dify での MCP サーバーの設定

  1. Dify で、[Tools] > [MCP] 設定ページに移動します。

  2. [Add MCP Server (HTTP)] をクリックします。

  3. [server endpoint URL] フィールドに、MCP プロキシアドレスを入力します。

    OpenAPI MCP Service コンソールで [Streamable HTTP 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







  4. 残りのフィールドを入力し、[Add & Authorize] をクリックします。Dify は、このプロキシ経由で MCP トラフィックをルーティングします。

セキュリティリスクと対策

mcp-proxy の起動後、ホストマシン上のすべてのユーザーが、CLI ユーザーの権限範囲内でプロキシポート経由で MCP サーバーにアクセスできます。主なリスクは次のとおりです。

  • 内部権限の悪用:同じマシン上の他のユーザーが、プロキシポートを使用して不正な操作を実行し、権限の悪用やデータ漏洩につながる可能性があります。

  • 外部公開: プロキシがファイアウォールなしで 0.0.0.0 でリッスンする場合、ネットワーク上の誰でもそのポートを介して MCP サーバーにアクセスできます。

説明

プロキシは、ログイン中の CLI ユーザーの Alibaba Cloud ID を使用します。アクセス権限は慎重に設定してください。

対策

  • 環境の分離:信頼できる単一ユーザー環境でのみプロキシを実行してください。

  • ネットワークアクセス制御: --host127.0.0.1 (デフォルト) または特定の内部 IP アドレスにバインドします。ファイアウォールまたはセキュリティグループのルールを使用して、プロキシポートへのアクセスを制限します。ポートをパブリックインターネットに絶対に公開しないでください。

  • サーバーアクセス制御--allowed-servers (許可リスト) または --blocked-servers (ブロックリスト) を使用して、アクセス可能な MCP サーバーを制限します。 サーバーアクセス制御を構成する

  • 最小権限の原則:CLI ユーザーと MCP サーバーに必要最小限の権限のみを付与してください。読み取り専用アクセスを優先してください。

  • 監査とモニタリング:プロキシアクセスログを定期的に確認してください。ブロックされたリクエストはログに記録されます。

サーバーアクセス制御の設定

aliyun mcp-proxy は、アクセス可能な MCP サーバーを制限するための許可リストモードとブロックリストモードをサポートしています。

優先順位ルール

アクセス制御は、次の順序で評価されます。

  1. ブロックリスト優先:ブロックリストに一致するリクエストは、許可リストにも含まれている場合でも、即座に拒否されます。

  2. 許可リストフィルタリング:許可リストが設定されている場合、許可リストに記載されているサーバーのみが許可されます。

  3. デフォルト許可:リストが設定されていない場合、すべてのサーバーへのアクセスが許可されます。

サーバー名と ID の取得

aliyun mcp-proxy を起動すると、ターミナルに利用可能な MCP サーバーが一覧表示されます。

利用可能なサーバー:
  - 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
  • 出力では、cloudphonemulti_account はサーバーの name の値です (通常、id キーワードの前にあります)。

  • 出力では、XSkb9v4dXx000000OV0Qkpxh0Uodx000 はサーバーの id 値です (通常は mcp キーワードの前にあります)。

URL パスは通常、次のパターンに従います。

......./system/eds-aic/$server_name/id/$server_id/mcp
......./custom/$server_name/id/$server_id/mcp

マッチングパターン

--allowed-servers および --blocked-servers パラメーターは、値の形式によって自動的に識別される 3 つの照合パターンをサポートしています:

マッチングパターン

形式

説明

サーバー名マッチング

/ で始まらない文字列

cloudcontrol

サーバーのname フィールドと完全に一致します。

サーバー ID マッチング

/ で始まらない文字列

OV0Qkpxh0Uodx000

サーバーの id フィールドと完全に一致します。

パスプレフィックスマッチング

/ で始まる文字列

/acs/mcp-server/ecs

リクエスト URL のパスプレフィックスと一致します。

注意:

  • サーバー名と ID のマッチングは完全一致です。

  • パスプレフィックスマッチングは、プレフィックスによる比較です。例えば、/acs/mcp-server/ecs/acs/mcp-server/ecs/mcp/acs/mcp-server/ecs/sse の両方に一致します。

  • 同じパラメータ内で 3 つのパターンすべてを混在させることができます。

設定例

  • 許可リストモード:指定したサーバーのみアクセスを許可

    aliyun mcp-proxy --allowed-servers "ecs,oss"

    ecsoss のみにアクセスできます。他のサーバーへのリクエストでは、403 Forbidden が返されます。

  • ブロックリストモード:指定したサーバーへのアクセスを拒否

    aliyun mcp-proxy --blocked-servers "ram"

    ram 以外のすべてのサーバーにアクセスできます。

  • パスプレフィックスマッチングの使用

    aliyun mcp-proxy --allowed-servers "/acs/mcp-server/ecs,/acs/mcp-server/oss"

    名前ベースのマッチングと同じ効果で、より正確なパス制御が可能です。

アクセス制御の確認

プロキシの起動後、ターミナルにアクセス制御設定とサーバーステータスが表示されます。

MCP プロキシサーバーが起動しました
リッスン: 127.0.0.1:8088
リージョン: CN
アクセス制御:
  ブロックリスト (ブロックされたサーバー):
    - ram
  許可リスト (許可されたサーバー):
    - ecs
    - oss
利用可能なサーバー:
  - 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 (ブロック済み)

ブロックされたリクエストは、トラブルシューティングのためにプロキシログに記録されます。

セキュリティインシデント対応

プロキシの認証トークンが漏洩または悪用された疑いがある場合:

  • MCP Proxy サービスを停止します。

  • ローカル設定ファイルを削除します:rm ~/.aliyun/.mcpproxy_config

  • Alibaba Cloud コンソールで OAuth 認可を取り消します。

  • API 呼び出しログを確認し、異常な操作を特定します。

  • MCP Proxy を再設定し、新しいトークンを生成します。

パラメータ

aliyun mcp-proxy コマンドはこれらのパラメーターをサポートしています。

パラメータ

説明

デフォルト

--host

プロキシがリッスンするアドレスです。

127.0.0.1

--port

プロキシがリッスンするポートです。

8088

--no-browser

OAuth 認可時のブラウザ自動起動を無効にします。ヘッドレス環境では、CLI が認可 URL をターミナルに出力します。

無効

--oauth-app-name

既存の OAuth アプリケーションの名前です。アプリケーションの自動作成をスキップします。

aliyun-cli-mcp-proxy

--region-type

OpenAPI MCP サーバーのサービスサイトです。有効な値は CN (中国サイト) および INTL (国際サイト) です。

CN

--upstream-url

デフォルトのアップストリーム OpenAPI MCP サーバーアドレスを上書きします。

中国サイト: https://openapi-mcp.cn-hangzhou.aliyuncs.com
国際サイト: https://openapi-mcp.ap-southeast-1.aliyuncs.com



--allowed-servers

アクセス可能な MCP サーバーの許可リスト (カンマ区切り) です。サーバー名、ID、またはパスプレフィックスをサポートします。指定しない場合、すべてのサーバーが許可されます。詳細については、「サーバーアクセス制御の設定」をご参照ください。

無効

--blocked-servers

アクセス不可能な MCP サーバーのブロックリスト (カンマ区切り) です。サーバー名、ID、またはパスプレフィックスをサポートします。許可リストよりも優先されます。詳細については、「サーバーアクセス制御の設定」をご参照ください。

無効

よくある質問

OAuth 認証のために aliyun mcp-proxy を実行した後、「ERROR: OAuth flow returned empty RefreshToken」エラーが発生してプロキシの起動に失敗します。なぜこのエラーが発生するのですか?

これは通常、OAuth アプリケーションのタイプまたは ID が正しくないことが原因です。次の点を確認してください。

  • 使用する OAuth アプリケーションタイプが Native であること。

  • Alibaba Cloud アカウントまたは RAM ユーザーで認証していること。RAM ロールを引き受けた状態では、リフレッシュトークンは取得できません。

Dify で Connection Refused または Timeout エラーが発生します

次の設定を確認してください。

  1. --host を Docker ブリッジ IP またはホスト内部 IP に設定して、コンテナが mcp-proxy サービスにアクセスできるようにします。

  2. ECS セキュリティグループまたはホストファイアウォールは、Docker コンテナからプロキシポート (例: 8088) への TCP トラフィックを許可する必要があります。

mcp-proxy のログを表示する方法は?

systemd デプロイメントでリアルタイムログを表示するには、次を使用します。

sudo journalctl -u aliyun-mcp-proxy -f