ramen について
ramen は、Kubernetes の複数ゾーンに独自の MCP ツールをデプロイするセルフホスト型プラットフォームです。Python のツールリポジトリをワーカー群として運用し、単一のコンソールで認証、権限、ガードレール、段階的なリリースを管理できます。
主な機能
- 01複数ゾーンへの MCP ワーカー配置
- 02GKE、EKS、AKS に対応
- 03スキーマ検証付きカナリアリリース
- 04ツール呼び出し前後のガードレール
- 05IDプロバイダーとグループロール管理
- 06負荷に応じたワーカー自動スケーリング
活用シーン
- 01クラウド Kubernetes クラスターへの Python ツール配置
- 02ツール呼び出しに対するユーザーやグループの権限設定
- 03段階的なリリース前のツール変更検証
- 04ゾーンの需要に応じたワーカー数の調整
MCP 対応
ワーカーは MCP クライアント向けに Streamable HTTP と gRPC を提供し、stdio が必要なクライアント向けのブリッジも備えます。設定したリポジトリのツール、リソース、プロンプトを公開します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://{ramen_edge}/mcpclaude mcp add --transport http ramen https://{ramen_edge}/mcp{"mcpServers":{"ramen":{"type":"http","url":"https://{ramen_edge}/mcp"}}}Cursor で開く{"servers":{"ramen":{"type":"http","url":"https://{ramen_edge}/mcp"}}}VS Code で開く{"mcpServers":{"ramen":{"type":"http","url":"https://{ramen_edge}/mcp"}}}{"mcpServers":{"ramen":{"serverUrl":"https://{ramen_edge}/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://{ramen_edge}/mcp認証が必要ツール
詳細

