0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

手を動かす:Agent Framework サンプルを Visual Studio と Azure Foundry で実行する

Last updated at Posted at 2025-12-25

※お役に立てたらストック、いいねをよろしくお願いします!!

<本記事のターゲット層>

  • Azure と .NET 環境で Microsoft Agent Framework を実際に動かしてみたい中級〜上級の開発者
  • Azure Foundry/Entra/MCP に触れたいエンジニア
  • AIエージェント開発に挑戦したい人

1. はじめに

本記事では、Microsoft Agent Framework のサンプルを Visual Studio 上でビルド・実行し、Azure AI Foundry(および必要に応じて Microsoft Entra のキーレス認証)と連携して動作確認する手順を実践的に解説します。手を動かしながら学ぶことを重視しており、サンプルプロジェクト「Agent_Step10_AsMcpTool」を使って、設定→デプロイ→実行の一連の流れを追います。

前提条件(準備しておくもの)

  • Windows・Visual Studio(最新安定版)と .NET SDK(.NET 7 以上を推奨)
  • Azure サブスクリプション(Azure AI Foundry を作成できる権限)
  • Git、Node.js / npm(MCP Inspector 実行用)
  • Microsoft Entra でのアプリ登録権限(キーレス認証を行う場合)

所要時間の目安

  • 初回セットアップと実行で約30〜90分(環境や既存設定により変動)

注意事項

  • Azure リソースの作成は課金が発生する可能性があります。不要になったリソースは適宜削除してください。
  • クライアントシークレット等の機密情報は絶対に公開しないでください。

以降は環境構築と実行手順を順に説明します。

🔹 2. サンプル取得とビルド

まずは公式リポジトリをクローンします。

git clone https://github.com/microsoft/agent-framework.git
cd agent-framework

リポジトリ内の samples ディレクトリにお好きなサンプルを選び、ビルドして実行します。サンプルごとに必要なランタイムや手順が異なるため、該当サンプルの README を必ず確認してください。

一般的なビルド手順:

cd samples/<sample-name>
dotnet restore
dotnet build
dotnet run

今回は、GettingStarted/Agents/Agent_Step10_AsMcpToolプロジェクトを例に、サンプルソースを動かしてみます。
こちらを選んだ理由は、AzureFoundry、MCPサーバー、Entraについて試すことができるのでちょうどよいサンプルだと考えました。

🔹 3. スタートアッププロジェクトの設定

  1. Visual Studioでこのプロジェクトファイル(dotnet\samples\GettingStarted\Agents\Agent_Step10_AsMcpTool\Agent_Step10_AsMcpTool.csproj)をダブルクリックで開く
  2. Agent_Step10_AsMcpToolを右クリック→「スタートアップ プロジェクトに設定(A)」をクリックする

※この時点ではエンドポイントがないため、、まだ実行するための設定が不足しています。

🔹 4. Entraの設定

※キーレス認証を行わない場合、こちらの手順は実行不要です。

  1. Microsoft Entra 管理センターにアクセスする。
  2. 左メニューから「アプリの登録」を選択する。
  3. 「+新規登録」をクリックする。
    image.png
  4. 以下の通り項目を入力して、[登録]ボタンをクリックする。
    名前:任意の名前(あとでAzure Foundryの設定で使うアプリケーション名です)
    サポートされているアカウントの種類:この組織ディレクトリのみに含まれるアカウント
    リダイレクト URI:空欄のままでOK
  5. 「概要」でクライアントIDをメモする
    image.png
  6. 「証明書とシークレット」をクリックする。
    image.png
  7. 「+新しいクライアント シークレット」をクリックする。
    image.png
  8. 説明を入力し、有効期限を設定してから[追加]ボタンをクリックする。
    image.png
  9. シークレットの「値」をメモする(漏洩してはいけないので、他の人から見られることがない場所にメモ/保存してください)
    image.png
  10. ホームでテナントIDをメモする
    image.png

