Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Add the MCP server to the ASP.NET Core minimal API

2025年09月18日に「Dev.to」が公開したITニュース「Add the MCP server to the ASP.NET Core minimal API」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

ASP.NET Core Minimal APIで、AIからの操作を可能にするMCPサーバーの導入方法を解説。必要なパッケージを入れ、サーバーと「ツール」と呼ばれる機能を登録、認証を設定する。既存のAPIを活かし、AIが使いやすいAPIにする手順を紹介する。

ITニュース解説

記事は、ASP.NET CoreのMinimal APIにModel Context Protocol(MCP)サーバーを追加する具体的な方法を解説している。ASP.NET Core Minimal APIは、C#と.NETフレームワークを用いて、最小限のコードでWebアプリケーションのAPIを構築できるシンプルな手法だ。一方、MCPとは、主に大規模言語モデル(LLM)のようなAIが外部のサービスやアプリケーションと連携し、情報を取得したり特定のアクションを実行したりするための新しいプロトコルである。これは、AIがより効率的にツールを「発見」し、「利用」できるように設計されており、人間が使うREST APIとは異なる視点からAPI機能を公開する仕組みを提供する。この記事は、既存のMinimal APIにMCPサーバーを組み込むことで、人間だけでなくAIも利用できる「スマートな」APIを構築する手順を紹介している。

まず、MCPサーバーの機能を使うために必要なソフトウェア部品(NuGetパッケージ)をプロジェクトにインストールする作業から始める。NuGetパッケージは、.NETプロジェクトに外部ライブラリを追加するための仕組みで、ここでは「ModelContextProtocol」と「ModelContextProtocol.AspNetCore」という二つのパッケージを導入する。これらはMCPの基本機能と、ASP.NET CoreアプリケーションでMCPを動かすための連携機能を提供する。常に最新の安定版を使用することが推奨されている。

次に、インストールしたMCPサーバーをアプリケーションの起動プロセス(ホスト)に組み込む。ASP.NET Coreアプリケーションは、起動時にさまざまなサービスを登録し、ミドルウェアと呼ばれるHTTPリクエスト処理のパイプラインを設定する。MCPサーバーも、この段階でアプリケーションのサービスとして登録され、HTTPリクエストを処理するミドルウェアとして機能するように設定される。具体的には、builder.Services.AddMcpServer()というコードでMCPサーバー自体をサービスに追加し、WithHttpTransport()でHTTPプロトコルを介してMCP通信を行うことを指定する。さらに、WithToolsFromAssembly()を使用すると、開発者が定義したMCPツールを自動的に検出し、登録してくれるため、手動で一つずつ登録する手間が省ける。そして、app.MapMcp(pattern: "api/mcp")という記述により、「api/mcp」というURLパスでMCPサーバーが外部に公開される。これにより、アプリケーションは通常のREST APIエンドポイントと並行して、MCP経由の通信も受け付けるようになる。

三番目の重要なステップは、AIが利用する具体的な「ツール」を定義することだ。MCPにおけるツールとは、AIが外部のシステムから情報を取得したり、特定のアクションを実行したりするために呼び出すことができる機能やメソッドを指す。この仕組みの利点は、既存のAPIエンドポイントやその処理ロジックをMCPツールとして再利用できることにある。ツールを定義するには、C#の「属性」(コードに特別な意味やメタデータを付与するマーク)を使用する。[McpServerToolType]属性をツールを含むクラスに、[McpServerTool]属性をツールとして公開したいメソッドに付与する。ここで特に重要なのは、Description属性を使ってツールの機能や目的を明確かつ簡潔に記述することだ。これは、AIがそのツールの用途を正確に理解し、適切な場面で利用するために不可欠な情報となる。例えば、データベースからユーザーのリストをページング形式で取得する既存のAPIメソッドがある場合、これをMCPツールとして公開し、「get_paged_list_users」という名前と「ユーザーのカーソルベースのページングされたリストを取得する」といった説明を付けることで、AIはその機能を容易に認識し、利用できるようになる。このように定義されたMCPツールは、ASP.NET Coreの依存性の注入(DI)など、既存のさまざまな機能をそのまま利用できるため、開発者は大きな学習コストなしにAI向けのツールを開発できる。

さらに、アプリケーションのセキュリティを確保するため、認証・認可機能をMCPサーバーに追加できる。Web APIと同様に、MCPも既存の認証・認可の仕組みを再利用できるため、新たに複雑な設定をする必要はない。記事では、OAuth 2.1とJWT Bearer認証という、現代のWebアプリケーションで広く採用されているセキュリティ技術を使用する例が示されている。具体的には、builder.Services.AddAuthenticationAddJwtBearerでJWT認証の設定を行い、builder.Services.AddAuthorizationで認可ポリシーを定義する。その後、app.MapMcp(pattern: "api/mcp").RequireAuthorization()というコードをMCPエンドポイントの定義に追加するだけで、そのエンドポイントへのアクセスに認証が必要となる。これにより、許可されたユーザーやサービスだけがMCPツールを利用できるようになり、APIの安全性が高まる。

最後に、構築したMCPサーバーが正しく動作するかどうかを確認するためのテスト方法が紹介されている。開発者は、Model Context Protocolの公式インスペクターアプリや、Visual Studio CodeのCopilotプラグインなど、MCPをサポートする多様なツールを利用してテストを実行できる。これらのツールを使用することで、AIが実際にMCPツールをどのように発見し、どのように呼び出すかをシミュレートし、確認することが可能だ。

結論として、この記事は、ASP.NET CoreのMinimal APIにMCPサーバーサポートを追加する簡潔な方法を示している。この設定により、開発者は既存のAPIハンドラー、認証ロジック、依存性の注入といった機能を再利用しながら、人間向けのREST APIとAI向けのMCPの両方を提供するサーバーを構築できる。特に重要なのは、ツールとそのパラメーターに明確な説明を提供することで、大規模言語モデル(LLM)などのAIがこれらのツールを容易に発見し、効果的に利用できるようになる点だ。これは、AIがより高度で複雑なタスクをこなすための新しい道を開くことになるだろう。

関連コンテンツ

関連IT用語