Random Mcp
Generate random values and probability distribution samples.
- Transport
- Not stated
- Package
- —
- Registry id
- io.github.eldesh/random-mcp
No install snippet on purpose. A working MCP config is a command, its arguments and an environment block — the last two are where API keys live, so this catalogue never stores them and cannot publish them. Follow the link above for the authors' own instructions.
Cloudflare Workers 上で動作する、乱数生成用の MCP(Model Context Protocol)サーバーです。Notion Agent などの MCP クライアントから、整数・浮動小数点数・重み付き選択・各種確率分布の標本を生成できます。
公式サイト: https://random-mcp.eldesh-tools.workers.dev/
目的
言語モデル自身に乱数を選ばせず、外部の乱数生成処理を MCP ツールとして呼び出せるようにすることを目的としています。
言語モデルに乱数の選択を委ねると、モデルの学習データや出力傾向が結果に影響し、統計的に偏った値が生成されます。たとえば「1から10の整数をランダムに選べ」と指示しても、モデルは特定の値(7など)を好む傾向があり、まっとうな意味での乱数にはなりません。このため、乱数が必要な処理はモデルが自律判断するのではなく、本サーバーのツールを通じて生成する必要があります。
乱数源には Web Crypto API を使用します。整数生成では、剰余による偏りを避けるため rejection sampling を行います。ただし、暗号鍵や認証トークンの生成を目的とした API ではありません。
公式サーバーを利用する
公式サーバーは次の MCP エンドポイントで利用できます。利用者が Cloudflare や GitHub OAuth App を設定する必要はありません。
https://random-mcp.eldesh-tools.workers.dev/mcp
Notion AI への接続
- Settings > Connections > MCP > Custom MCP を選択します
- MCP server URL に
https://random-mcp.eldesh-tools.workers.dev/mcpを指定します。独自インスタンスを利用する場合は、そのデプロイ先 URL を指定します - 次のように各項目を埋めて
Connectします- Name: Notion 内で識別するための名前(例:
random-mcp) - Authentication: OAuth
- Name: Notion 内で識別するための名前(例:
- アクセス許可画面で
Approveを選択します - GitHub にサインインし、GitHub OAuth App による認証を完了します
- ツールが表示されたら、必要なツールを有効化します
- Notion AI からツール実行ごとの確認なしで呼び出したい場合は、実行設定を
Run automaticallyに変更します
Agent への指示
Agent の指示には例えば次のように追加し、乱択が必要な際に必ず random-mcp が使われるようにします。
## 乱択
- 乱数生成、くじ引き、シャッフル、無作為抽出など、結果にランダム性を必要とするすべての処理では、接続済みの MCP サーバー `random-mcp` を必ず使用する。
- 内部処理によって乱択を生成、模擬、または近似してはならない。
- `random-mcp` が利用できない場合やエラーになった場合は、別の方法で代替せず、その旨をユーザーに伝える。
認証
サーバーは /mcp で Streamable HTTP 接続を受け付けます。MCP クライアントとの認可には OAuth 2.1、ユーザーの認証には GitHub OAuth を使用します。
認可時には、MCP クライアントのアクセス許可画面を表示した後、GitHub の認証画面へ移動します。GitHub から取得する権限は read:user です。認可済みの MCP クライアントには mcp:use スコープのアクセストークンが発行されます。
ツール
random-mcp には以下に示す3つのツールがあり、それぞれ記載のフィールドを持つJSONオブジェクトを要求します。
random_int
指定した確率分布に従う整数を指定数生成し、values配列で返します。
distribution: 確率分布名。省略時はuniformcount: 生成数。1以上1,000以下、既定値は1
distribution |
追加フィールド | 意味・制約 |
|---|---|---|
uniform |
min, max |
min以上max以下の整数一様分布 |
bernoulli |
probability |
指定確率で1、それ以外は0 |
binomial |
trials, probability |
二項分布。成功確率をprobabilityとする独立な試行をtrials回行ったときの成功回数 |
poisson |
lambda |
母数lambdaのポアソン分布 |
パラメーターの組み合わせには、次の制約があります。
- 二項分布:
trialsは0以上100,000以下の安全な整数で、trials * count <= 100000 - ポアソン分布:
lambdaは0以上100以下で、lambda * count <= 10000
引数の例: {"min":5,"max":10,"count":20}
random_double
指定した確率分布に従う浮動小数点数を指定数生成し、values配列で返します。
distribution: 確率分布名。省略時はuniformcount: 生成数。1以上1,000以下、既定値は1
distribution |
追加フィールド | 意味・制約 |
|---|---|---|
uniform |
min, max |
半開区間[min, max)の連続一様分布 |
normal |
mean, standard_deviation |
平均と標準偏差を指定した正規分布 |
lognormal |
mu, sigma |
log(X)が平均mu、標準偏差sigmaの正規分布に従う対数正規分布 |
exponential |
rate |
率rateの指数分布。rate > 0 |
引数の例: {"distribution":"normal","mean":0,"standard_deviation":1,"count":20}
random_choice
候補から指定数の要素を選択し、values配列で返します。
choices: 候補文字列の配列。1個以上1,000個以下weights: 各候補の相対的な重み。省略時は等確率count: 選択数。1以上1,000以下、既定値は1with_replacement: 復元抽出ではtrue、非復元抽出ではfalse。既定値はtrue
weightsを指定する場合は、choicesと要素数を一致させ、少なくとも一つを正の値にします。
非復元抽出では、countを候補数以下にする必要があります。重みを指定する場合は、正の重みを持つ候補数以下にする必要もあります。
引数の例: {"choices":["A","B","C"],"weights":[1,2,1],"count":2,"with_replacement":false}
ローカル開発
必要な環境
- Node.js 22.19.0以上
- npm
- GitHub アカウント
依存関係をインストールします。
npm install
ローカル用 GitHub OAuth App の作成
GitHub の Developer settings で、ローカル開発用の OAuth App を作成します。
次の値を設定します。
- Homepage URL:
http://localhost:8787 - Authorization callback URL:
http://localhost:8787/callback
作成後、Client ID と Client secret を取得します。このアプリケーションが GitHub に要求する OAuth スコープは read:user です。
環境変数
プロジェクト直下に .dev.vars を作成します。
From the project's README.