Supports C++ project development through CMake integration, including compilation, linking, and testing of C++ applications and libraries
Provides comprehensive CMake project management capabilities including configuring projects with presets, building with multiple targets, running CTest suites, and analyzing build/test errors with LLM-friendly formatting
Built as a Gradio-based MCP server providing a web UI interface for CMake operations accessible through browser at localhost:7860
MCP-CMake
MCP-CMakeは、CMakeプロジェクトの管理を行うためのGradioベースのMCPサーバーです。このサーバーは、CMakeプロジェクトの設定、ビルド、テスト実行を統一されたインターフェースで簡単に実行できる包括的なツールを提供します。
機能
基本機能
- CMakeプリセット一覧: 利用可能なconfigure、build、testプリセットを表示
- CMakeプロジェクトの設定: CMakeプリセットを使用してプロジェクトを設定
- ビルド実行: 指定されたプリセットとターゲットでプロジェクトをビルド
- テスト実行: CTestを使用したテスト実行とレポート生成
- リアルタイム出力: コマンド実行結果をリアルタイムで表示
- Web UI: ブラウザベースのインターフェースで操作
- MCP対応: GradioのMCPサーバー機能を使用
- 柔軟なディレクトリ指定: working_dirパラメータで任意のディレクトリを指定可能
高度な機能
- CMake Define変数の動的追加: ビルド時にCMake変数を動的に設定
- 複数ターゲット対応: 一度に複数のビルドターゲットを指定可能
- Verboseオプション: 詳細なビルド・テスト出力の表示
- 並列実行: 並列ビルド・テストジョブ数の指定
- エラー解析エンジン: ビルド・テストエラーの構造化解析
- LLM支援機能: エラー情報をLLMが解析しやすい形式で出力
- 健全性チェック: システム環境とプロジェクト設定の検証
インストール
使用方法
サーバーの起動
サーバー起動後、ブラウザで http://localhost:7860
にアクセスしてWeb UIを使用できます。
uvでの使用方法
または
MCPクライアントからの使用
このサーバーはMCPプロトコルに対応しており、MCPクライアントから以下のツールを使用できます:
API仕様
list_presets
利用可能なCMakeプリセットを一覧表示します。
パラメータ:
working_dir
(オプション): CMakeLists.txtがあるディレクトリ(デフォルト: "sample")
戻り値: configure、build、testプリセットの一覧
configure_project
CMakeプロジェクトを設定します。
パラメータ:
preset
(必須): 使用するCMakeプリセット名working_dir
(オプション): CMakeLists.txtがあるディレクトリ(デフォルト: "sample")cmake_defines
(オプション): CMake変数の辞書形式{"VAR": "VALUE"}
戻り値: 設定処理の出力とエラー解析結果
configure_project_with_defines
CMakeプロジェクトを設定します(UI用拡張版)。
パラメータ:
preset
(必須): 使用するCMakeプリセット名working_dir
(オプション): CMakeLists.txtがあるディレクトリ(デフォルト: "sample")defines_string
(オプション): "KEY1=VALUE1;KEY2=VALUE2" 形式のDefine変数verbose_makefile
(オプション): CMAKE_VERBOSE_MAKEFILEを有効にするbuild_shared_libs
(オプション): BUILD_SHARED_LIBSを有効にするfind_root_path
(オプション): CMAKE_FIND_ROOT_PATHの設定
build_project
CMakeプロジェクトをビルドします。
パラメータ:
preset
(必須): 使用するビルドプリセット名targets
(オプション): ビルド対象のターゲット名のリストworking_dir
(オプション): CMakeプロジェクトのルートディレクトリ(デフォルト: "sample")verbose
(オプション): Verboseビルドを有効にするparallel_jobs
(オプション): 並列ビルドジョブ数
戻り値: ビルド処理の出力とエラー解析結果
test_project
CTestを使用してテストを実行します。
パラメータ:
preset
(オプション): 使用するテストプリセット名(空の場合はデフォルト実行)working_dir
(オプション): CMakeプロジェクトのルートディレクトリ(デフォルト: "sample")verbose
(オプション): Verboseテストを有効にするtest_filter
(オプション): テストフィルター(正規表現)parallel_jobs
(オプション): 並列テストジョブ数
戻り値: テスト実行結果とエラー解析結果
health_check
システム環境とプロジェクト設定の健全性をチェックします。
パラメータ:
working_dir
(オプション): チェック対象のディレクトリ(デフォルト: "sample")
戻り値: システム状態の詳細レポート
エラー解析API
analyze_error_output
エラー出力を解析してLLM向けフォーマットで返します。
パラメータ:
error_output
(必須): 解析対象のエラー出力error_type
(オプション): エラータイプ("build", "test", "cmake")
format_error_for_llm_analysis
エラー出力をLLM解析用に包括的にフォーマットします。
パラメータ:
error_output
(必須): 解析対象のエラー出力error_type
(オプション): エラータイプcommand
(オプション): 実行されたコマンドworking_dir
(オプション): 作業ディレクトリ
extract_error_metadata
エラー出力からメタデータを抽出します。
パラメータ:
error_output
(必須): 解析対象のエラー出力
戻り値: ファイル名、行番号、エラータイプ等のメタデータ
使用例
基本的な使用例
高度な使用例
Web UI機能
サーバー起動後、ブラウザで http://localhost:7860
にアクセスすると以下のタブが利用できます:
List Presets タブ
- 利用可能なCMakeプリセットの一覧表示
- configure、build、testプリセットを表示
Configure API タブ
- CMakeプロジェクトの設定実行
- CMake Define変数の動的追加
- 一般的な変数(CMAKE_VERBOSE_MAKEFILE等)のチェックボックス
- カスタムDefine変数の文字列入力
Build API タブ
- CMakeプロジェクトのビルド実行
- 複数ターゲットの選択(チェックボックス)
- カスタムターゲットの追加
- Verboseオプションと並列ジョブ数の指定
Test API タブ
- CTestを使用したテスト実行
- テストプリセットの選択
- テストフィルター(正規表現)の指定
- Verboseオプションと並列実行の設定
Error Analysis タブ
- ビルド・テストエラーの構造化解析
- LLM向けフォーマット出力
- エラー統計情報の表示
- エラータイプ別フィルタリング
- 分析結果のコピー機能
Health Check タブ
- システム環境の健全性チェック
- CMake/CTestの存在確認
- CMakePresets.jsonの検証
- 問題発生時の解決方法提案
SSEエラーについて
MCPクライアントから接続する際に「SSE error: Invalid content type, expected "text/event-stream"」が発生する場合は、以下の点を確認してください:
- サーバー起動方法:
python mcp_cmake.py
で直接起動してください - MCP設定: MCPクライアントの設定で正しいエンドポイントを指定しているか確認
- Gradioバージョン:
gradio[mcp]>=4.0
を使用していることを確認
新機能の詳細
エラー解析エンジン
MCP-CMakeは高度なエラー解析エンジンを搭載しており、以下の機能を提供します:
- 構造化エラー解析: コンパイルエラー、リンクエラー、テストエラーを構造化して解析
- LLM向けフォーマット: エラー情報をLLMが解析しやすい形式で出力
- ソースコード文脈: エラー発生箇所の周辺コードを自動取得
- 解決提案: エラータイプに基づく解決方法の提案
- 統計情報: エラー・警告の統計とサマリー
CMake Define変数の動的設定
ビルド時にCMake変数を柔軟に設定できます:
- Key-Valueペア入力:
KEY=VALUE
形式での変数設定 - 一般的な変数:
CMAKE_VERBOSE_MAKEFILE
、BUILD_SHARED_LIBS
等のチェックボックス - 文字列形式:
"VAR1=VALUE1;VAR2=VALUE2"
形式での一括設定
複数ターゲット対応
ビルド時に複数のターゲットを同時に指定できます:
- チェックボックス選択: 事前定義されたターゲットから選択
- カスタムターゲット: 任意のターゲット名を追加入力
- 並列ビルド: ジョブ数を指定した並列ビルド
テスト機能
CTestを使用した包括的なテスト機能:
- プリセット対応: testプリセットを使用した実行
- フィルタリング: 正規表現によるテストフィルター
- 並列実行: 複数テストの並列実行
- 詳細レポート: テスト結果の構造化レポート
プロジェクト構造
MCP設定
Kiro IDEでの設定
Kiro IDEでMCP-CMakeサーバーを使用する場合の設定例:
他のMCPクライアントでの設定
一般的なMCPクライアントでの接続設定:
- エンドポイント:
http://127.0.0.1:7860/gradio_api/mcp/
- プロトコル: HTTP/SSE
- 認証: 不要(ローカル開発用)
サンプルプロジェクト
sample/
ディレクトリには、簡単なC++プロジェクトが含まれています:
main.cpp
: Hello WorldプログラムCMakeLists.txt
: CMake設定ファイルCMakePresets.json
: configure、build、testプリセット定義
サンプルプロジェクトの拡張
より複雑なプロジェクトでテストする場合:
- テストの追加:
CMakeLists.txt
にCTestの設定を追加 - 複数ターゲット: ライブラリとアプリケーションの分離
- 依存関係: 外部ライブラリの使用例
トラブルシューティング
システム環境の問題
CMakeコマンドが見つからない場合
システムのPATHにCMakeが含まれていることを確認してください:
Windows環境での注意事項:
- 通常のPowerShellではCMakeが見つからない場合があります
- Visual Studio Build Toolsがインストールされている場合は、Developer Command Promptを使用してください:
または、Visual Studio Developer PowerShellを使用:
ワンライナーでの起動(推奨)
Visual Studio Build Toolsの環境設定とサーバー起動を一度に実行:
プロジェクト設定の問題
CMakePresets.jsonが見つからない場合
プロジェクトルートにCMakePresets.json
ファイルが存在することを確認してください。基本的な例:
ビルドエラーの解決
Visual Studio C++例外処理エラー
Visual Studioを使用している場合、警告C4530が表示されることがあります。この場合、CMakePresets.json
に/EHsc
フラグを追加してください:
リンクエラー
ライブラリが見つからない場合:
CMAKE_PREFIX_PATH
を設定して依存関係の場所を指定find_package
の設定を確認- ライブラリのインストール状況を確認
テスト実行の問題
CTestが見つからない場合
CTestはCMakeと一緒にインストールされます。CMakeが正しくインストールされていることを確認してください。
テストプリセットが見つからない場合
CMakePresets.json
にtestプリセットが定義されていない場合、システムは自動的にデフォルトのctest実行にフォールバックします。
エラー解析機能の問題
LLM向け出力が生成されない場合
- エラー出力に
[ERROR]
マーカーが含まれていることを確認 - エラー出力が空でないことを確認
- エラータイプ(build/test/cmake)が正しく指定されていることを確認
MCPクライアント接続の問題
SSEエラーについて
MCPクライアントから接続する際に「SSE error: Invalid content type, expected "text/event-stream"」が発生する場合:
- サーバー起動方法:
python mcp_cmake.py
で直接起動してください - MCP設定: MCPクライアントの設定で正しいエンドポイントを指定しているか確認
- Gradioバージョン:
gradio[mcp]>=4.0
を使用していることを確認
ポート競合エラー
ポート7860が既に使用されている場合:
パフォーマンスの問題
大きなプロジェクトでの遅延
- 並列ビルド・テストジョブ数を調整
- Verboseオプションを無効にして出力量を削減
- 不要なターゲットを除外
メモリ使用量が多い場合
- 大きなビルドログの出力制限を確認
- エラー解析の対象を絞り込み
- 複数の操作を同時実行しない
健全性チェックの活用
問題が発生した場合は、まず健全性チェック機能を使用してシステム状態を確認してください:
または、Web UIの「Health Check」タブを使用してください。
ベストプラクティス
プロジェクト構成
- CMakePresets.json の活用
- configure、build、testプリセットを適切に定義
- 環境別(Debug/Release、コンパイラ別)のプリセット作成
- 継承機能を使用した設定の共通化
- エラー解析の活用
- ビルドエラー発生時は即座にError Analysisタブを使用
- LLM向け出力をコピーしてAIアシスタントに相談
- エラー統計を確認して問題の傾向を把握
- テスト駆動開発
- テストプリセットを設定してCI/CDパイプラインと連携
- 並列テスト実行でテスト時間を短縮
- テストフィルターを使用して特定のテストグループを実行
パフォーマンス最適化
- 並列実行の活用
- ビルド・テストで適切な並列ジョブ数を設定
- CPUコア数に応じた最適化
- 出力制御
- 通常時はVerboseオプションを無効にして高速化
- 問題発生時のみVerboseを有効にして詳細確認
- ターゲット選択
- 必要なターゲットのみをビルドして時間短縮
- 開発中は変更のあるターゲットのみを対象に
セキュリティ考慮事項
- 作業ディレクトリの制限
- 信頼できるプロジェクトディレクトリのみを指定
- システムディレクトリでの実行を避ける
- CMake変数の検証
- Define変数に機密情報を含めない
- パス指定時は相対パスを使用
開発・貢献
開発環境のセットアップ
テストの実行
機能追加・バグ修正
- Issueを作成して問題・要望を報告
- フィーチャーブランチを作成
- テストを追加・更新
- プルリクエストを作成
ライセンス
このプロジェクトはオープンソースです。詳細はLICENSEファイルを参照してください。
サポート・コミュニティ
- Issues: バグレポートや機能要望
- Discussions: 使用方法や質問
- Wiki: 詳細なドキュメントと使用例
更新履歴
v2.0.0 (最新)
- テスト実行機能の追加
- エラー解析エンジンの実装
- CMake Define変数の動的設定
- 複数ターゲット対応
- LLM支援機能
- 健全性チェック機能
- UI の大幅な拡張
v1.0.0
- 基本的なCMake操作(configure、build)
- プリセット一覧表示
- Gradio Web UI
- MCP対応
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
A Gradio-based MCP server for comprehensive CMake project management that enables configuring, building, and testing CMake projects with preset support, error analysis, and LLM-friendly output formatting. Provides both web UI and MCP protocol access for streamlined C++ development workflows.
Related MCP Servers
- -securityFlicense-qualityA collection of MCP servers built with FastMCP framework that handle various tasks including customer interviews, E2E testing, and go-live processes, enabling seamless integration with GitHub Copilot through VSCode.Last updated -Python
- -securityFlicense-qualityAn MCP server that enables interaction with Google Cloud Game Services API, allowing users to manage game server deployments, realms, and configurations through natural language.Last updated -1Python
- -securityFlicense-qualityAn MCP server that enables Git repository operations and GitHub PR workflows, allowing users to manage repositories, create branches, commit changes, and create pull requests through natural language.Last updated -1Python
- -securityAlicense-qualityThis project builds a read-only MCP server. For full read, write, update, delete, and action capabilities and a simplified setup, check out our free CData MCP Server for Google Data Catalog (beta): https://www.cdata.com/download/download.aspx?sku=HGZK-V&type=betaLast updated -MIT License