🔹 5. Azure Foundryのリソース作成

▸Azureポータルでリソースグループを作成する。

  1. リソースグループをクリックする。
  2. 「+作成」をクリックする。
  3. 以下の通り入力して、[レビューと作成]ボタンをクリックする。
    サブスクリプション:任意のものを選択する
    リソース グループ名:任意の名称でOK
    リージョン:こだわりがなければ(Asia Pacific)Japan Eastか、 (Asia Pacific)Japan Westを選択する(動作拠点に近い方を選択する)
  4. [作成]ボタンをクリックする。

▸AzureポータルでAzure AI Foundryを作成する。

  1. 「Use with Foundry」をオープンして、「Foundry」をクリックする。

  2. 「+作成」をクリックする。

  3. 以下の通り入力して、[確認と作成]ボタンをクリックする。
    サブスクリプション:任意のものを選択する
    リソース グループ名:前手順で作成したものを選択する
    名前:任意の名称でOK
    リージョン:こだわりがなければ(Asia Pacific)Japan Eastか、 (Asia Pacific)Japan Westを選択する(動作拠点に近い方を選択する)
    最初のプロジェクト:任意の名称でOK

  4. [作成]ボタンをクリックする。

検証に失敗しました。と表示した場合
リソースの名前が被っているので別の名称に変更しましょう。
テナント名をつけるなど、Azure全体で一意になるような名称にすることをお勧めいたします。
image.png

※Azure AI Foundryの表示が見つからなかった場合、「Azure AI Foundry」で検索してください。
※今回はMicrosoft Agent Frameworkを動かすことが目的であるため、Storage/ネットワーク/Identity/暗号化の設定は省略します。

▸AzureポータルでAzure AI Foundryにアクセス権を付与する

  1. 作成したAzure AI Foundryリソースを開く(Azure AI Foundry プロジェクトではありません)。
  2. 左メニューから「アクセス制御(IAM)」をクリックする。
  3. [ロールの割り当ての追加]ボタンをクリックする。
  4. 「ロール」-> 「職務ロール」タブで、「ロール名、説明、~」欄に「Azure AI User」と入力する。すると、下にいくつか候補が絞られるので、同名のロールを選択し、[次へ]ボタンをクリックする。
  5. 「+メンバーを選択する」をクリックする。
  6. 「名前または電子メールアドレスで検索」欄に、Entra設定で追加したアプリケーション名を入力する。すると、下に同名の候補を表示するので選択し、[選択]ボタンをクリックする。
    (忘れた場合は、Microsoft Entra管理センターの左メニューから「エンタープライズアプリ」をクリックしてください。作成したアプリケーション名が表示されます。)
  7. [レビューと割り当て]ボタンをクリックする。するとタブが切り替わるので、[レビューと割り当て]ボタンをクリックする。

🔹 6. シークレット及び実行環境の設定

  • Program.cs内の環境変数を設定する。
    →ソースコードに直接書き込む、または設定ファイルを追加して設定します。今回の例では~\Agent_Step10_AsMcpTool\appsettings.jsonに追加します。こちらも隠蔽したい場合は後述する「ユーザー シークレット」に記載しましょう。
{
  "AZURE_FOUNDRY_PROJECT_ENDPOINT": "https://[Azure AI Foundryリソース名].services.ai.azure.com/api/projects/[Azure AI Foundry プロジェクトリソース名]",
  "AZURE_FOUNDRY_PROJECT_DEPLOYMENT_NAME": "YYYYY"
}

※ビルドで出力しない場合、appsettings.jsonのプロパティを確認してコピーするように設定してください。
image.png

Entraの設定でキーレス認証を行う場合は、以下の設定も行います。
→ Agent_Step10_AsMcpToolを右クリック→「ユーザー シークレットの管理(G)」をクリックし、Entraの設定で確認した内容を設定する。

{
  "AZURE_TENANT_ID": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "AZURE_CLIENT_ID": "YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY",
  "AZURE_CLIENT_SECRET": "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"
}

