開発ガイド
August 3, 2026 · View on GitHub
開発環境
現在の構成は次の環境で検証しています。
- Windows 10/11 x64
- Visual Studio Community 2026(18.8.2で検証)
- Visual Studioワークロード「.NETデスクトップ開発」
- .NET 10 SDK 10.0.300以降
- PowerShell 7またはWindows PowerShell
global.jsonは.NET 10 SDKを選択します。一方、アプリとテストプロジェクトはnet9.0-windowsまたはnet9.0をターゲットにしています。SDKとターゲットフレームワークは異なるため、プロジェクトを.NET 10へ再ターゲットする必要はありません。
リポジトリを準備する
git clone https://github.com/shaderjp/LocalMCPChatClient.git
cd LocalMCPChatClient
./scripts/bootstrap.ps1
bootstrap.ps1はSDKバージョンを確認し、restore、build、testを順に実行します。
オプション:
# Release構成で検証
./scripts/bootstrap.ps1 -Configuration Release
# テストを省略
./scripts/bootstrap.ps1 -SkipTests
Visual Studioで開く
LocalMCPChatClient.slnを開く- ソリューション構成を
Debug、プラットフォームをAny CPUにする LocalMCPChatClient.AppをスタートアッププロジェクトにするF5でデバッグ、Ctrl+F5でデバッグなし実行を開始する
NuGet復元で問題がある場合は、ソリューションを閉じずに「ツール」→「NuGetパッケージマネージャー」→「パッケージマネージャー設定」でnuget.orgが有効か確認してください。
CLIコマンド
dotnet restore LocalMCPChatClient.sln
dotnet build LocalMCPChatClient.sln -c Release --no-restore
dotnet test LocalMCPChatClient.sln -c Release --no-build
dotnet run --project src/LocalMCPChatClient.App/LocalMCPChatClient.App.csproj
特定のテストプロジェクトだけを実行する場合:
dotnet test tests/LocalMCPChatClient.Tests/LocalMCPChatClient.Tests.csproj -c Release
モデルやGPUを必要としない偽のllama-server APIとテスト用MCPサーバーを使用するため、通常の自動テストはローカルモデルなしで実行できます。CPU / CUDA / Vulkanと実モデルの確認は手動E2Eテストです。
プロジェクト構成
LocalMCPChatClient.sln
├─ src/
│ ├─ LocalMCPChatClient.App/ WPF、MVVM、DI、画面
│ ├─ LocalMCPChatClient.Core/ ドメインモデル、インターフェース
│ └─ LocalMCPChatClient.Infrastructure/ llama.cpp、MCP、SQLite、設定、取得処理
├─ tests/
│ ├─ LocalMCPChatClient.Tests/ 単体・統合テスト
│ └─ LocalMCPChatClient.TestServer/ テスト用HTTP MCPサーバー
├─ catalog/ 固定モデル・ランタイムカタログ
├─ docs/ 利用者・開発者向け資料
└─ scripts/ セットアップ、Git対象サイズ検査
依存方向はApp → Infrastructure → Coreを基本とし、CoreはWPF、SQLite、MCP SDKへ依存しません。詳しくはアーキテクチャを参照してください。
設定と開発データ
デバッグ実行でも既定では次の実ユーザーデータを使用します。
%LocalAppData%\LocalMCPChatClient
テストコードではAppPathsへ一時ディレクトリを渡し、本番データから分離してください。デバッグ中に設定を初期化したい場合は、アプリを終了してからsettings.jsonを別名へ退避します。履歴を保持したい場合はhistory.dbを削除・移動しないでください。
モデルとランタイムのカタログ
catalog/models.json: Hugging Faceリポジトリ、revision、ファイル名、サイズ、SHA-256、ライセンスURLcatalog/runtimes.json: llama.cppリリース、CPU / CUDA / Vulkanアセット、サイズ、SHA-256
カタログを変更する場合は、ダウンロード元の固定revisionまたはreleaseとSHA-256を確認し、BuiltInArtifactsおよび既定設定との整合も更新してください。モデル、ZIP、DLL、GGUFをリポジトリやGit LFSへ追加しないでください。
Portable版を発行する
Portableフォルダー
dotnet publish src/LocalMCPChatClient.App/LocalMCPChatClient.App.csproj `
-c Release `
-r win-x64 `
--self-contained true `
-o artifacts/portable
Compress-Archive `
-Path artifacts/portable/* `
-DestinationPath artifacts/LocalMCPChatClient-0.1.2-win-x64.zip `
-Force
Get-FileHash artifacts/LocalMCPChatClient-0.1.2-win-x64.zip -Algorithm SHA256
単体EXE
Visual StudioではLocalMCPChatClient.Appの発行プロファイルwin-x64-single-fileを選択します。CLIでは次を実行します。
dotnet publish src/LocalMCPChatClient.App/LocalMCPChatClient.App.csproj `
-c Release `
-p:PublishProfile=win-x64-single-file `
-o artifacts/single-file
出力されるLocalMCPChatClient.exeはself-containedの単一ファイルです。WPFのトリミングは無効にし、SQLiteなどのネイティブ依存関係は実行時抽出を許可しています。
artifactsは生成物でありGit管理しません。GitHub Actionsは両形式を発行し、バージョン付きZIP、単体EXE、それぞれのSHA-256を成果物にします。v*タグではGitHub Releaseへ添付します。
変更前後の確認
最低限、次を実行してください。
./scripts/check-large-files.ps1
dotnet build LocalMCPChatClient.sln -c Release
dotnet test LocalMCPChatClient.sln -c Release --no-build
UI変更では、ダークテーマ上の本文・見出し・入力欄・無効状態のコントラストと、ウィンドウ最小サイズでのスクロールも確認してください。