Shenyu について
Apache ShenYuは、サービスのトラフィック転送とAPIガバナンスを担うJava製ゲートウェイです。拡張可能なプラグインチェーンに、プロトコル転送、トラフィック制御、動的設定、AI・MCP機能を組み合わせています。
主な機能
- 01拡張可能なリクエストプラグインチェーン
- 02HTTP、WebSocket、Dubbo、gRPCのルーティング
- 03サービス登録とディスカバリー
- 04認証、レート制限、フォールトトレランス
- 05動的設定とオブザーバビリティ
- 06AIプロキシとMCPサーバープラグイン
活用シーン
- 01HTTPやRPCのバックエンドへのリクエスト転送
- 02APIへの認証とレート制限の適用
- 03複数ゲートウェイレプリカの設定管理
MCP 対応
MCPサーバープラグインはSSEとStreamable HTTPでMCPを提供します。ShenYuはAIプロキシとプロンプト処理機能も備えています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
概要
Apache ShenYu は、サービスのプロキシ、プロトコル変換、API ガバナンスを行う Java ベースのゲートウェイです。拡張可能なプラグインチェーンがリクエストを処理し、ShenYu Admin が設定を管理してゲートウェイのレプリカに配信します。
主な機能
| 領域 | ShenYu が提供する機能 |
|---|---|
| プラグインのルーティングと拡張 | HTTP リクエスト用の順序付きプラグインチェーンを備え、該当する場合はセレクターとルールによるマッチングを行います。Spring Boot スターターでプラグインを選択でき、カスタム Java プラグイン、SPI 実装、WASM プラグイン API でゲートウェイを拡張できます。 |
| プロトコルとアップストリーム | HTTP サービスと Spring Cloud サービス、WebSocket 接続、Apache Dubbo および gRPC バックエンドに対応します。オプションの TCP および MQTT リスナーで追加のイングレスを提供します。SOFA および Tars ゲートウェイプラグインは、外部プラグインストアのスターターとして利用できます。 |
| 登録と検出 | クライアント SDK でサービスアドレスと API メタデータを Admin に登録します。レジストリとの統合でサービス検出に対応し、オプションの Kubernetes コントローラーで Ingress および Endpoints リソースを調整します。 |
| セキュリティとトラフィック制御 | WAF、署名、認証プラグイン、ロードバランシング、レート制限、Resilience4j および Sentinel によるフォールトトレランスに対応します。非推奨の Hystrix は外部プラグインとして引き続き利用できます(plugin-store-hystrix を参照)。 |
| キャッシュと変換 | インメモリまたは Redis を利用したレスポンスキャッシュ、URL の書き換え、リダイレクト、リクエストおよびレスポンスの変換に対応します。 |
| 動的設定 | Admin はプラグイン、セレクター、ルール、メタデータ、認証データを永続化します。デフォルトでは WebSocket 同期を使用し、HTTP ロングポーリング、ZooKeeper、Nacos、etcd も利用できます。Apollo は非推奨化リリース期間中も利用でき、外部拡張への移行を予定しています(Apollo の移行を参照)。Consul 同期は外部拡張として利用できます(plugin-store-consul を参照)。ゲートウェイの各レプリカは、更新をローカルキャッシュに適用します。 |
| オブザーバビリティ | Kafka および Elasticsearch を送信先とするものを含む、メトリクスおよびロギングプラグインに対応します。Admin からメールおよび DingTalk にアラートを送信できます。 |
| AI と MCP | AI プロキシ、プロンプト処理、トークン制限、機密語フィルタリング、AI リクエスト/レスポンス変換、SSE および Streamable HTTP に対応する MCP サーバープラグインを備えています。 |
アーキテクチャ

