🚀 Fundamental Labs/Minecraft Client
このライブラリは、MinecraftゲームのスキルとMCP統合のためのクライアントライブラリです。
Fairies MCPクライアント (https://fairies.ai/) も、ワンクリックでの直接接続をサポートしています。
✨ 主な機能
- Minecraftの完全制御:AIエージェントをMinecraftサーバーに接続し、ボットを制御できます。
- 30の検証済みスキル:一般的なMinecraftタスク用に事前に構築され、テストされたスキルが用意されています。
- 柔軟な接続:任意のMinecraftサーバーに接続でき、ボットごとに設定を行うことも可能です。
- 複数ボットのサポート:複数のボットを同時に管理できます。
- MCP標準:任意のMCPクライアント(Claude Desktopなど)と互換性があります。
📦 インストール
npxを介した直接呼び出し(推奨)
npx --y -- @fundamentallabs/minecraft-mcp
npmを介したインストール(推奨)
npm install -g @fundamentallabs/minecraft-mcp
ソースからのインストール
git clone https://github.com/FundamentalLabs/minecraft-mcp.git
cd minecraft-mcp/minecraft-client/mcp-server
npm install
npm run build
💻 使用例
サーバーの起動
任意のデフォルト接続設定でMCPサーバーを起動できます。
minecraft-mcp
minecraft-mcp -h play.example.com -p 25565
コマンドラインオプション
Options:
-p, --port <port> Minecraftサーバーのポート (デフォルト: 25565)
-h, --host <host> Minecraftサーバーのホスト (デフォルト: localhost)
--help ヘルプを表示
Claude DesktopまたはJSON設定とのローカルでの統合
Claude Desktopの設定ファイル (~/Library/Application Support/Claude/claude_desktop_config.json
on macOS) に追加します。
リモートインストールの場合(推奨)
{
"mcpServers": {
"minecraft": {
"command": "npx",
"args": ["-y", "-- @fundamentallabs/minecraft-mcp"]
}
}
}
ソースからローカルで実行する場合
{
"mcpServers": {
"minecraft": {
"command": "node",
"args": ["/path/to/minecraft-mcp/minecraft-client/mcp-server/dist/mcp-server.js"]
}
}
}
/path/to/minecraft-mcp
を、リポジトリをクローンした実際のパスに置き換えてください。
他のMCPクライアントとの統合
サーバーはstdioトランスポートを使用しており、任意のMCPクライアントと統合できます。
cd minecraft-client/mcp-server
npx @modelcontextprotocol/inspector node dist/mcp-server.js -- -p 25565
利用可能なスキル
ボット管理
移動とナビゲーション
- goToSomeone - 他のプレイヤーに移動します。
- goToKnownLocation - 特定の座標に移動します。
- runAway - 脅威から逃げます。
- swimToLand - 水中にいるときに最寄りの陸地に泳ぎます。
戦闘と狩り
- attackSomeone - プレイヤー、モブ、または動物を攻撃します。
- hunt - 動物やモブを狩ります。
資源収集
- mineResource - 特定のブロックや資源を採掘します。
- harvestMatureCrops - 農地から成熟した作物を収穫します。
- pickupItem - 地面からアイテムを拾います。
クラフトと精錬
- craftItems - クラフトテーブルを使用してアイテムをクラフトします。
- cookItem - かまどでアイテムを調理します。
- smeltItem - かまどでアイテムを精錬します。
- retrieveItemsFromNearbyFurnace - かまどから精錬されたアイテムを取得します。
インベントリ管理
- openInventory - ボットのインベントリを開きます。
- equipItem - 防具、道具、または武器を装備します。
- dropItem - インベントリからアイテムを捨てます。
- giveItemToSomeone - 他のプレイヤーにアイテムを渡します。
建築と農業
- placeItemNearYou - ボットの近くにブロックを配置します。
- prepareLandForFarming - 農業用の土地を整備します。
- useItemOnBlockOrEntity - ブロックまたはエンティティにアイテムを使用します。
サバイバル
- eatFood - 食べ物を食べて空腹度を回復します。
- rest - 休息して体力を回復します。
- sleepInNearbyBed - 近くのベッドを見つけて寝ます。
保管
- openNearbyChest - 近くのチェストを開きます。
楽しみ
視覚
- lookAround - 周囲を見回し、環境を観察します。
コミュニケーション
- readChat - サーバーから最近のチャットメッセージを読みます。
- sendChat - サーバーにチャットメッセージまたはコマンドを送信します。
建築
- buildSomething - Minecraftコマンドを使用して構造物を建設します(チート/オペレーター権限が必要)。静的なコマンド配列と動的なJavaScriptコードの両方をサポートします。
- buildPixelArt - 画像からMinecraftでピクセルアートを建設します(チート/オペレーター権限が必要)。画像を色付きブロックを使用してピクセルアートに変換します。最大サイズは256x256ブロックです。
💻 使用例
MCPクライアントと統合した場合、次のようにボットを制御できます。
await client.callTool('joinGame', { username: 'MyBot' });
await client.callTool('mineResource', { name: 'oak_log', count: 10 });
await client.callTool('craftItems', { item: 'oak_planks', count: 40 });
await client.callTool('goToKnownLocation', { x: 100, y: 64, z: 200 });
await client.callTool('buildSomething', {
buildScript: [
{ command: "fill", x1: 0, y1: 64, z1: 0, x2: 10, y2: 64, z2: 10, block: "stone" },
{ command: "fill", x1: 1, y1: 65, z1: 1, x2: 9, y2: 68, z2: 9, block: "oak_planks" },
{ command: "setblock", x: 5, y: 65, z: 1, block: "oak_door" }
]
});
await client.callTool('buildSomething', {
code: `
// ボットを中心にピラミッドを建設します
const size = 10;
for (let y = 0; y < size; y++) {
const level = size - y;
fill(pos.x - level, pos.y + y, pos.z - level,
pos.x + level, pos.y + y, pos.z + level, 'sandstone');
await wait(5); // レベル間の小さな遅延
}
log('ピラミッド完成!');
`
});
await client.callTool('buildPixelArt', {
imagePath: 'https://example.com/logo.png',
width: 64,
height: 64,
x: 0,
y: 80,
z: 100,
facing: 'north'
});
await client.callTool('readChat', {
count: 30,
timeLimit: 300,
filterType: 'chat'
});
await client.callTool('sendChat', {
message: 'こんにちは!私はボットです。'
});
await client.callTool('sendChat', {
message: '/time set day'
});
await client.callTool('sendChat', {
message: '/msg Steve I can help you build!',
delay: 1000
});
🔧 技術詳細
MCPサーバーは以下の特徴があります。
- AIクライアントとの通信にstdioトランスポートを使用します。
- 検証済みのスキルディレクトリからスキルを動的に読み込みます。
- 複数のボットインスタンスを管理します(現在はすべての操作に最初のボットを使用しています)。
- すべてのボットアクションに統一されたインターフェースを提供します。
必要条件
- Node.js >= 18.0.0
- 接続するMinecraftサーバー(Java Edition)
- MCP互換クライアント(Claude Desktopなど)
トラブルシューティング
"Skill implementation not found" エラー
MCPサーバーは、構築されたスキルを持つクローンされたリポジトリから実行する必要があります。以下のことを確認してください。
- 完全なリポジトリをクローンしました。
- minecraft-clientディレクトリで
npm install
を実行しました。
- minecraft-clientディレクトリで
npm run build
を実行しました。
- 正しいディレクトリからMCPサーバーを実行しています。
ボットが接続できない
- Minecraftサーバーが実行中で、アクセス可能であることを確認してください。
- ポートとホストが正しいことを確認してください。
- サーバーがボットが使用するMinecraftバージョンを許可していることを確認してください。
スキルが機能しない
- スキルを使用する前に、ボットが正常に生成されていることを確認してください。
- 一部のスキルには特定のアイテムや条件が必要です。
- ボットのコンソール出力にエラーメッセージがないか確認してください。
コントリビューション
コントリビューションは大歓迎です!プルリクエストを送信してください。
📄 ライセンス
MIT - 詳細はLICENSEファイルを参照してください。
サポート
問題や機能リクエストについては、GitHubのイシュートラッカー を使用してください。
テスト
Anthropic MPCインスペクターを使用してテストするには、以下のコマンドを実行します。
npx @modelcontextprotocol/inspector node ./dist/mcp-server.js