mcpField
R
ramen

ramen

認証済みおすすめリモート
bkraad47.github.ioクラウド・インフラ42 週間前に更新

ramen について

ramen は、Kubernetes の複数ゾーンに独自の MCP ツールをデプロイするセルフホスト型プラットフォームです。Python のツールリポジトリをワーカー群として運用し、単一のコンソールで認証、権限、ガードレール、段階的なリリースを管理できます。

主な機能

  1. 01複数ゾーンへの MCP ワーカー配置
  2. 02GKE、EKS、AKS に対応
  3. 03スキーマ検証付きカナリアリリース
  4. 04ツール呼び出し前後のガードレール
  5. 05IDプロバイダーとグループロール管理
  6. 06負荷に応じたワーカー自動スケーリング

活用シーン

  1. 01クラウド Kubernetes クラスターへの Python ツール配置
  2. 02ツール呼び出しに対するユーザーやグループの権限設定
  3. 03段階的なリリース前のツール変更検証
  4. 04ゾーンの需要に応じたワーカー数の調整

MCP 対応

ワーカーは MCP クライアント向けに Streamable HTTP と gRPC を提供し、stdio が必要なクライアント向けのブリッジも備えます。設定したリポジトリのツール、リソース、プロンプトを公開します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://{ramen_edge}/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://{ramen_edge}/mcp認証が必要

ツール

詳細

Project Ramen

Python で MCP ツールを構築し、GKE、EKS、AKS 上の複数ゾーンにデプロイできます。
Rust MCP ノード+Python 3.12 ランタイムワーカー、エッジでは Streamable HTTP、内部では gRPC、ツールごとのガードレール、
Entra ID と Google Workspace によるサインイン、自動スケーリングを、1 つの FastAPI コンソールから管理できます。

リリース CI ドキュメント Docker Hub PyPI ブリッジ ライセンス MCP

Glama 上の Ramen:スコア、ツール、掲載情報

ドキュメント: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のみ)
IDプロバイダーロール
ゾーンのアクション:数、上限、最後の自動スケーリング判断グループごとの上限を表示するゾーンとワーカー
自動スケーリングゾーン

トランスポートとセキュリティの概要

ワーカーは、すべての保護機能を共通の実装で備えた1つのポートを通じて、Streamable HTTP(POST /mcp、MCP仕様2025-06-18)と gRPC(ramen.v1.Mcp/Call)を使用します。そのため、チェックは両方のトランスポートで適用されるか、どちらにも適用されないかのいずれかです。TLSはロードバランサーで終端します。ノードは認証情報、プロバイダーのx-forwarded-forホップでの接続元範囲、ブロック対象の名前、サイズ上限、同時実行数の上限をチェックします。ランタイムはゾーン固有のクラウドIDでバケットにアクセスし、ランタイムとツールの間でガードレールが動作します。各ホップについて、保護する仕組みと検証される内容はこちらをご覧ください: トランスポート。境界と対象外の項目: 脅威モデル。

クラウドにデプロイする

対象TerraformとHelmで構築するものガイド
GCPGKE Autopilot、Firestore、GCS、Secret Manager、グローバルHTTPS LB(GKE Gateway、ヘッダールーティングによるgRPC および Streamable HTTP)、Cloud Armorドキュメント · deploy/README.md
AWSEKS、DynamoDB、S3、Secrets Manager、ALB(gRPCおよびHTTP/1.1ターゲットグループ)、WAF(TerraformまたはCloudFormation)ドキュメント
AzureAKS(ワークロード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 をご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。