MCPランド
UUID、数値、文字列、パスワード、ガウス分布、サイコロを振る、カードの描画など、さまざまな乱数生成ユーティリティを提供するモデル コンテキスト プロトコル (MCP) サーバー。
インストール
npm install mcp-randまたはグローバルにインストールします:
npm install -g mcp-randRelated MCP server: RandomUser MCP Server
特徴
UUIDジェネレータ
RFC 4122 バージョン 4 UUID を生成する
安全な乱数生成のためにNodeのネイティブ暗号モジュールを使用する
パラメータは必要ありません
乱数ジェネレータ
指定された範囲内で乱数を生成します
設定可能な最小値と最大値(両端を含む)
パラメータが指定されていない場合は、デフォルトで 0 ~ 100 の範囲になります。
ガウス乱数ジェネレータ
ガウス(正規)分布に従う乱数を生成します
0~1の範囲に正規化
パラメータは必要ありません
ランダム文字列ジェネレータ
設定可能な長さと文字セットでランダムな文字列を生成します
複数の文字セットをサポートします:
英数字 (デフォルト): A ~ Z、a ~ z、0 ~ 9
数字: 0~9
小文字: a〜z
大文字: AZ
特殊: !@#$%^&*()_+-=[]{};'"\|,.<>/?
設定可能な文字列の長さ(デフォルトは10)
パスワードジェネレーター
さまざまな文字タイプを組み合わせた強力なパスワードを生成します
各タイプ(大文字、小文字、数字、特殊文字)から少なくとも 1 文字が含まれていることを確認します。
設定可能な長さ(最小 8、デフォルト 16)
警告: パスワードはローカルで生成されますが、専用のパスワードマネージャーを使用することをお勧めします。
ダイスローラー
標準的なサイコロ表記法を使用して複数のサイコロを振る
「2d6」(6面ダイス2個)、「1d20」(20面ダイス1個)などの表記をサポートします。
各サイコロセットの個々のロールと合計を返します
複数の異なるサイコロセットを一度に振ることができます(例:「2d6」、「1d20」、「4d4」)
カード引き出し
標準的な52枚のカードデッキからカードを引く
base64エンコードを使用して、ドロー間のデッキの状態を維持します。
引いたカードと残りのデッキの状態を返します
デッキサイズまで任意の数のカードを引くことをサポートします
各ドローの前に利用可能なカードを適切にシャッフルする
使用法
CLIツールとして
npx mcp-randMCPクライアントとの統合
MCP クライアント構成に追加します:
{
"mcpServers": {
"mcp-rand": {
"command": "node",
"args": ["path/to/mcp-rand/build/index.js"],
"disabled": false,
"alwaysAllow": []
}
}
}使用例
// Generate UUID
const uuid = await client.callTool('generate_uuid', {});
console.log(uuid); // e.g., "550e8400-e29b-41d4-a716-446655440000"
// Generate random number
const number = await client.callTool('generate_random_number', {
min: 1,
max: 100
});
console.log(number); // e.g., 42
// Generate Gaussian random number
const gaussian = await client.callTool('generate_gaussian', {});
console.log(gaussian); // e.g., 0.6827
// Generate random string
const string = await client.callTool('generate_string', {
length: 15,
charset: 'alphanumeric'
});
console.log(string); // e.g., "aB9cD8eF7gH6iJ5"
// Generate password
const password = await client.callTool('generate_password', {
length: 20
});
console.log(password); // e.g., "aB9#cD8$eF7@gH6*iJ5"
// Roll dice
const rolls = await client.callTool('roll_dice', {
dice: ['2d6', '1d20', '4d4']
});
console.log(rolls);
/* Output example:
[
{
"dice": "2d6",
"rolls": [3, 1],
"total": 4
},
{
"dice": "1d20",
"rolls": [4],
"total": 4
},
{
"dice": "4d4",
"rolls": [2, 3, 2, 3],
"total": 10
}
]
*/
// Draw cards
const draw1 = await client.callTool('draw_cards', {
count: 5
});
console.log(draw1);
/* Output example:
{
"drawnCards": [
{ "suit": "hearts", "value": "A" },
{ "suit": "diamonds", "value": "7" },
{ "suit": "clubs", "value": "K" },
{ "suit": "spades", "value": "2" },
{ "suit": "hearts", "value": "10" }
],
"remainingCount": 47,
"deckState": "t//+///bDw=="
}
*/
// Draw more cards using previous deck state
const draw2 = await client.callTool('draw_cards', {
count: 3,
deckState: draw1.deckState
});
console.log(draw2);
/* Output example:
{
"drawnCards": [
{ "suit": "diamonds", "value": "Q" },
{ "suit": "clubs", "value": "5" },
{ "suit": "spades", "value": "J" }
],
"remainingCount": 44,
"deckState": "l//+//zbDw=="
}
*/貢献
開発のセットアップとガイドラインについては、 CONTRIBUTING.md を参照してください。
ライセンス
ISC