🔹 7. キーレス認証用にProgram.csを修正する

using Azure.AI.Agents.Persistent;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using ModelContextProtocol.Server;

HostApplicationBuilder builder = Host.CreateEmptyApplicationBuilder(settings: null);
builder.Configuration
    .AddUserSecrets<Program>()      // <-- secrets.json(User Secrets)
    .AddEnvironmentVariables();     // <-- 既存の環境変数も併用
var config = builder.Configuration;

var endpoint = config["AZURE_FOUNDRY_PROJECT_ENDPOINT"]
    ?? throw new InvalidOperationException("AZURE_FOUNDRY_PROJECT_ENDPOINT is not set.");
var deploymentName = config["AZURE_FOUNDRY_PROJECT_DEPLOYMENT_NAME"]
    ?? "gpt-4o-mini";

var tenantId = config["AZURE_TENANT_ID"]
    ?? throw new InvalidOperationException("AZURE_TENANT_ID is not set.");
var clientId = config["AZURE_CLIENT_ID"]
    ?? throw new InvalidOperationException("AZURE_CLIENT_ID is not set.");

var clientSecret = config["AZURE_CLIENT_SECRET"]
    ?? throw new InvalidOperationException("AZURE_CLIENT_SECRET is not set.");
var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);

var persistentAgentsClient = new PersistentAgentsClient(endpoint, credential);

// Create a server side persistent agent
var agentMetadata = await persistentAgentsClient.Administration.CreateAgentAsync(
    model: deploymentName,
    instructions: "You are good at telling jokes, and you always start each joke with 'Aye aye, captain!'.",
    name: "Joker",
    description: "An agent that tells jokes.");

🔹 9. Agent_Step10_AsMcpToolプロジェクトを右クリックして「リビルド」する

🔹 10. MCPサーバーの動作テスト

MCP Inspectorを使う方法とPostmanを使う方法をご紹介いたします。

▸MCP Inspectorを使う

1.) Agent_Step10_AsMcpToolのプロジェクトがあるフォルダでターミナルを開く。
image.png

2.) 以下のコマンドをPowerShellで実行する。

 npx @modelcontextprotocol/inspector dotnet run

3.) [Connect]ボタンをクリックする。
image.png

▸Postmanを使う

1.) 左上にある[新規]をクリックする。
image.png
2.) パネルからMCPをクリックする。(と新たにコレクションが追加される)
image.png
3.) コレクションの三点リーダーから[リクエストを追加] -> [MCP]をクリックする。
image.png
4.) Settingsタブで Request Timeoutを設定する(10000ミリ秒以上にしてください。短すぎるとタイムアウトでエラーになります。)。
image.png
5.) [STDIO]で「Agent_Step10_AsMcpTool」のbinフォルダ配下のexeファイル名までのフルパスを指定します(拡張子は指定不要)。
image.png
6.) [接続]ボタンをクリックすると、Messageタブでツールが使えるようになります。
image.png

まとめ

  • 本記事では、Microsoft Agent Framework のサンプルを Visual Studio 上でビルド・実行し、Azure AI Foundry と(必要に応じて)Microsoft Entra のキーレス認証で連携する手順を実践しました。
  • 主な流れ:リポジトリ取得 → サンプルビルド → スタートアップ設定 → Entra(任意)→ Azure Foundry 作成・権限付与 → シークレット/環境設定 → Program.cs 修正 → MCP Inspector で動作確認。
  • トラブル対処のヒント:環境変数/User Secrets の値、Azure エンドポイント・テナント/クライアントID、ロール割当をまず確認。Visual Studio の出力ログと Inspector の接続ログが有力な手掛かりです。
  • コスト管理:検証後は不要な Azure リソースを削除して課金を止めること。
  • セキュリティ:クライアントシークレット等は絶対に公開しない。User Secrets や Key Vault の利用を推奨。

※お役に立てたらストック、いいねをよろしくお願いします!!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?