はじめに
英語ドキュメント、中国語ドキュメント、または公式ダウンロードをご利用ください。
Docker クイックスタート
Docker と OpenSSL を使って、ShenYu Admin、ゲートウェイ、サンプル HTTP サービスを起動します。以下のコマンドは同じシェルで実行してください。
サービスを起動する
docker network create shenyu
export SHENYU_JWT_SECRETKEY="$(openssl rand -hex 32)"
export SHENYU_SYNC_WEBSOCKET_TOKEN="$(openssl rand -hex 32)"
export SHENYU_LOCAL_KEY="$(openssl rand -hex 24)"
export SHENYU_LOCAL_SHA512KEY="$(printf %s "$SHENYU_LOCAL_KEY" | openssl dgst -sha512 -r | awk '{print $1}')"
docker run -d --name shenyu-admin --network shenyu -p 127.0.0.1:9095:9095 \
-e SHENYU_JWT_SECRETKEY -e SHENYU_SYNC_WEBSOCKET_TOKEN \
apache/shenyu-admin:latest
docker run -d --name shenyu-demo --network shenyu nginx:stable-alpine
docker run -d --name shenyu-bootstrap --network shenyu -p 127.0.0.1:9195:9195 \
-e SHENYU_SYNC_WEBSOCKET_URLS=ws://shenyu-admin:9095/websocket \
-e SHENYU_SYNC_WEBSOCKET_TOKEN \
-e SHENYU_HEARTBEAT_SERVERLISTS=http://shenyu-admin:9095 \
-e SHENYU_LOCAL_ENABLED=true -e SHENYU_LOCAL_SHA512KEY \
apache/shenyu-bootstrap:latest
Admin は http://localhost:9095 で、ゲートウェイは http://localhost:9195 でリッスンします。両方のサービスが起動するまで待ち、その後、ヘルスエンドポイントを確認します。
curl -fsS http://localhost:9095/actuator/health
curl -fsS http://localhost:9195/actuator/health
サンプルルートを設定する
次のリクエストでは、このゲートウェイの divide プラグインを設定し、/index.html をサンプルサービスに転送します。
curl -fsS http://localhost:9195/shenyu/plugin/selectorAndRules \
-H 'Content-Type: application/json' \
-H "localKey: ${SHENYU_LOCAL_KEY}" \
-d '{
"pluginName": "divide",
"selectorHandler": "[{\"upstreamUrl\":\"shenyu-demo:80\",\"protocol\":\"http\",\"weight\":100}]",
"conditionDataList": [
{"paramType": "uri", "operator": "match", "paramValue": "/index.html"}
],
"ruleDataList": [{
"ruleHandler": "{\"loadBalance\":\"random\"}",
"conditionDataList": [
{"paramType": "uri", "operator": "match", "paramValue": "/index.html"}
]
}]
}'
このリクエストで更新されるのはこのゲートウェイインスタンスだけであり、ルートは Admin に書き込まれません。ルートを一元管理し、永続化するには、デフォルトのインメモリ H2 データベースではなく、永続データベースを使って Admin で設定してください。
SOFA および Tars のサポートは、デフォルトのゲートウェイディストリビューションには含まれなくなりました。これらのプロトコルを実行するには、対応するプラグインストアのスターターをゲートウェイのクラスパスにインストールし、プロトコルの設定には既存の Admin メタデータ、クライアント登録 SDK、サンプルを引き続き使用してください。
ルートを確認する
curl -i http://localhost:9195/index.html
レスポンスには、ShenYu 経由で配信された NGINX のウェルカムページが含まれます。
Apache ShenYu が選ばれる理由
ShenYu(神禹)は、古代中国の君主である夏禹の尊称で、禹とも呼ばれています。人々のために黄河を三度渡り、洪水の治水に成功した人物として知られています。堯や舜と並び、古代中国の三大王の一人とされています。
この名前には、次の3つの理念が込められています。
- 中国文明の伝統的な美徳を広めます。
- ゲートウェイがトラフィックを制御する中核的な役割を担うことを表しています。
- ShenYu への敬意を表し、Apache Way に沿って、公平で公正、オープンかつ実力主義のコミュニティを目指す姿勢を示しています。
コミュニティとサポート
既知のユーザー
既知のユーザーのページには、登録順に登録ユーザーが掲載されています。
Apache ShenYu を利用している組織は、GitHub issue #68 を通じて登録できます。登録の対象はオープンソースユーザーのみです。
スター履歴
ライセンス
Apache ShenYu は、Apache License, Version 2.0 の下でライセンスされています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。