Claude・Cursor・VS Code・Gemini CLI・Codex CLI から ShogiBoardQ の機能を使う
ShogiBoardQ は Model Context Protocol(MCP)のサーバーを同梱しています
MCP は、AI クライアント(Claude Desktop、Claude Code、Cursor、VS Code の GitHub Copilot、Gemini CLI、Codex CLI など)が外部のツールを呼び出すための共通規格です。ShogiBoardQ の MCP サーバー(shogiboardq-mcp)を登録すると、「この棋譜を CSA に変換して」「この局面を 10 秒解析して」「3手詰を5問作って」のような依頼を AI クライアントに話しかけるだけで、クライアントが ShogiBoardQ の機能を呼び出します。
MCP 仕様の最新版(2026-07-28)と、従来の版(2024-11-05〜2025-11-25)の両方で接続できるため、新旧どちらのクライアントからも使えます。
次のツールは GUI を起動せずに動きます(内部では shogiboardq-cli を実行します)。
| ツール | 内容 |
|---|---|
| convert_kifu | 棋譜ファイル/文字列を KIF・KI2・CSA・JKF・USI・USEN・SFEN 列に変換 |
| validate_sfen | SFEN の妥当性、手番、持駒、王手の有無、合法手数 |
| list_engines | ShogiBoardQ に登録済みの USI エンジン |
| analyze_position / analysis_status / analysis_result | 登録エンジンによる局面解析(MultiPV 対応、ジョブ方式) |
| analyze_kifu / kifu_analysis_status / kifu_analysis_result | 棋譜の本譜を全手解析。範囲指定・進捗・結果ページ取得・取消に対応 |
| search_mate / mate_status | go mate 対応エンジンによる詰み探索(ジョブ方式) |
| generate_tsume / tsume_generation_status / stop_tsume_generation | 詰将棋局面の自動生成(ジョブ方式) |
| verify_tsume | 余詰検査(唯一解 / 余詰あり / 不詰 / 手数違い / 判定不能) |
| render_board_image | SFEN から盤面の PNG 画像を作成 |
render_board_image の出力例:GUI と同じ駒画像・配色で描画され、最後の指し手を強調表示できる。「手番」などの表示と段の表記は ShogiBoardQ の表示言語・棋譜表記の設定に従う
ShogiBoardQ を --automation オプション付きで起動すると、次のツールで画面上の局面や棋譜を読み書きできます。
| ツール | 内容 |
|---|---|
| get_app_state | 状態(待機・対局中・解析中など)、現在手数、棋譜ファイル名、未保存の有無、開いているダイアログ |
| get_position / set_position | 現在局面の SFEN と手順の取得、局面の設定 |
| load_kifu / save_kifu / get_kifu / goto_ply | 棋譜の読み込み・保存・取得(形式指定、手数範囲指定)・手数移動 |
| list_actions / trigger_action | メニュー動作の一覧と実行(許可リスト方式) |
| capture_screenshot | メインウィンドウまたはダイアログのスクリーンショットを PNG 保存 |
| list_dialogs / close_dialog / get_widget_text | 開いているダイアログの一覧、閉じる、ラベル・入力欄・テーブル・盤面内容と座標の取得 |
| list_menu_actions / select_menu_action | 定跡・局面集履歴・保存済みレイアウトの動的メニューを取得・操作 |
| menu_favorites | メニューのお気に入り取得・登録・解除・並べ替えと保存 |
| click_branch_node | 分岐ツリーのノードへ移動 |
| click_board_square / click_dialog_button | 盤面・駒台のクリック、問題選択・成り選択などのボタン操作。盤の回転や大きさに追従します |
| show_dock / click_widget / set_widget_value / click_table_cell | ドック表示、ボタン・設定・棋譜と読み筋テーブルの操作、貼り付け欄などへの文字入力 |
| edit_table_cell | 対局情報などの編集可能なセルへの文字入力。入力を確定せずに保持する操作にも対応 |
| get_clipboard | クリップボードのテキスト、画像の有無とサイズを取得(ほかのアプリと共有するので、SHOGIBOARDQ_ALLOW_UNRESTRICTED_UI=1 のときだけ使えます) |
| list_docks / configure_dock | ドックの状態確認、切り離し、上下左右への配置、タブ化、表示・非表示、タイトルバーのドラッグ |
リソースとして、現在局面の SFEN(shogiboardq://position/current)、現在の棋譜の KIF テキスト(shogiboardq://kifu/current)、登録エンジン(shogiboardq://engines)も提供します。
ビルド済みの ShogiBoardQ と Python の mcp パッケージが必要です
MCP サーバーは build/ShogiBoardQ(GUI)と build/shogiboardq-cli(GUI 不要のコマンド)を使います。Windows 版の配布 ZIP には ShogiBoardQ.exe と shogiboardq-cli.exe の両方が入っているので、ビルドせずに使えます。下の SHOGIBOARDQ_EXECUTABLE に、ZIP を展開したフォルダの ShogiBoardQ.exe を指定してください。Linux・macOS の配布パッケージには shogiboardq-cli が含まれていないため、ソースからビルドしてください。手順は Linux・macOS・Windows のビルド手順を参照してください。
git clone --recurse-submodules https://github.com/hnakada123/ShogiBoardQ.git
cd ShogiBoardQ
cmake -B build -S . -G Ninja
cmake --build build
./build/shogiboardq-cli version # {"ok":true,"version":"..."} が表示されれば OK
Python 3.10 以上と公式の mcp パッケージ 2.x(2.0 以上、3.0 未満)が必要です。リポジトリの mcp/ ディレクトリにサーバーがあります。
OS のパッケージ(Arch Linux の python-mcp など)が 1.x の場合は、pip で 2.x を入れてください。1.x のまま起動すると、必要な版を表示して終了します。
# mcp パッケージだけ入れる場合(サーバーは PYTHONPATH で参照)
pip install "mcp>=2,<3"
# サーバーごとインストールする場合
pip install -e mcp
解析・詰み探索・詰将棋生成・余詰検査は、ShogiBoardQ の「設定」→「エンジン設定」で登録した USI エンジンを名前で指定します。任意の実行ファイルパスは受け付けません。詰み探索・詰将棋生成・余詰検査には go mate に対応したエンジン(KomoringHeights など)を登録してください。
クライアントの設定でサーバーに渡す環境変数です。最低限 SHOGIBOARDQ_EXECUTABLE を指定します。
| 変数 | 意味 |
|---|---|
SHOGIBOARDQ_EXECUTABLE | ShogiBoardQ のパス。アプリ操作ツールで起動中のアプリが無いとき --automation 付きで起動します。同じディレクトリの shogiboardq-cli も自動で見つけます |
SHOGIBOARDQ_CLI | shogiboardq-cli のパス(別の場所に置いた場合) |
SHOGIBOARDQ_ALLOWED_DIRS | 読み書きを許可するディレクトリ(Linux/macOS は : 区切り、Windows は ; 区切り)。既定はホームディレクトリ。その下の . で始まるファイル・フォルダは使えません(使うときはそのフォルダ自体を指定します) |
SHOGIBOARDQ_OUTPUT_DIR | スクリーンショットなどの既定の出力先。既定はサーバーごとに一時ディレクトリに作る、自分だけが開けるフォルダ(shogiboardq-output-*) |
SHOGIBOARDQ_AUTOMATION_SOCKET | 自動化ソケットのパス(アプリ側の --automation-socket と共通) |
SHOGIBOARDQ_QUIT_APP_ON_EXIT | 1 にすると、サーバーが起動したアプリをサーバー終了時に閉じます(既定は残す) |
SHOGIBOARDQ_ALLOW_UNRESTRICTED_UI | 1 にすると、汎用の GUI 操作ツール(trigger_action・click_widget・set_widget_value・click_table_cell・edit_table_cell・click_dialog_button・select_menu_action)と、ほかのアプリと共有するクリップボードを読む get_clipboard を使えます。既定は無効です。GUI 経由のファイル操作やエンジン登録にはディレクトリ制限が及ばないため、アプリと同じ権限を与える設定です |
PYTHONPATH | pip install -e mcp をしていない場合、リポジトリの mcp ディレクトリを指定します |
どのクライアントでも「python3 -m shogiboardq_mcp を stdio で起動し、環境変数を渡す」だけです
以下は Linux の例です。/path/to/ShogiBoardQ はリポジトリの場所に置き換えてください。Windows では python3 を python に、パスを C:\\Users\\...\\ShogiBoardQ\\build\\ShogiBoardQ.exe のように書き換えます。設定後はクライアントを再起動(または MCP サーバーを再読み込み)してください。
プロジェクト内で次のコマンドを実行します(--scope user を付けると全プロジェクトで有効)。-- より後ろがサーバーの起動コマンドです。
claude mcp add shogiboardq \
--env SHOGIBOARDQ_EXECUTABLE=/path/to/ShogiBoardQ/build/ShogiBoardQ \
--env PYTHONPATH=/path/to/ShogiBoardQ/mcp \
-- python3 -m shogiboardq_mcp
claude mcp list # 接続状態を確認
「設定」→「開発者」→「構成を編集」で開く claude_desktop_config.json(macOS: ~/Library/Application Support/Claude/、Windows: %APPDATA%\Claude\)に追記します。
{
"mcpServers": {
"shogiboardq": {
"command": "python3",
"args": ["-m", "shogiboardq_mcp"],
"env": {
"SHOGIBOARDQ_EXECUTABLE": "/path/to/ShogiBoardQ/build/ShogiBoardQ",
"PYTHONPATH": "/path/to/ShogiBoardQ/mcp"
}
}
}
}
プロジェクトの .cursor/mcp.json(全プロジェクト共通なら ~/.cursor/mcp.json)に記述します。
{
"mcpServers": {
"shogiboardq": {
"command": "python3",
"args": ["-m", "shogiboardq_mcp"],
"env": {
"SHOGIBOARDQ_EXECUTABLE": "/path/to/ShogiBoardQ/build/ShogiBoardQ",
"PYTHONPATH": "/path/to/ShogiBoardQ/mcp"
}
}
}
}
ワークスペースの .vscode/mcp.json に記述します。VS Code ではトップレベルのキーが servers です。ユーザー全体で使う場合はコマンドパレットの「MCP: Open User Configuration」から同じ形式で追加します。
{
"servers": {
"shogiboardq": {
"type": "stdio",
"command": "python3",
"args": ["-m", "shogiboardq_mcp"],
"env": {
"SHOGIBOARDQ_EXECUTABLE": "/path/to/ShogiBoardQ/build/ShogiBoardQ",
"PYTHONPATH": "/path/to/ShogiBoardQ/mcp"
}
}
}
}
コマンドで登録するか、~/.gemini/settings.json(プロジェクトなら .gemini/settings.json)の mcpServers に記述します。
gemini mcp add -s user \
-e SHOGIBOARDQ_EXECUTABLE=/path/to/ShogiBoardQ/build/ShogiBoardQ \
-e PYTHONPATH=/path/to/ShogiBoardQ/mcp \
shogiboardq python3 -m shogiboardq_mcp
{
"mcpServers": {
"shogiboardq": {
"command": "python3",
"args": ["-m", "shogiboardq_mcp"],
"env": {
"SHOGIBOARDQ_EXECUTABLE": "/path/to/ShogiBoardQ/build/ShogiBoardQ",
"PYTHONPATH": "/path/to/ShogiBoardQ/mcp"
}
}
}
}
同じホストの Codex クライアントは ~/.codex/config.toml を共有します。コマンドで登録するか、下記の設定を記述してください。python3 は mcp パッケージをインストールした Python を指定します。仮想環境の場合は Python の絶対パスを使ってください。
codex mcp add shogiboardq \
--env SHOGIBOARDQ_EXECUTABLE=/path/to/ShogiBoardQ/build/ShogiBoardQ \
--env PYTHONPATH=/path/to/ShogiBoardQ/mcp \
-- python3 -m shogiboardq_mcp
[mcp_servers.shogiboardq]
command = "python3"
args = ["-m", "shogiboardq_mcp"]
startup_timeout_sec = 30
env_vars = ["DISPLAY", "WAYLAND_DISPLAY", "XDG_RUNTIME_DIR", "XAUTHORITY", "DBUS_SESSION_BUS_ADDRESS", "XDG_CONFIG_HOME"]
[mcp_servers.shogiboardq.env]
SHOGIBOARDQ_EXECUTABLE = "/path/to/ShogiBoardQ/build/ShogiBoardQ"
PYTHONPATH = "/path/to/ShogiBoardQ/mcp"
Linux で GUI を自動起動する場合、コマンドで登録した後も [mcp_servers.shogiboardq] に上記の env_vars を追加してください。ディスプレイ・セッションの環境変数と設定ディレクトリを引き継ぐための指定です。同じテーブルを重複して作らず、既存のテーブルを編集します。
codex mcp get shogiboardq で登録内容を確認し、Codex を再起動して新しい会話を開始してください。CLI では /mcp で接続を確認できます。「ShogiBoardQ の validate_sfen で startpos を検証して」と依頼し、合法手数 30 が返ればツールを実行できています。codex mcp list は登録内容のみを表示します。
画面のない環境でアプリ操作を試す場合は、[mcp_servers.shogiboardq.env] に QT_QPA_PLATFORM = "offscreen" を追加します。この場合、ウィンドウは画面に表示されません。詳細は OpenAI 公式の MCP ドキュメントを参照してください。
自然言語で依頼すると、クライアントが適切なツールを選んで呼び出します
| 依頼 | 呼ばれるツール |
|---|---|
| 「~/kifu/game.kif を CSA 形式に変換して ~/kifu/game.csa に保存して」 | convert_kifu |
| 「この SFEN は合法な局面? 王手はかかっている?」 | validate_sfen |
| 「YaneuraOu で初期局面から 7g7f 3c3d の局面を 10 秒、候補 3 手で解析して」 | list_engines → analyze_position → analysis_result |
| 「この局面に詰みがあるか KomoringHeights で調べて」 | search_mate → mate_status |
| 「3手詰を 5 問作って。攻め駒は 3 枚まで」 | generate_tsume → tsume_generation_status |
| 「この 5 手詰に余詰がないか確認して」 | verify_tsume |
| 「この局面を画像にして ~/Pictures/board.png に保存して」 | render_board_image |
解析・詰み探索・詰将棋生成は開始ツールがすぐにジョブ ID を返し、クライアントが状態ツール(analysis_status など)で進捗と結果を取得します。ツール呼び出しを約 60 秒で打ち切るクライアントでも、数分の解析や生成を扱えます。生成は stop_tsume_generation で途中終了でき、ジョブ一覧は list_jobs、取消は cancel_job です。
局面は SFEN(startpos は初期局面)、手は USI 形式(7g7f、駒打ちは P*5e)で受け渡します。結果には人が読める要約と、プログラムが扱いやすい構造化データ(structuredContent)の両方が含まれます。棋譜のテキストや読み筋は既定で先頭の一定量だけ返し、max_chars や max_pv_moves で調整できます。
--automation 付きで起動した ShogiBoardQ を AI クライアントから操作できます
自動化 API は既定で無効です。--automation を付けて起動すると、所有者だけがアクセスできるローカルソケットで操作を受け付け、標準出力に automation: listening on ... と表示します。SHOGIBOARDQ_EXECUTABLE を設定しておけば、アプリ操作ツールを最初に呼んだときに MCP サーバーが自動で起動します(起動済みなら接続します)。
./build/ShogiBoardQ --automation
# ソケットの場所を指定する場合
./build/ShogiBoardQ --automation --automation-socket /tmp/shogiboardq.sock
| 依頼 | 呼ばれるツール |
|---|---|
| 「今表示している局面を教えて」 | get_position |
| 「~/kifu/game.kif を開いて 30 手目に移動して」 | load_kifu → goto_ply |
| 「表示中の棋譜を KI2 で ~/kifu/out.ki2 に保存して」 | save_kifu |
| 「棋譜解析ダイアログを開いて、内容を読み取ってスクリーンショットを撮って」 | trigger_action → list_dialogs → get_widget_text → capture_screenshot |
| 「盤面を反転して」 | trigger_action(actionFlipBoard) |
未保存の変更がある状態で棋譜を読み込んだり局面を設定したりする依頼は、discard_unsaved を明示しない限り拒否されます。メニュー動作は許可リスト方式で、終了・上書き保存は実行できません。言語切替は可能で、アプリ再起動後に反映されます。実行できる動作は list_actions で確認できます。
操作するウィンドウやダイアログは、どのツールも target(objectName・selector・タイトルの一部)で指定します。省略するとメインウィンドウです。名前のない部品は get_widget_text / list_dialogs の selector を widget・target に指定して操作できます。ダイアログの再生成・アプリ再起動後は再取得してください。set_widget_value はスライダー・リスト・チェック付きグループ・色にも対応します。メニューは list_menu_actions で階層インデックスを調べ、select_menu_action の path に指定します。
画面を操作するツールは、アプリが操作を実行するまで待ってから返り、対象が隠れた・無効になった・別のダイアログに遮られたなど実行時に操作できなかった場合はエラーを返します。結果の state は、実行済み(done)・操作で開いたモーダルダイアログがまだ開いている(running)・待つ間に実行されなかった(pending)を区別します。ツールが失敗したときのメッセージは、CLI・自動化 API と共通の分類の語(invalid_argument・not_found・file_exists・parse_error など)で始まります。
ローカル専用・既定で無効・明示的な許可が原則です
--automation を付けたときだけ有効ですSHOGIBOARDQ_ALLOW_UNRESTRICTED_UI=1 を指定したときだけ使えます。通常の棋譜の読み書きには load_kifu / save_kifu を使いますSHOGIBOARDQ_ALLOWED_DIRS(既定はホームディレクトリ)の外は拒否します。既存ファイルは overwrite の明示が無ければ上書きしません. で始まる名前のファイル・フォルダ(設定・認証情報・起動スクリプトの置き場所)は読み書きしません。読み書きできるのは棋譜(.kif・.kifu・.ki2・.ki2u・.csa・.jkf・.usi・.usen・.sfen。読み込みは .json も)と盤面画像(.png・.jpg・.jpeg・.bmp・.webp)のファイルだけですshogiboardq-cli が含まれていないため、ソースからのビルドが必要です設計の詳細(JSON-RPC メソッド一覧、ジョブの状態遷移、テスト)は開発者向け文書 docs/dev/mcp-server.md と mcp/README.md を参照してください。