もくじ
https://tera1707.com/entry/2022/02/06/144447
やりたいこと
MCPサーバーの3大プリミティブ(基本機能)の
- ツール
- プロンプト
- リソース
を試したい。
今回は「ツール」をやる。
サンプルコード
下記のコードで、「ツール」を作った。
「ツール」の記述は下記のようにして、
using ModelContextProtocol.Server; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.Text.Json; namespace ReviewWithOurCodingRulesMcpServer; [McpServerToolType] internal static class ReviewWithOutCodingRulesTools { [McpServerTool, Description("Get C++ Coding Rules For Code Review. 私たちのC++コーディングルールを取得する")] public static async Task<string> GetCppCodingRulesForCodeReview() { var url = @"https://tera1707.com/entry/2025/07/20/230051"; return await GetMarkdownFromUrlAsync(url); } [McpServerTool, Description("Get C# Coding Rules For Code Review. 私たちのC#コーディングルールを取得する")] public static async Task<string> GetCsCodingRulesForCodeReview() { var url = @"https://tera1707.com/entry/2025/07/20/235616"; return await GetMarkdownFromUrlAsync(url); } private static async Task<string> GetMarkdownFromUrlAsync(string url) { using var client = new HttpClient(); var response = await client.GetAsync(url); response.EnsureSuccessStatusCode(); var markdown = await response.Content.ReadAsStringAsync(); return markdown; } }
それの登録をメイン側でやればそれだけで「ツール」ができる。
(ツールの登録は.WithToolsFromAssembly();の部分。)
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using ModelContextProtocol; using System.Net.Http.Headers; var builder = Host.CreateEmptyApplicationBuilder(settings: null); builder.Services.AddMcpServer() .WithStdioServerTransport() .WithPromptsFromAssembly() .WithToolsFromAssembly(); var app = builder.Build(); await app.RunAsync();