AIエージェント開発ハンズオンセミナー (開発者向け) のサンプルコードとチュートリアル
リポジトリ: https://github.com/Fujiwo/Shos.AIAgentSample
このリポジトリは、Microsoft Agent Framework と Model Context Protocol (MCP) を使用した AI エージェント開発の実践的なチュートリアルを提供します。ローカル LLM (Ollama) や Azure OpenAI を利用した AI エージェントの作成から、MCP サーバーの実装、そしてエージェントと MCP サーバーの統合まで、段階的に学習できます。
| 学習内容 | 説明 |
|---|---|
| ✅ AI エージェントの基礎 | AI エージェントの基本概念から実装まで体系的に学習 |
| ✅ 複数の LLM 利用 | ローカル LLM (Ollama) と Azure OpenAI の両方の利用方法 |
| ✅ MCP サーバー開発 | Model Context Protocol サーバーの作成と統合 |
| ✅ 多様なアプリケーション | コンソールアプリ、Web アプリ、CAD アプリの実装 |
| ✅ 実践的な統合 | 複数の外部ツールを活用した実践的なエージェント開発 |
⚠️ 重要な注意事項このサンプルコードとチュートリアルは、執筆時点のプレビュー版の Microsoft Agent Framework が基になっています。 Microsoft Agent Framework は、今後のバージョンアップで内容が変わる可能性があります。
- 🔧 .NET ベースの実装 - C# と .NET を使用した実装例
- 🤖 複数の LLM 対応 - ローカル LLM (Ollama) と Azure OpenAI の両方に対応
- 🔌 MCP サーバーの実装 - STDIO と SSE の両方のトランスポート方式をサポート
- 📖 段階的な学習 - 基礎から応用まで、ステップバイステップで学習
- 💡 実践的なサンプル - コンソールアプリ、Web アプリ、CAD アプリを提供
- 🇯🇵 日本語ドキュメント - すべてのチュートリアルを日本語で提供
最も簡単に AI エージェントを試すには、以下の手順に従ってください:
-
リポジトリをクローン
git clone https://github.com/Fujiwo/Shos.AIAgentSample.git cd Shos.AIAgentSample -
Ollama をインストール(ローカル LLM を使用)
- https://ollama.com/ からダウンロードしてインストール
-
LLM モデルをダウンロード
ollama pull llama3.2
-
Visual Studio でソリューションを開く
Shos.AIAgentSample.slnを Visual Studio で開く
-
サンプルプロジェクトを実行
FCAIAgent1プロジェクトを右クリックし、「スタートアップ プロジェクトに設定」を選択- F5 キーを押してデバッグ実行
詳細な手順とオプション設定は、チュートリアルの実施方法を参照してください。
- インストール - .NET、Node.js、Ollama のセットアップ
- Azure OpenAI - Azure OpenAI の設定
- ローカル LLM の利用 - Ollama を使った AI エージェントの作成
- Azure OpenAI の利用 - Azure OpenAI を使った AI エージェントの作成
- 複数ターンのチャット - 会話履歴を保持したチャット機能の実装
- MCP サーバー (STDIO) の作成 - 標準入出力を使った MCP サーバーの実装
- MCP サーバー (SSE) の作成 - Server-Sent Events を使った MCP サーバーの実装
- MCP サーバーの動作確認 - MCP サーバーの動作確認手順
- MCP サーバーの利用 (単数) - 単一の MCP サーバーとの連携
- MCP サーバーの利用 (複数) - 複数の MCP サーバーとの連携
4. 後片付け
このチュートリアルは、AI エージェント開発の基礎から応用まで、段階的に学習できるように設計されています。
以下のツールがインストールされている必要があります:
| ツール | バージョン | 説明 |
|---|---|---|
| .NET SDK | 8.0 以上(推奨: 9.0) | C# アプリケーションの実行に必要 |
| Visual Studio または VS Code | VS 2022 (17.12+) または VS Code | 開発環境(チュートリアルは Visual Studio を前提) |
| Node.js | v24.0 以上推奨 | MCP サーバーの動作確認ツールに必要 |
詳細なインストール手順は インストールガイド を参照してください。
使用する LLM に応じて、以下のいずれかを選択してください:
| 選択肢 | メリット | 必要なもの | ガイド |
|---|---|---|---|
| Ollama | ・無料 ・インターネット接続不要 ・プライバシー保護 |
Ollama のインストール | インストールガイド |
| Azure OpenAI | ・高性能 ・最新モデルが利用可能 ・スケーラブル |
・Azure アカウント ・Azure OpenAI リソース ・API キー |
設定ガイド |
注意: Azure OpenAI を使用する場合、API の利用に応じて課金が発生します。
- プログラミング: C# の基礎、.NET アプリケーション開発経験
- コマンドライン: 基本的なコマンド操作(
cd,dotnetコマンドなど) - Git: リポジトリのクローンと基本操作
事前学習として以下の資料が役立ちます:
- AIエージェント開発ハンズオンセミナー資料 (PDF) - セミナーの詳細資料(前提知識を含む)
-
リポジトリのクローン
git clone https://github.com/Fujiwo/Shos.AIAgentSample.git cd Shos.AIAgentSample -
必要なツールのインストール
インストールガイドに従って、必要なツールをインストールしてください。
-
ソリューションを開く
Visual Studio で
Shos.AIAgentSample.slnを開きます。
推奨される学習順序:
-
準備編(所要時間:30分〜1時間)
- 0.1 インストール - 開発環境のセットアップ
- 0.2 Azure OpenAI - Azure OpenAI の設定(Azure OpenAI を使用する場合)
-
基礎編(所要時間:1〜2時間)
- 1.1 ローカル LLM の利用 - 最初の AI エージェントを作成
- 1.2 Azure OpenAI の利用 - クラウド LLM への接続
- 1.3 複数ターンのチャット - 対話型エージェントの実装
-
MCP サーバー編(所要時間:1〜2時間)
- 2.1 MCP サーバー (STDIO) の作成 - 最初の MCP サーバー
- 2.2 MCP サーバー (SSE) の作成 - HTTP/SSE サーバー
- 2.3 MCP サーバーの動作確認 - サーバーの検証
-
応用編(所要時間:1〜2時間)
- 3.1 MCP サーバーの利用(単数) - ツールとエージェントの統合
- 3.2 MCP サーバーの利用(複数) - 複数ツールの活用
-
後片付け
- 4.1 後片付け - Azure リソースのクリーンアップ
各プロジェクトは独立して実行できます。チュートリアルに従って作成することもできますが、既存のサンプルプロジェクトを参照・実行することもできます。
⚠️ 注意: 既存のサンプルを実行する場合、API キーやエンドポイント、プロジェクトのパスなどを、環境に合わせてソースコード内に追記する必要があります。
# 基本的な AI エージェント (FCAIAgent1〜5)
cd FCAIAgent1
dotnet run
# MCP サーバーの例
cd McpServer.Con
dotnet run# Web チャットアプリケーション (FCAIChat1〜5)
cd FCAIChat1
dotnet run
# ブラウザで以下にアクセス:
# - HTTPS: https://localhost:5001
# - HTTP: http://localhost:5000- Visual Studio で
Shos.AIAgentSample.slnを開く - ソリューションエクスプローラーで実行したいプロジェクトを右クリック
- 「スタートアップ プロジェクトに設定」を選択
- F5 キーまたは「デバッグの開始」を押して実行
効果的に学習を進めるためのポイント:
| ヒント | 説明 |
|---|---|
| 📚 順番に進める | 各チュートリアルは前のステップの知識を前提としています。順番に進めることを強く推奨します |
| 💭 コードを理解する | 単にコピー&ペーストするのではなく、各コードの意味を理解しながら進めてください |
| 🔬 実験する | サンプルコードを改変して、動作を確認することで理解が深まります |
| 🐛 エラーに慣れる | エラーメッセージを読み、問題を解決するプロセスも重要な学習です |
| 📝 コメントを読む | サンプルコードには詳細なコメントが付いています。よく読んで理解を深めてください |
このリポジトリには、段階的に学習できる複数のサンプルプロジェクトが含まれています。
各プロジェクトは前のプロジェクトの機能を拡張していく形になっています:
| プロジェクト | 学習ステップ | 主な機能 | チュートリアル |
|---|---|---|---|
| FCAIAgent1 | ステップ 1 | ・Ollama を使用したローカル LLM との通信 ・シンプルな1回のプロンプトと応答 |
1.1 |
| FCAIAgent2 | ステップ 2 | ・Ollama と Azure OpenAI の両方に対応 ・チャットクライアントの切り替え機能 |
1.2 |
| FCAIAgent3 | ステップ 3 | ・会話履歴を保持したチャット機能 ・AgentThread を使用した対話セッション管理 |
1.3 |
| FCAIAgent4 | ステップ 4 | ・STDIO トランスポートを使用した MCP サーバー接続 ・外部ツール(時刻取得など)の利用 |
3.1 |
| FCAIAgent5 | ステップ 5 | ・複数の MCP サーバー(時刻、天気、ファイルシステム)の同時利用 ・より実践的なツール統合の例 |
3.2 |
| FCAIAgent | 最終形態 | FCAIAgent5 と同等の実装 | - |
| プロジェクト | トランスポート | 主な機能 | チュートリアル |
|---|---|---|---|
| McpServer.Con | STDIO | ・標準入出力を通じた通信 ・時刻取得ツールの実装例 ・ローカルプロセス間通信向け |
2.1 |
| McpServer.Sse | HTTP/SSE | ・Server-Sent Events によるリアルタイム通信 ・天気予報ツールの実装例 ・ネットワーク経由での利用が可能 |
2.2 |
コンソールアプリケーションと並行して、同等の機能を Web インターフェースで提供するプロジェクト群です:
| プロジェクト | 学習ステップ | 主な機能 | 対応チュートリアル |
|---|---|---|---|
| FCAIChat1 | ステップ 1 | ・ASP.NET Core MVC を使用した Web UI ・ローカル LLM (Ollama) との対話 |
1.1 |
| FCAIChat2 | ステップ 2 | ・Ollama と Azure OpenAI の切り替え機能 ・Web ベースの UI で LLM を選択可能 |
1.2 |
| FCAIChat3 | ステップ 3 | ・セッション管理による会話履歴の保持 ・連続的な対話のサポート |
1.3 |
| FCAIChat4 | ステップ 4 | ・Web インターフェースから MCP ツールを利用 ・ユーザーフレンドリーな対話型 AI 体験 |
3.1 |
| FCAIChat5 | ステップ 5 | ・複数のツールを統合した実践的な Web アプリケーション ・エンドユーザー向けの完全な AI エージェント体験 |
3.2 |
Windows Forms を使用した、AI エージェントを統合した CAD (Computer-Aided Design) アプリケーションです。自然言語で図形描画を指示でき、AI エージェントがそれを解釈して実際に描画を実行します。
| プロジェクト | プラットフォーム | 主な機能 |
|---|---|---|
| FCAICad1 | Windows Forms | ・自然言語による図形描画指示 ・AI エージェントによる描画コマンド自動実行 ・リアルタイム図形表示 ・Windows Forms を使った GUI 実装 |
FCAICad1 では、以下のツール(関数)を AI エージェントに提供しています:
| ツール | 説明 | パラメータ |
|---|---|---|
GetPaperSize() |
用紙サイズ(幅と高さ)を取得 | なし(戻り値: width, height) |
DrawLine() |
直線を描画 | startX, startY, endX, endY(始点と終点の座標) |
- 自然言語インターフェース: ユーザーは「右上から左下に線を引いて」といった自然な指示を入力できます
- AI による解釈: エージェントが指示を解釈し、適切なツールを呼び出します
- 即座の可視化: 描画結果がリアルタイムに画面に表示されます
このプロジェクトは、AI エージェントをデスクトップアプリケーションに統合し、自然言語でアプリケーションを制御する実例を提供します。今後、より多くの描画ツール(円、矩形、テキストなど)を追加することで、より高度な CAD システムへと発展させることができます。
Note
FCAICad1 は Windows Forms を使用しているため、Windows でのみ動作します。
- Documents/ - チュートリアルドキュメントと画像
- 各ステップの詳細な説明
- スクリーンショットによる視覚的なガイド
- PDF およびスライド形式のセミナー資料
- .mcp.json - ルートディレクトリの MCP サーバー設定(サンプル)
- .vscode/mcp.json - Visual Studio Code 用の MCP サーバー設定
- Shos.AIAgentSample.sln - Visual Studio ソリューションファイル
| カテゴリ | 内容 |
|---|---|
| 言語 | C# 12.0 |
| ランタイム | .NET 8.0 以上(推奨: .NET 9.0) |
| IDE | Visual Studio 2022(17.12 以降)、または Visual Studio Code |
| 対応 OS | Windows 11/10(全機能)、macOS、Linux(FCAICad1 を除く) |
| OS | サポート状況 | 備考 |
|---|---|---|
| Windows 11/10 | ✅ すべてのプロジェクト | FCAICad1 を含むすべてのプロジェクトが動作 |
| macOS | ✅ 一部対応 | FCAIAgent、FCAIChat、MCP サーバープロジェクトをサポート |
| Linux | ✅ 一部対応 | FCAIAgent、FCAIChat、MCP サーバープロジェクトをサポート |
Note
FCAICad1 プロジェクトは Windows Forms を使用しているため、Windows でのみ動作します。macOS および Linux では実行できません。
- 言語: C# 12.0
- ランタイム: .NET 8.0 以上(推奨: .NET 9.0)
- IDE: Visual Studio 2022(17.12 以降)、または Visual Studio Code
Microsoft.Agents.AI(プレリリース版)Microsoft.Extensions.AIModelContextProtocol(プレリリース版)OllamaSharp- ローカル LLM との通信Azure.AI.OpenAI- Azure OpenAI との通信
Microsoft.AspNetCore.Identity.EntityFrameworkCore- 認証・認可Microsoft.AspNetCore.SignalR- リアルタイム通信Microsoft.EntityFrameworkCore.SqlServer- データベースアクセス
- Windows Forms (.NET 8.0+)
AI エージェント関連用語
- AI エージェント: LLM を活用して、ユーザーの要求に応じた処理を自律的に実行するソフトウェアコンポーネント
- LLM (Large Language Model): 大規模言語モデル。自然言語を理解し生成する AI モデル
- Microsoft Agent Framework: Microsoft が提供する AI エージェント開発用のフレームワーク(プレビュー版)
- IChatClient: .NET の AI 拡張における、チャット機能を提供する標準インターフェース
- AgentThread: 複数ターンの対話を管理するためのオブジェクト
MCP 関連用語
- MCP (Model Context Protocol): AI エージェントと外部ツールやデータソースを接続するための標準プロトコル
- STDIO: 標準入出力。プロセス間通信の基本的な方式
- SSE (Server-Sent Events): サーバーからクライアントへの一方向リアルタイム通信プロトコル
LLM プラットフォーム
- Ollama: ローカル環境で大規模言語モデルを実行するためのツール
- Azure OpenAI: Microsoft Azure が提供するクラウド型の LLM サービス
Shos.AIAgentSample/
├── 📄 README.md # このファイル
├── 📄 LICENSE.txt # ライセンス情報(MIT License)
├── 📄 Shos.AIAgentSample.sln # Visual Studio ソリューション
├── 📄 .mcp.json # MCP サーバー設定(ルート、サンプル)
│
├── 📁 .github/ # GitHub Actions とエージェント設定
├── 📁 .vscode/
│ └── 📄 mcp.json # Visual Studio Code 用 MCP 設定
│
├── 📁 Documents/ # 📚 チュートリアルとリソース
│ ├── 📁 Images/ # チュートリアル用画像
│ ├── 📄 tutorial.md # チュートリアルメインページ
│ ├── 📄 tutorial.0.1.md # 0.1 インストールガイド
│ ├── 📄 tutorial.0.2.md # 0.2 Azure OpenAI セットアップ
│ ├── 📄 tutorial.1.1.md # 1.1 ローカル LLM の利用
│ ├── 📄 tutorial.1.2.md # 1.2 Azure OpenAI の利用
│ ├── 📄 tutorial.1.3.md # 1.3 複数ターンのチャット
│ ├── 📄 tutorial.2.1.md # 2.1 MCP サーバー (STDIO)
│ ├── 📄 tutorial.2.2.md # 2.2 MCP サーバー (SSE)
│ ├── 📄 tutorial.2.3.md # 2.3 MCP サーバーの動作確認
│ ├── 📄 tutorial.3.1.md # 3.1 MCP サーバー利用(単数)
│ ├── 📄 tutorial.3.2.md # 3.2 MCP サーバー利用(複数)
│ ├── 📄 tutorial.4.1.md # 4.1 後片付け
│ ├── 📄 aiagentlog.md # AI エージェント開発ログ
│ ├── 📄 maf.md # Microsoft Agent Framework 情報
│ └── 📄 2025010.AIエージェント開発ハンズオンセミナー.pdf # セミナー資料
│
├── 📁 FCAIAgent/ # 🤖 最終形態の AI エージェント (FCAIAgent5と同等)
│ ├── 📄 Program.cs
│ └── 📄 FCAIAgent.csproj
│
├── 📁 FCAIAgent1/ # 🤖 ステップ 1: 基本的な AI エージェント
│ ├── 📄 Program.cs # メインプログラム
│ └── 📄 FCAIAgent1.csproj # プロジェクトファイル
│
├── 📁 FCAIAgent2/ # 🤖 ステップ 2: LLM 選択機能追加
│ ├── 📄 Program.cs
│ └── 📄 FCAIAgent2.csproj
│
├── 📁 FCAIAgent3/ # 🤖 ステップ 3: 複数ターン対話
│ ├── 📄 Program.cs
│ └── 📄 FCAIAgent3.csproj
│
├── 📁 FCAIAgent4/ # 🤖 ステップ 4: MCP サーバー連携(単数)
│ ├── 📄 Program.cs
│ └── 📄 FCAIAgent4.csproj
│
├── 📁 FCAIAgent5/ # 🤖 ステップ 5: MCP サーバー連携(複数)
│ ├── 📄 Program.cs
│ └── 📄 FCAIAgent5.csproj
│
├── 📁 FCAIChat1/ # 🌐 ステップ 1: 基本的な Web チャット
│ ├── 📁 Controllers/ # MVC コントローラー
│ ├── 📁 Models/ # データモデル
│ ├── 📁 Views/ # Razor ビュー
│ ├── 📁 wwwroot/ # 静的ファイル (CSS, JS, etc.)
│ └── 📄 FCAIChat1.csproj
│
├── 📁 FCAIChat2/ # 🌐 ステップ 2: LLM 選択機能付き Web チャット
│ └── 📄 FCAIChat2.csproj
│
├── 📁 FCAIChat3/ # 🌐 ステップ 3: 複数ターン対話 Web チャット
│ └── 📄 FCAIChat3.csproj
│
├── 📁 FCAIChat4/ # 🌐 ステップ 4: MCP 連携 Web チャット(単数)
│ └── 📄 FCAIChat4.csproj
│
├── 📁 FCAIChat5/ # 🌐 ステップ 5: MCP 連携 Web チャット(複数)
│ └── 📄 FCAIChat5.csproj
│
├── 📁 FCAICad1/ # 🎨 CAD アプリケーション
│ ├── 📄 Program.cs # メインプログラムとツール定義
│ ├── 📄 ChatAgent.cs # AI エージェント実装
│ ├── 📄 MainForm.cs # メインフォーム
│ ├── 📄 View.cs # 描画ビュー
│ ├── 📄 Model.cs # データモデル
│ └── 📄 FCAICad1.csproj
│
├── 📁 McpServer.Con/ # 🔧 STDIO MCP サーバー
│ ├── 📄 Program.cs # 時刻取得ツール実装
│ └── 📄 McpServer.Con.csproj
│
├── 📁 McpServer.Sse/ # 🔧 HTTP/SSE MCP サーバー
│ ├── 📄 Program.cs # 天気予報ツール実装
│ └── 📄 McpServer.Sse.csproj
│
└── 📁 Reviews/ # コードレビュー記録
ビルドエラーが発生する
-
.NET SDK のバージョン確認
dotnet --version
.NET 8.0 以上(推奨: .NET 9.0)がインストールされているか確認してください。
-
パッケージの復元
dotnet restore
-
プロジェクトのクリーンとリビルド
dotnet clean dotnet build
Ollama に接続できない
-
Ollama が起動しているか確認
- Windows: タスクトレイに Ollama アイコンが表示されているか確認
- ブラウザで
http://localhost:11434にアクセスして動作確認
-
モデルがダウンロードされているか確認
ollama list
-
必要なモデルのダウンロード
ollama pull llama3.2
Azure OpenAI に接続できない
-
API キーとエンドポイントの確認
- Azure Portal で正しい API キーとエンドポイントを取得しているか確認
- コード内の設定値が正しいか確認
-
デプロイ名の確認
- Azure OpenAI Studio でデプロイしたモデル名が正しいか確認
-
ネットワーク接続の確認
- ファイアウォールやプロキシ設定を確認
MCP サーバーが見つからない
-
.mcp.json のパス確認
.mcp.json内のパスが環境に合っているか確認- Windows の場合: バックスラッシュ (
\) を使用 - Linux/Mac の場合: スラッシュ (
/) を使用
-
MCP サーバーのビルド確認
cd McpServer.Con dotnet build
Web アプリケーションが起動しない
-
ポートの競合確認
- 他のアプリケーションが同じポートを使用していないか確認
launchSettings.jsonでポート番号を変更可能
-
HTTPS 証明書の問題
dotnet dev-certs https --trust
CAD アプリケーションが起動しない
- Windows Forms の要件
- FCAICad1 は Windows でのみ動作します
- .NET デスクトップ開発ワークロードがインストールされているか確認
問題が解決しない場合は、Issues で質問してください。
MIT License
Copyright (c) 2025 Fujio Kojima
詳細は LICENSE.txt を参照してください。
小島 富治雄 (Fujio Kojima) - ソフトウェア開発エンジニア
- Microsoft MVP for Development Tools - Visual C# (Jul. 2005 - Dec. 2014)
- Microsoft MVP for .NET (Jan. 2015 - Oct. 2015)
- Microsoft MVP for Visual Studio and Development Technologies (Nov. 2015 - Jun. 2018)
- Microsoft MVP for Developer Technologies (Nov. 2018 - Jun. 2026)
- GitHub: @Fujiwo
- MVP Profile: Microsoft MVP Profile
- ブログ: Sho's Digital Cafe
- Web サイト: www.shos.info
- X (Twitter): @Fujiwo
- Instagram: @fujiwo
このプロジェクトは、以下のオープンソースプロジェクトと技術を使用しています:
- Microsoft Agent Framework - AI エージェント開発フレームワーク
- Model Context Protocol (MCP) - AI エージェントとツール連携の標準プロトコル
- Ollama - ローカル LLM 実行環境
- Azure OpenAI Service - クラウド LLM サービス
これらの素晴らしいツールとフレームワークを提供してくださった開発者とコミュニティの皆様に深く感謝いたします。
このプロジェクトへの貢献を歓迎します!バグ報告、機能要望、ドキュメントの改善、プルリクエストなど、あらゆる形での貢献をお待ちしています。
-
このリポジトリをフォーク
- GitHub で「Fork」ボタンをクリック
-
フィーチャーブランチを作成
git checkout -b feature/amazing-feature
-
変更をコミット
git commit -m 'Add some amazing feature' -
ブランチにプッシュ
git push origin feature/amazing-feature
-
プルリクエストを作成
- GitHub でプルリクエストを作成してください
| 種類 | 方法 |
|---|---|
| 🐛 バグ報告 | Issues でバグを報告 |
| 💡 機能要望 | Issues で新機能を提案 |
| ❓ 質問 | Discussions で質問を投稿 |
皆様からのフィードバックと貢献をお待ちしています!
⚠️ このリポジトリのコードは学習・チュートリアル目的で提供されています。
| 項目 | 注意事項 |
|---|---|
| 🔬 開発段階 | プレビュー版の Microsoft Agent Framework を使用しています |
| 🏭 本番環境 | 本番環境での使用前に、適切なセキュリティレビューと最適化を行ってください |
| 🔐 セキュリティ | API キーやシークレットは環境変数や安全な設定管理ツールを使用してください |
| 📦 将来の変更 | Microsoft Agent Framework は今後のバージョンアップで仕様が変わる可能性があります |
- 学習目的: このリポジトリは学習とプロトタイピングに最適です
- 本番利用: 本番環境に適用する場合は、コードのレビューと最適化を実施してください
- セキュリティ: 機密情報の取り扱いには十分注意してください
Last Updated: 2025-01
Repository: https://github.com/Fujiwo/Shos.AIAgentSample
License: MIT License
このリポジトリに関するご質問やフィードバックは、Issues または Discussions でお気軽にお寄せください。