Awesome Mineflayer MCP について
Awesome Mineflayer MCPは、MineflayerのMinecraftボットを操作するMCPサーバーです。Java Editionサーバーに接続するエージェント向けに、ゲーム操作、状態確認、ボットのライフサイクル管理を提供します。
主な機能
- 0126グループに分かれた123の型付きツール
- 02移動、採掘、クラフト、戦闘
- 03スクリーンショットと模式マップ
- 04永続ウェイポイントと操作マクロ
- 05ポーリングとプッシュによるイベント配信
- 06ボット接続のライフサイクル管理
活用シーン
- 01Minecraftでのタスクをボットに実行させる
- 02インベントリ、位置、周辺エンティティの確認
- 03一人称視点でワールドを撮影する
- 04設定済みボットアカウントの再接続
MCP 対応
stdio経由で、Mineflayerボットの操作、状態確認、イベント、ライフサイクル管理をMCPクライアントに公開します。ガイド用プロンプトとボット関連リソースも利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y awesome-mineflayer-mcpMCP_DEFAULT_HOSTServer to auto-connect on startup (optional).MCP_DEFAULT_USERNAMEIn-game name (offline) or account email (microsoft).MCP_DEFAULT_AUTHシークレットAuth mode: offline or microsoft.MCP_DISABLE_GROUPSComma-separated tool-group keys to disable.MCP_READ_ONLYObserve-only mode (no world-mutating tools).MCP_ALLOWED_HOSTSComma-separated allow-list of hosts the bot may join.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
123掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| auth | enum | いいえ | 認証モード(デフォルトは offline)offline | microsoft | mojang |
| host | string | はい | サーバーのホスト名または IP |
| port | integer | いいえ | サーバーのポート(デフォルトは 25565) |
| brand | string | いいえ | |
| respawn | boolean | いいえ | 死亡時に自動でリスポーンする(デフォルトは true) |
| version | string | いいえ | プロトコルバージョンを強制指定します(例:"1.20.4")。省略すると自動検出します。 |
| password | string | いいえ | アカウントのパスワード(通常、Microsoft のデバイスコードフローでは省略します) |
| username | string | はい | アカウントのメールアドレス(microsoft)またはゲーム内名(オフライン) |
| keepAlive | boolean | いいえ | |
| logErrors | boolean | いいえ | |
| hideErrors | boolean | いいえ | |
| accessToken | string | いいえ | キャッシュされた MSA アクセストークン(デバイスコードフローをスキップ) |
| clientToken | string | いいえ | |
| viewDistance | enum | いいえ | far | normal | short | tiny |
| autoReconnect | boolean | いいえ | 予期せず切断された場合に自動再接続します(デフォルトは false) |
| physicsEnabled | boolean | いいえ | |
| profilesFolder | string | いいえ | Microsoft 認証トークンをキャッシュするディレクトリ |
| chatLengthLimit | integer | いいえ | |
| connectTimeoutMs | integer | いいえ | スポーンを待機する最大時間(ミリ秒、デフォルトは 30000) |
| disableChatSigning | boolean | いいえ | |
| defaultChatPatterns | boolean | いいえ | |
| checkTimeoutInterval | integer | いいえ | 接続タイムアウトと見なすまでの時間(ミリ秒) |
詳細
awesome-mineflayer-mcp
本番環境ですぐに使えるModel Context Protocolサーバーです。Mineflayer製のMinecraftボットを、LLM エージェントが単体での操作と同等に制御できます。移動、採掘、クラフト、インベントリ、戦闘、コンテナ、チャットなど、さまざまな操作を26グループ、合計123個の型付きツールとして公開します。さらに、ガイド付きプロンプト、ビジョン(実際の一人称視点のスクリーンショットと設計図マップ)、永続化されるウェイポイント、建築・採掘マクロ、ポーリングとプッシュの両方に対応したイベントストリーミング、ボットのライフサイクル管理も備えています。ツールの実行結果には、人間が読みやすいテキストと、機械可読なstructuredContentの両方が含まれます。
Mineflayer エコシステムを基盤としており、mineflayer-pathfinder(A*ナビゲーション)、mineflayer-pvp(戦闘)、mineflayer-collectblock(採集)、mineflayer-tool(ツールの自動選択)、mineflayer-auto-eat、mineflayer-armor-managerに対応しています。
要件
- Node.js ≥ 20(22.16で開発)
- 接続先のMinecraftサーバー(Java Edition)。ボットはサーバーのバージョンを自動検出します。サーバーをお持ちでない場合は、テスト用サーバーを用意するをご覧ください。
- オンラインモードのサーバーの場合:Microsoft アカウント(
auth: "microsoft")。
対応バージョン
| 対応 | |
|---|---|
| Minecraft(Java) | 同梱のmineflayer 4.37/minecraft-dataが対応する範囲(おおむね1.8 → 1.21.x)。バージョンは自動検出されます。明示的に指定する場合はversionを渡してください |
| Node.js | 20, 22(LTS) |
一部のツールは、新しいバージョンや機能でのみ動作します(例:elytra_fly、チャット署名)。バージョンが一致しない場合、outdated client/serverというメッセージとともにボットがキックされます。versionを明示的に指定してください。
インストール
npxで必要なときに実行できます(インストール不要です)。
npx awesome-mineflayer-mcp
…または、グローバルにインストールします。
npm install -g awesome-mineflayer-mcp
awesome-mineflayer-mcp
このサーバーはstdio経由でMCP通信を行うため、通常は手動で実行せず、MCPクライアントから起動します。
MCPクライアントでの使用
クライアントのMCPサーバー設定に追加してください。公開済みの最新ビルドを常に使えるよう、npxを使った方法をおすすめします。
Claude Desktop(claude_desktop_config.json)、Claude Code、Cursor、またはstdio対応のMCPクライアント:
{
"mcpServers": {
"mineflayer": {
"command": "npx",
"args": ["-y", "awesome-mineflayer-mcp"],
"env": {
"MCP_DISABLE_GROUPS": ""
}
}
}
}
グローバルにインストールした場合は、代わりに"command": "awesome-mineflayer-mcp"、"args": []を使用してください。
テスト用のMinecraftサーバーを用意する
サーバーをお持ちでない場合は、Dockerを使って一時的なオフラインモードのサーバーを起動できます(アカウント不要)。
# from a clone of this repo:
docker compose up -d # offline 1.20.4 server on localhost:25565
docker compose logs -f # wait for "Done (…)! For help, type "help""
…または、リポジトリを使わずにワンライナーで起動できます。
docker run -d --name mc -p 25565:25565 -e EULA=TRUE -e ONLINE_MODE=FALSE -e VERSION=1.20.4 itzg/minecraft-server
次に、connect_bot { host: "localhost", username: "DevBot", auth: "offline" }で接続します。停止するにはdocker compose down -v(またはdocker rm -f mc)を実行します。オフラインモードのサーバーをパブリックインターネットに公開しないでください。
自律動作(デフォルトアカウント)
手動操作なしで使うには、デフォルトアカウントを設定し、起動時にボットが自動接続するようにします。connect_botの呼び出しは不要です。対話形式のセットアップを実行してください。
npx awesome-mineflayer-mcp setup
サーバーのホスト/ポート、オフラインアカウントまたはMicrosoftアカウント、起動時に自動接続するかどうかを尋ねられ、その後~/.awesome-mineflayer-mcp/config.jsonに設定が書き込まれます(パスワードは保存されません)。Microsoft アカウントの場合、デバイスコードによるサインインは一度だけ行われ、トークンはprofilesFolderの下にキャッシュされるため、次回以降の起動時にプロンプトは表示されません。
起動時にサーバーが設定済みのアカウントへ自動接続します(get_connection_statusで確認できます)。エージェントは**connect_defaultを呼び出して接続または再接続したり、get_default_account**を呼び出してアカウント情報を確認したりできます。
ウィザードを使わずに設定する(環境変数)
MCP クライアントの設定だけでデフォルトアカウントを設定できます。ヘッドレス環境へのデプロイに便利です。環境変数は設定ファイルより優先されます。
{
"mcpServers": {
"mineflayer": {
"command": "npx",
"args": ["-y", "awesome-mineflayer-mcp"],
"env": {
"MCP_DEFAULT_HOST": "play.example.net",
"MCP_DEFAULT_USERNAME": "MyBot",
"MCP_DEFAULT_AUTH": "offline",
"MCP_AUTO_CONNECT": "true"
}
}
}
}
ヘッドレス環境で Microsoft 認証を使う場合は、まずローカルで setup を一度実行するか、事前にトークンがキャッシュされたディレクトリを MCP_PROFILES_FOLDER に指定してください。
設定(環境変数)
| 変数 | デフォルト | 用途 |
|---|---|---|
MCP_DISABLE_GROUPS | (none) | 無効にするツールグループのキーをカンマ区切りで指定します(カタログを参照)。ツールの一覧が多すぎると扱いにくいクライアント向けに、表示するツールを絞り込みます。 |
MCP_CHARACTER_LIMIT | 25000 | 1 回のツール呼び出しで返される最大文字数(上限を超える場合はマーカー付きで切り詰められます)。 |
MCP_EVENT_BUFFER | 1000 | メモリ内イベントリングバッファのサイズです。 |
MCP_THROTTLE_MS | 250 | プッシュされるリソース更新/ログ通知の最小間隔です。 |
MCP_PROXIMITY_RADIUS | 32 | 近接フィルターが適用されるイベント(エンティティの出現、音)の半径(ブロック数)です。 |
MCP_ACTION_TIMEOUT_MS | 60000 | 呼び出し元がタイムアウトを指定しない場合に、時間のかかるアクションに適用されるデフォルトのタイムアウトです。 |
MCP_DEFAULT_HOST / MCP_DEFAULT_PORT | — | 起動時に自動接続するデフォルトサーバーです。 |
MCP_DEFAULT_USERNAME | — | デフォルトのアカウント名(オフライン)またはメールアドレス(microsoft)です。 |
MCP_DEFAULT_AUTH | offline | デフォルトの認証モードです。offline または microsoft を指定します。 |
MCP_DEFAULT_VERSION | auto | デフォルトアカウントに使用するプロトコルバージョンを指定します。 |
MCP_DEFAULT_AUTO_RECONNECT | true | 接続が切れたときにデフォルトアカウントを自動再接続します。 |
MCP_AUTO_CONNECT | true† | 起動時にデフォルトアカウントを自動接続します(† デフォルトが設定されている場合)。 |
MCP_PROFILES_FOLDER | <home>/profiles | Microsoft 認証のトークンキャッシュディレクトリです。 |
AWESOME_MINEFLAYER_MCP_HOME | ~/.awesome-mineflayer-mcp | 設定とトークンキャッシュのディレクトリです。 |
MCP_READ_ONLY | false | 参照専用モードです。読み取り専用ツール(およびライフサイクル)のみを登録します。安全性を参照してください。 |
MCP_COMMAND_DENY | (admin verbs) | スラッシュコマンドのうち、run_command がブロックするものです。設定するとデフォルトが置き換えられます。空にするとすべてのコマンドが許可されます。 |
MCP_COMMAND_ALLOW | (none) | 設定した場合は厳密な許可リストとなり、指定したコマンドのみ実行されます(拒否リストは無視されます)。 |
MCP_ALLOWED_HOSTS | (any) | ボットが接続できるホストの許可リストをカンマ区切りで指定します。 |
MCP_CHAT_MIN_INTERVAL_MS | 0 | 送信するチャット/ウィスパー/コマンドの最小間隔です(スパム対策)。 |
MCP_ENABLE_RAW | false | 高度で安全でない raw プロトコルツールグループを有効にします(パケットの直接送信/購読)。 |
MCP_SCREENSHOT_WIDTH / _HEIGHT | 800 / 450 | get_screenshot のデフォルト画像サイズ(px)です。 |
MCP_SCREENSHOT_LOAD_MS | 2500 | スクリーンショットを撮影する前に、ワールドの描画を待つ時間です。 |
MCP_VIEW_DISTANCE | 4 | スクリーンショットのチャンク描画距離です。 |
MCP_SCREENSHOT_BROWSER_CHANNEL | (auto) | スクリーンショットに使用するブラウザチャネルです(chrome、msedge、chromium)。 |
MCP_SCREENSHOT_EXECUTABLE_PATH | (none) | スクリーンショットに使用するブラウザー実行ファイルのパスを明示的に指定します(チャネル設定より優先されます)。 |
例 — 使用頻度の低いグループを無効にする:
MCP_DISABLE_GROUPS=creative,villager,enchanting,settings
クイックスタート(ツールの流れ)
connect_bot{ host, username, auth }— 接続します(ボットの起動後に処理が完了します)。デフォルトアカウントを設定している場合は、この手順をスキップしてください。ボットは起動時に自動接続するため、get_connection_statusで状態を確認するだけで済みます。- 操作します:
goto、dig、collect_block、craft_item、pvp_attack、chat、… - 状態を確認します:
get_observationを呼び出すと、1回限りのスナップショット(バイタル、位置、インベントリ、周辺のエンティティ、新しいイベント)を取得できます。各ティックで、返されたevents.nextSinceを渡してください。または、get_state/get_inventory/list_entities/**get_events**を組み合わせるか、bot://*リソースを購読してください。 - 終了したら**
disconnect_bot**を呼び出します。
サーバーを使うのが初めてですか? **getting_started**プロンプト(プロンプトを参照)を使って、コンテキストに沿った手順を確認してください。
ブロック/アイテム/エンティティの引数には人間が読める名前("iron_ore"、"diamond_pickaxe"、"zombie")を指定できます。不明な名前を指定すると、類似候補が返されます。
認証
auth: "offline"(デフォルト) — オフラインモードのサーバー向けです。usernameにはゲーム内の名前を指定します。auth: "microsoft"—usernameにはアカウントのメールアドレスを指定します。デバイスコードのプロンプトが、msa_codeイベント/ログ通知として出力されます。トークンをキャッシュして次回以降のプロンプトを省略するには、**profilesFolder**を設定するか、キャッシュ済みのaccessTokenを渡してください。ヒント:npx awesome-mineflayer-mcp setupを一度実行してデバイスコードでサインインし、トークンをキャッシュすると、その後はサーバーが自動で接続します(自律動作を参照)。
ツールカタログ(123 個のツール、26 グループ)
生成済みの完全なリファレンス(すべてのツール、プロンプト、リソース):
docs/TOOLS.md。
グループキー(MCP_DISABLE_GROUPS 用)は角括弧内に示しています。
- ライフサイクル
[lifecycle]—connect_bot、connect_default、disconnect_bot、reconnect_bot、respawn、get_connection_status、get_default_account - 状態と検査
[state](読み取り専用) —get_observation(エージェントの観察ループ向け、1 回の呼び出しで取得するスナップショット)、get_state、get_inventory、list_players、list_entities、find_nearest_entity、get_entity_details、get_scoreboards、get_teams、get_boss_bars、get_control_states、get_chat_patterns、support_feature、pathfinder_status、get_settings、get_physics、get_loaded_plugins - ワールドクエリ
[world](読み取り専用) —get_block_at、find_blocks、get_cursor_target、get_blocks_in_region、wait_for_chunks_to_load - 移動と経路探索
[movement]—goto、set_goal、flee_from、follow_entity、stop_pathfinding、get_path_to、configure_movements、configure_pathfinder、set_control_state、clear_control_states、elytra_fly、wait_for_ticks、set_physics_enabled - 視点
[look]—look_at、look、look_at_entity - 採掘と建築
[digging]—dig、place_block、activate_block、activate_entity、swing_arm - 戦闘
[combat]—pvp_attack、attack_entity、pvp_stop、pvp_configure - インベントリとアイテム
[inventory]—equip_item、unequip_item、toss_item、set_quickbar_slot、consume、activate_item、click_window、move_slot_item、transfer_items - コンテナ
[containers]—open_container、read_open_container、container_deposit、container_withdraw、close_window - かまど/精錬
[furnace]—open_furnace、furnace_action、furnace_status、smelt_item - エンチャントと金床
[enchanting]—enchant_item、anvil_combine - 村人との取引
[villager]—open_villager、trade_with_villager - クラフト
[crafting]—list_recipes、craft_item - ブロック採集
[gathering]—collect_block、cancel_collect、set_collect_config - ツールの自動選択
[tool]—equip_tool_for_block、set_tool_chest_locations、get_best_tool - サバイバルの自動化
[survival]—autoeat_set_enabled、autoeat_configure、autoeat_eat、autoeat_cancel、autoeat_preview、armor_equip_all - ベッドと睡眠
[beds]—sleep、wake - 乗り物
[vehicles]—mount_entity、dismount、steer_vehicle - 釣り、本、看板
[fishing]—fish、cancel_fish、write_book、update_sign - チャットとコミュニケーション
[chat]—chat、whisper、run_command、tab_complete、register_chat_pattern、remove_chat_pattern、wait_for_message - 設定
[settings]—set_settings - クリエイティブモード
[creative]—creative_set_inventory_slot、creative_clear_inventory、creative_fly、creative_fly_to - ビジョン
[vision]—get_screenshot(実際の、一人称視点のテクスチャ付きゲーム描画)、render_map(依存関係のない模式図マップ) — ビジョンを参照 - ウェイポイント
[waypoints]—set_waypoint、list_waypoints、delete_waypoint、goto_waypoint(再起動後も保持) - 建築と採掘のマクロ
[build]—clear_region、dig_tunnel、dig_staircase、fill_region(キャンセル可能、複数ブロック対応) - イベントとテレメトリー
[events]—get_events、cancel_task - 生プロトコル
[raw]—send_packet、subscribe_packet、list_packet_subscriptions(上級者向け/安全性に注意。MCP_ENABLE_RAW=trueでない限り無効)
長時間実行されるアクション(goto、dig、collect_block、pvp_attack、fish、smelt_item、craft_item)は相互排他的で、キャンセル可能です。新しい移動/戦闘アクションを開始して前のアクションを置き換えるか、stop_pathfinding/pvp_stop/cancel_collect/cancel_fish/cancel_task を呼び出してください。
プロンプト
サーバーは、MCP プロンプトとしてガイド付きのパラメーター化されたワークフローを公開します。クライアントでは、スラッシュコマンドやテンプレートとして表示されます。エージェントが目的に応じて適切なツールを連携する方法を学べます。
getting_started— 概要:接続 → 観察 → 行動 → 復旧。gather_wood{ count?, logType? }— 木を見つけて、原木を集めます。mine_to_diamonds{ targetY? }— 安全に地下へ進み、枝状に採掘します。build_shelter{ material? }— 夜になる前に安全な空間を囲います。find_and_smelt{ input, fuel? }— 素材を採掘または収集し、精錬します。follow_and_defend{ player }— プレイヤーを追跡し、敵対モブと戦います。
ブロックやアイテムの引数では、接続先のワールドに基づく名前の自動補完が利用できます。
ビジョン — エージェントに見せる
2 つの補完的なツールが、MCP の画像コンテンツとして PNG 画像を返します。これにより、ビジョン対応モデル(および人間)が JSON から再構築するのではなく、ワールドを直接見られます。
get_screenshot — 実際のゲーム描画
ボットが見ているものを、テクスチャ付きの実際の Minecraft 描画としてキャプチャします。一人称視点(デフォルト)または三人称の周回視点で、ゲーム内のスクリーンショットと同じ画像が得られます。内部では、prismarine-viewer が実際のワールドを描画し(クライアント側 WebGL)、ヘッドレスブラウザーがスクリーンショットを撮影します。引数:width、height、firstPerson、waitMs、viewDistance。
セットアップ(一度のみ)。 レンダラーの依存パッケージはオプションのパッケージとして同梱されており(npm install でデフォルトでインストールされます)。ほかに必要なのはブラウザーだけです。
- Google Chrome または Microsoft Edge がすでにインストールされている場合:作業は不要です。自動的に使用されます。
- それ以外の場合は、
npx playwright install chromiumを一度実行してください。 - ヘッドレスサーバーの場合:Chrome/Chromium をインストールするか、
MCP_SCREENSHOT_EXECUTABLE_PATH/MCP_SCREENSHOT_BROWSER_CHANNELを設定してください。
依存パッケージまたはブラウザーを利用できない場合、get_screenshot は手順を示す明確な UNSUPPORTED エラーを返します。サーバーのほかの機能には影響しません。レンダラーパッケージは純粋な JS(ネイティブビルド不要)ですが、可能な限り軽量なインストールを優先し、スクリーンショットが不要な場合は npm install --omit=optional を使用してください。
render_map — 依存関係のない概略図
ブロックデータから描画する軽量な色付きトップダウンマップ(または mode:"slice" の断面図)です。組み込みの PNG エンコーダーを使用するため、追加の依存パッケージは一切不要です。ミニマップや概要表示に適しており、スクリーンショット用の追加パッケージがインストールされていない場合にも使えます。北(−Z)が上です。ボットは向きを示す目盛り付きの白い点、プレイヤーはシアン、敵対モブは赤、友好モブは黄色、アイテムはグレーで表示され、ブロックの凡例も含まれます。
安全性とガードレール
エージェントがボットを自律的に操作する際に重要となる、妥当なデフォルト設定です(特にデフォルトアカウントを使用する場合)。
- コマンドポリシー。
run_commandは、デフォルトでサーバー管理用の動詞(op、deop、ban、kick、stop、whitelist、およびexecute/function/scheduleラッパーなど)をブロックします。通常のゲームプレイ用コマンド(/tp、/time、/giveなど)は許可されます。MCP_COMMAND_DENYで上書きできます(デフォルト設定を置き換えます。空の場合はすべて許可)。または、MCP_COMMAND_ALLOWで制限できます(厳密な許可リスト)。これは多層防御としてのベストエフォートであり、強固な境界ではありません。最初のコマンド動詞に基づいて判定するため、オペレーター権限を持つボットが回避手段を見つける可能性があります。信頼できない環境や自律運用の環境では、MCP_COMMAND_ALLOWとMCP_READ_ONLYを使用し、ボットのアカウントにオペレーター権限を付与しないことを推奨します。注: プレイヤーからのチャットはイベントとしてエージェントに配信されます。信頼できない入力として扱ってください。 - ホスト許可リスト。
MCP_ALLOWED_HOSTSは、connect_bot/reconnect_botで参加できるサーバーを制限するため、エージェントがボット(およびキャッシュされたトークン)の接続先を任意のアドレスに変更できないようにします。 - 読み取り専用モード。
MCP_READ_ONLY=trueを設定すると、接続管理に加えて、観察用ツールのみが登録されます。つまり、見るだけで変更はできません。 - レート制限。
MCP_CHAT_MIN_INTERVAL_MSは、チャットやコマンドの送信間隔を空け、スパムによるキックを防ぎます。 - 秘密情報の漏えい防止。 パスワードやアクセストークンがディスクに保存されることはなく、接続エラーメッセージからも伏せられます。
リソース
リソースサブスクリプションに対応したクライアント向けの、サブスクリプション可能な JSON リソースです。
bot://state— 自身の最新スナップショット(位置、バイタル、ゲームモード、時間、天候、手持ちアイテム、操作状態)bot://inventory— アイテム、防具、オフハンド、選択中のスロットworld://entities— 追跡中の最寄りのエンティティ最大 50 件world://players— サーバー上のプレイヤー一覧bot://events— 最近のイベントの末尾bot://waypoints— 保存済みの名前付きウェイポイント
オンデマンドで検索するための、パラメーター付きリソーステンプレートもあります:block://{x}/{y}/{z} および entity://{id}。
イベント
ゲームイベントは、次の 2 つの方法で配信されます。
- プル:
get_events({ since, types, limit })はリングバッファからイベントを取り出します。返されたnextSinceを渡すと、新しいイベントのみを読み取れます。dropped: trueは、指定したsince以降にバッファーがあふれたことを示します。 - プッシュ: サブスクライブ済みのリソースは、スロットリングされた
notifications/resources/updatedを出力します。特筆すべき行(チャット、死亡、キック、エラー、msa_code)はsendLoggingMessage経由で転送されます。
高頻度の観測情報(移動、ティックごとの更新、ブロック/エンティティの更新、時間)は、意図的にバッファーに保存されません。必要に応じて get_state と読み取り専用ツールから取得してください。
開発(ソースから)
git clone https://github.com/G0Osey99/awesome-mineflayer-mcp.git
cd awesome-mineflayer-mcp
npm install
npm run build # tsc -> dist/
npm run typecheck # tsc --noEmit
npm test # vitest (unit tests for the pure logic)
npm run dev # tsx src/index.ts (run from source, no build step)
アーキテクチャと設計の根拠について詳しくは、docs/superpowers/specs/2026-06-28-mineflayer-mcp-server-design.md を参照してください。
src/
index.ts entry (stdio transport, graceful shutdown, crash guards)
server.ts builds the McpServer, registers tool groups + resources + prompts
config.ts env + constants + safety policy (groups, read-only, command/host allow-lists)
bot/ manager (lifecycle FSM), plugins, events, wire-events, state, windows, action-locks
tools/ one module per tool group (+ registry.ts)
prompts/ guided multi-tool workflows
resources/ MCP resources + push notifications
util/ errors, format, result, resolve (name→id + fuzzy), serialize, async, redact
schemas/ shared Zod fragments
ツールやグループの追加方法、およびローカルテストサーバーの実行方法については、CONTRIBUTING.md を参照してください。
公開(メンテナー向け)
v* タグをプッシュすると、.github/workflows/ci.yml を通じて npm、GitHub Container Registry(Docker)、MCP Registry への公開と、Smithery の更新が行われます。npm version によって、package.json、src/config.ts、server.json の内容が同期されます。
npm version minor # bumps + syncs versions, commits, and tags
git push --follow-tags # triggers the release jobs
初回セットアップの全手順と、リリースの手順ごとのチェックリストは RELEASE.md に記載されています。公開される npm パッケージに含まれるのは dist/、README.md、LICENSE、NOTICE のみです(files フィールドを参照してください)。
トラブルシューティング
接続に失敗した場合、詳細不明な INTERNAL ではなく、具体的なエラーコードと対処法が返されるようになりました。よくあるケースは次のとおりです。
| 症状/エラー | 考えられる原因 | 対処法 |
|---|---|---|
CONNECT_REFUSED (ECONNREFUSED) | ホスト/ポートが間違っている、またはサーバーが起動していない | host/port を確認し、サーバーの起動が完了していることを確認します(デフォルトのポートは 25565 です)。 |
CONNECT_REFUSED (ENOTFOUND) | ホスト名を解決できない | サーバーアドレスを再確認します。 |
ONLINE_MODE/「未検証のユーザー名」 | サーバーがオンラインモードで、ボットがオフライン認証を使用している | auth: "microsoft" を使用するか、サーバーで online-mode=false を設定します。 |
VERSION_MISMATCH/「クライアント/サーバーのバージョンが古い」 | 自動検出されたバージョンが間違っている | 明示的に version を指定します(例:"1.20.4")。 |
| チャットが拒否される/「セキュアプロファイル」 | サーバーが署名付きチャットを要求している | disableChatSigning: true を指定して接続します。 |
AUTH_FAILED | Microsoft トークンが古い、または無効 | npx awesome-mineflayer-mcp setup を再実行するか、profilesFolder のキャッシュを消去して、再度サインインします。 |
run_command で FORBIDDEN | ポリシーによりコマンドがブロックされている | 安全性を参照し、MCP_COMMAND_DENY/MCP_COMMAND_ALLOW を調整します。 |
connect_bot で FORBIDDEN | ホストが許可リストにない | MCP_ALLOWED_HOSTS に追加します(または設定を解除して、すべてのホストを許可します)。 |
NO_PATH | Pathfinder が目的地まで到達できない | 近づく、障害物を取り除く、または configure_movements の制限を緩めます。 |
| Microsoft のデバイスコードプロンプト | 初回の MSA サインイン | msa_code イベントに表示される URL にアクセスします。トークンをキャッシュするには profilesFolder を設定します。 |
Microsoft 認証での初回サインインは、一度だけ対話形式で行います。npx awesome-mineflayer-mcp setup を実行してサインインし、トークンをキャッシュしてください。
Docker
ヘッドレス/自律型デプロイ用に Dockerfile が含まれています(MCP_DEFAULT_* を使用してデフォルトのアカウントを設定します)。
docker build -t awesome-mineflayer-mcp .
設定と Microsoft トークンキャッシュを保持するには、/root/.awesome-mineflayer-mcp にボリュームをマウントします。(サーバーは stdio 経由で MCP を使用するため、コンテナはクライアントが起動する用途よりも、自律型のデフォルトアカウント実行に適しています。)
制限事項
- サーバープロセスごとにボットは 1 つです(設計上、単一セッションです)。
- 評価にはシード済みのワールドが必要です。 Minecraft のライブワールドは決定論的ではないため、
eval/の評価セットは、ドキュメント化されたシード済みフィクスチャを対象としています(eval/fixture.mdを参照)。任意のライブサーバーに対して検証することはできません。 cancel_fishはベストエフォートです(Mineflayer には正式な釣り中断機能がありません)。- Microsoft 認証の初回実行では、対話形式のデバイスコードが必要です(
msa_codeイベントとして表示されます)。キャッシュするにはprofilesFolderを使用します。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。