Python で MCP ツールを構築し、GKE、EKS、AKS 上の複数ゾーンにデプロイできます。
Rust MCP ノード+Python 3.12 ランタイムワーカー、エッジでは Streamable HTTP、内部では gRPC、ツールごとのガードレール、
Entra ID と Google Workspace によるサインイン、自動スケーリングを、1 つの FastAPI コンソールから管理できます。
ドキュメント:https://bkraad47.github.io/ramen/ · 始める · 仕組み · MCP リポジトリ · OAuth でクライアントを接続 · GCP にデプロイ · AWS · Azure · コントラクト · リリース
Streamable HTTP が入口です。 すべてのワーカーは
POST /mcpを提供します。インストール不要で、URL とベアラーヘッダーだけで利用できます。0.3.1 以降対応している gRPC サービスと同じポートで、同じガードを通じて提供されます。stdio のみを話すクライアント向けには、stdio ブリッジも引き続き利用できます。
ステータス。 現在のリリースは 0.8.0 です。2026-10-17 に GKE、EKS、AKS で実環境検証を実施し、各クラウドでスモークテスト、63 項目のリリーステスト、および 6 つの負荷テストシナリオを実行してから環境を破棄しました。CI では Linux と Windows の両方で、2 つのトランスポートを検証します。各実行で検証した内容と、テストのみの項目を記録した唯一の一覧は、トランスポート → 検証済みの内容をご覧ください。
独自の MCP ツールを構築し、複数ゾーンにデプロイできます。 Ramen は、ツール、リソース、プロンプトを含む Git リポジトリを、クラウドロードバランサーの背後にある MCP ワーカー群へと変換します。また、誰が何を呼び出せるか、シークレット、ガードレール、カナリアゲート、監査証跡を 1 つのコンソールで管理します。他社のサービスの前段に置くゲートウェイではなく、あなたのツールのためのプラットフォームです。各ワーカーは、1 つのポートで Streamable HTTP と gRPC を提供し、ベアラー認証、IP 許可リスト、ヘルスチェック、ログを備える Rust MCP ノードと、コードを pip でインストールして実行する Python 3.12 ランタイムを組み合わせています。ユーザーコードは、鍵を保持するプロセス内では決して実行されません。全体の構成、データモデル、各要素がその場所にある理由については、仕組みをご覧ください。
- Git → バケット → ワーカー。 デプロイ時にリポジトリをバケットへ同期し、ワーカーはコンテンツハッシュで読み込みます。Pod に Git 認証情報はありません。
- デフォルトでカナリアデプロイし、ゲートで制御します。 カナリアをデプロイし、
tools/listのスモークテストを実行して、ツールスキーマを安定版と比較します(breaking: trueと指定しない限り、破壊的変更があると停止します)。リポジトリのゴールデンケースを実行した後、安定版をデプロイします。失敗しても安定版には影響しません。 - 初日からマルチゾーンに対応します。 グループ → 環境 → ゾーン → ワーカーという構成です。ロードバランサーは
ramen-group/ramen-zoneに基づいてルーティングするため、どのゾーンでも同じクライアント設定を使えます。 - ガードレールはワーカー内で実行します。 ツールごとに、呼び出し前と結果取得後のチェックを有効にできます。チェックはツールと同じ Python ランタイムで実行されます。NVIDIA NeMo Guardrails のレール(決定論的または LLM によるもの。モデルとキーはお客様が指定)か、独自の
policy.pyを利用できます。ブロックされた呼び出しは内容を読み取れるツールエラーとなり、アクセスログにはレール名が記録されます。デフォルトではフェイルクローズです。 - 認証プロバイダーの判断を尊重し、管理者が上書きできます。 任意のクラウドで、Config ページから Microsoft Entra ID、Google Workspace、または任意の OIDC プロバイダーを追加できます。サインイン時に Graph または Cloud Identity からユーザーのグループを取得して、グループごとにロールへ割り当て、管理者が手動で設定した内容も保持します。
- グループごとのロールと、独自に定義できるロール。 Group Admin、Viewer、MCP User、またはこれらをベースにしたカスタムロール(Viewer をベースにした
analystなど)を、メンバーシップ、プロバイダールール、ツールごとのアクセス制御に使用できます。ロールはOAuth 専用にもできます。環境ごとに、各ツールを閲覧できるユーザーと呼び出せるユーザーを決定できます。ドリフトシグナルにより、呼び出し元が同じ呼び出しを繰り返していることを検知できます。 - Ramen によるオートスケーリング。 各ゾーンでは、管理者が設定する最大数まで、ワーカー数を 1 から増減します。負荷が高いときはコンソールがすばやくスケールアップし、負荷が落ち着くとスケールダウンします。3 つのクラウドすべてで同じように動作し、HPA は不要です。すべての操作は監査ログに記録されます。
- 3 つのクラウドに対応。 GKE、EKS、AKS 向けの Terraform と Helm を提供し、どのクラウドでも同じコンソールとガードレールを利用できます(クラウドへのデプロイ)。
- エンタープライズ向けの制御機能。
rmk_MCP キーとrmn_API キーはソルト付きハッシュとして保存されます。ゾーンごとの IP ルールはノードとクラウドエッジで適用され、シークレットが表示されることはありません。Redis によるスロットリング、すべての操作を記録する監査ログも備えています。 - ツールごとではなく、ゾーンごとに 1 つの Deployment。 ワーカーはグループ内のすべてのツールを読み込むため、30 個のツールをゾーンごとに 1 つの Deployment(カナリア稼働時は 2 つの Pod)で実行し、1 つのロードバランサーの背後に配置できます。オートスケーリングではツール数ではなく負荷に応じて Pod を追加します。
こちらから始めましょう · デモ用グループリポジトリ ramen-demo-mcp-group (グループをこのリポジトリに向けて Deploy を押します) · stdio ブリッジ ramen-mcp-bridge on PyPI (
uvx ramen-mcp-bridge@latest) · Docker Hub と GHCR のイメージ bkraad47/ramen-worker および bkraad47/ramen-console。
クイックスタート(ローカル、5 コマンド)
Docker(compose v2 対応)、uv、git、make が必要です。make up はリリースの 2 つのイメージを Docker Hub から取得し、約 1 分で完了します。代わりにソースからビルドする場合は make up BUILD=1 を実行します(3〜5 分)。
git clone https://github.com/bkraad47/ramen && cd ramen
make up # Firestore emulator + console https://localhost:8443 + one worker (localhost:8080: Streamable HTTP + gRPC)
make demo # zone, group `demo` from the demo repo, an rmk_ key, a canary deploy, then a tools/call
# PASS: demo_calculator_tool(2,3,add) -> 5 <- the success line
open https://localhost:8443 # self-signed cert; [email protected] + the generated password: grep ADMIN_PASSWORD deploy/local/.env
make down # stop and remove volumes
make demo は安全に再実行できます。既存のゾーン、グループ、環境がある場合は「exists」と応答し、実行のたびに新しいキーが生成されます。スタックに静的なシークレットはありません。make up は管理者パスワード、Fernet キー、MCP キー、管理者キー、セッションシークレットを deploy/local/.env(Git の追跡対象外)に生成します。また、scripts/check_secrets.py は、固定値が再び含まれた場合に CI を失敗させます。
クライアントを接続する
ワーカーは、URL(/mcp)と2つのルーティングヘッダーramen-group、ramen-zoneで構成されます。認証情報によって、呼び出しがどのユーザー名で実行されるかが決まります。
- グループキー(
rmk_):Authorization: Bearerに指定し、エージェントや自動化で使用します。HTTPに対応するクライアントであれば利用できます。 - ユーザーのサインイン:コンソール経由(OAuth 2.1、Ramenのパスワード、Entra ID、またはGoogleを使用)で行います。HTTP経由のClaude Code、またはブリッジ経由のstdioクライアントで利用できます。
各接続方法と表示されるページはこちらです: はじめに → クライアントを接続する · OAuthで接続する · トランスポート → 接続。クラウド環境では、グループページの MCPユーザーのサインイン方法カードに、インストール環境に応じた正確なコマンドが表示されます。
スクリーンショット
| ログイン | ダッシュボード、ゾーンおよびグループごとの負荷 |
|---|---|
![]() | ![]() |
| グループ:環境、デプロイジョブ、ゾーン/ワーカー、MCPキー | ストリーミングログを表示するデプロイジョブ |
|---|---|
![]() | ![]() |
| シークレット(名前のみ表示、値は表示されません) | ログ(MCP呼び出しごとにJSONの1行を記録、ダウンロード可能) |
|---|---|
![]() | ![]() |
| IDプロバイダー:グループ検索とロールルールに対応したEntra ID | カスタムロール(うち1つはOAuthのみ) |
|---|---|
![]() | ![]() |
| ゾーンのアクション:数、上限、最後の自動スケーリング判断 | グループごとの上限を表示するゾーンとワーカー |
|---|---|
![]() | ![]() |
トランスポートとセキュリティの概要
ワーカーは、すべての保護機能を共通の実装で備えた1つのポートを通じて、Streamable HTTP(POST /mcp、MCP仕様2025-06-18)と gRPC(ramen.v1.Mcp/Call)を使用します。そのため、チェックは両方のトランスポートで適用されるか、どちらにも適用されないかのいずれかです。TLSはロードバランサーで終端します。ノードは認証情報、プロバイダーのx-forwarded-forホップでの接続元範囲、ブロック対象の名前、サイズ上限、同時実行数の上限をチェックします。ランタイムはゾーン固有のクラウドIDでバケットにアクセスし、ランタイムとツールの間でガードレールが動作します。各ホップについて、保護する仕組みと検証される内容はこちらをご覧ください:
トランスポート。境界と対象外の項目:
脅威モデル。
クラウドにデプロイする
| 対象 | TerraformとHelmで構築するもの | ガイド |
|---|---|---|
| GCP | GKE Autopilot、Firestore、GCS、Secret Manager、グローバルHTTPS LB(GKE Gateway、ヘッダールーティングによるgRPC および Streamable HTTP)、Cloud Armor | ドキュメント · deploy/README.md |
| AWS | EKS、DynamoDB、S3、Secrets Manager、ALB(gRPCおよびHTTP/1.1ターゲットグループ)、WAF(TerraformまたはCloudFormation) | ドキュメント |
| Azure | AKS(ワークロードID)、Table Storage、Blob Storage、Key Vault、Let's Encrypt証明書を使用するEnvoy Gateway | ドキュメント |
| ローカル | docker compose:Firestoreエミュレーター、コンソール、ワーカー1台;プッシュごとにCI e2eを実行 | deploy/local/README.md |
各環境での起動手順は同じです:terraform apply → helm upgrade --install(リリースの公開イメージを使うか、make pushで独自のレジストリにプッシュ)→ コンソールでゾーンとグループを追加 → デプロイ。所要時間は約25分で、その大半はクラスターとロードバランサーの起動待ちです。エッジには、無料のsslip.ioホスト名を使って、公開信頼済み証明書が発行されます(AKSではLet's Encryptを使用)。そのため、クライアントではhttps://<public_hostname>/mcpを使用し、ブリッジには<public_hostname>:443 --tlsを指定すればよく、証明書のインポートは不要です。各クラウドで確認した実行内容はこちらです:
トランスポート → 検証される内容。
独自のツールを作成する
グループリポジトリとは、mcp/tools/<name>/<name>.py と <name>.json(および resources/、prompts/、requirements.txt)を含む任意の git リポジトリです。シークレットは {{$group.NAME}} として参照するか、mcp/env.yaml を通じてエクスポートします。トランスポートに関する情報がツールコードに漏れることはありません。output を宣言すると、ワーカーはそれを outputSchema として公開し、すべての結果を検証します。mcp/tests.yaml を追加すると、指定したテストケースがすべてのデプロイのゲートになります。mcp/guardrails.yaml を追加すると、NeMo のレールまたは policy.py が、ツールの実行前に引数を、ワーカーから出る前に結果をチェックします。ramen-demo-mcp-group から始めてください。コントラクト、ローカル開発、重量級の依存関係については、The MCP repo ·
Guardrails をご覧ください。
リポジトリ
| ディレクトリ | 内容 |
|---|---|
console/ | FastAPI + Jinja2 + HTMX の管理 UI と /api/v1。ワーカーへの gRPC クライアント |
node-rs/ | Rust MCP サーバーノード(tonic: ramen.v1.Mcp、ramen.v1.Admin、grpc.health.v1.Health。認証、CIDR、サイドカーのスーパーバイザー) |
runtime-py/ | Python 3.12 ランタイム(proto の読み込み、pip によるインストール、呼び出しの実行、シークレットの解決、ガードレールの実行) |
proto/ | ramen/v1/mcp.proto、admin.proto — トランスポートのコントラクト。Rust と Python のスタブの唯一のソース |
deploy/ | Compose、Helm チャート、Terraform(GCP、AWS、Azure)、CloudFormation |
glama/、mcpb/ | セルフコンテインドなディレクトリイメージと Smithery バンドル。どちらもブリッジのバージョンを固定します |
skills/ | クラウド運用エージェントのスキル:deploy-gcp、deploy-aws、rotate-keys、backup-restore、scale-zone |
tests/ | ブラックボックスの適合性テスト(gRPC + ブリッジ)、E2E テスト、クラウドテスト |
docs/ | このサイトのソース。すべてのコンポーネントで docs/CONTRACTS.md が拘束力を持ちます(§11 = トランスポート) |
アーキテクチャ:ARCHITECTURE.md · 変更点:CHANGELOG.md · バージョン:tracker · 対応するバージョン:Releases
開発
make up BUILD=1 # the compose stack from source instead of the published images
make test # runtime-py and console (pytest, 90% coverage gate) plus node-rs (fmt, clippy, test)
make test-harness # tests/: conformance + e2e (skips without a running stack)
make proto # regenerate Python stubs from proto/ (Rust stubs build via tonic-build)
make demo-worker # node + runtime locally without Docker
uv run --project docs --group docs mkdocs serve # docs at http://127.0.0.1:8000
コントリビューション
CONTRIBUTING.md をご覧ください。出典を明記したうえで、利用、フォーク、変更してください。独自の商用製品として名称を変更することは認められません。
ライセンス
BSD-3-Clause © 2026 Raad。LICENSE をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。









