mcpField
M
MCPSharp

MCPSharp

ローカル
github.com/afrise開発ツール37771 週間前に更新

MCPSharp について

MCPSharp は、Model Context Protocol のサーバーとクライアントを構築するための .NET ライブラリです。.NET のメソッドを MCP エンドポイントとして公開したい、または既存の MCP サーバーをコードから呼び出したい C# 開発者向けです。Microsoft.Extensions.AI や Semantic Kernel とも統合できます。

主な機能

  1. 01McpTool と McpResource を用いた属性ベースの API
  2. 02JSON-RPC リクエストとレスポンスの自動処理
  3. 03既存の MCP サーバーに接続するクライアントクラス
  4. 04Microsoft.Extensions.AI との統合
  5. 05動的なツール登録と変更通知

活用シーン

  1. 01既存の .NET メソッドを MCP ツールとして公開
  2. 02C# アプリケーションから既存の MCP サーバーを呼び出し
  3. 03Semantic Kernel の関数への MCP インターフェース提供

MCP 対応

本ライブラリは MCP サーバーを構築し、.NET のメソッドをツールおよびリソースとして MCP クライアントに公開します。既存の MCP サーバーに接続するクライアントクラスも含みます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Build NuGet NuGet Downloads

MCPSharp

MCPSharp は、AI アシスタントやモデルが使用する標準化された API プロトコルである Model Context Protocol(MCP)のサーバーとクライアントの構築を支援する .NET ライブラリです。MCPSharp を使用すると、次のことができます。

  • AI モデルが検出して使用できる、MCP 準拠のツールや関数を作成する
  • 使いやすいクライアントを使って、C# コードから既存の MCP サーバーに直接接続する
  • シンプルな属性を使って、.NET メソッドを MCP エンドポイントとして公開する
  • MCP プロトコルの詳細や JSON-RPC 通信をシームレスに処理する

🚀 MCPSharp の新機能

  • Microsoft.Extensions.AI との統合:MCPSharp が Microsoft.Extensions.AI と統合され、ツールを AIFunction として公開できるようになりました
  • Semantic Kernel のサポート:Semantic Kernel の KernelFunctionAttribute を使ってツールを追加できます
  • 動的なツール登録:独自の実装ロジックを使って、ツールをその場で登録できます
  • ツール変更通知:ツールの追加、更新、削除時にサーバーがクライアントへ通知するようになりました
  • 複雑なオブジェクトパラメーターのサポート:ツールのパラメーターにおける複雑なオブジェクトの処理が改善されました
  • エラー処理の改善:詳細なスタックトレースを含む、エラー処理が改善されました

MCPSharp を使用する場面

次のような場合に MCPSharp を使用できます。

  • Anthropic の Claude Desktop などの AI アシスタントが使用できるツールを作成する
  • プロトコルの詳細を扱わずに、MCP 準拠の API を構築する
  • 既存の .NET コードを MCP エンドポイントとして公開する
  • 標準化されたインターフェースを通じて、アプリケーションに AI 機能を追加する
  • 特定のベンダーに縛られずに、Microsoft.Extensions.AI や Semantic Kernel と統合する

機能

  • 使いやすい属性ベースの API([McpTool]、[McpResource])
  • リクエスト/レスポンスを自動処理する JSON-RPC サポートを内蔵
  • パラメーターの自動検証と型変換
  • XML コメントによる充実したドキュメントサポート
  • 基本的な使用に必要な設定はほぼありません

前提条件

  • standard 2.0をサポートする任意のバージョンの .NET

インストール

dotnet add package MCPSharp

クイックスタート

1. ツールを定義する

クラスを作成し、メソッドに [McpTool] 属性を付けます。

using MCPSharp;

public class Calculator
{
    [McpTool("add", "Adds two numbers")]  // Note: [McpFunction] is deprecated, use [McpTool] instead
    public static int Add([McpParameter(true)] int a, [McpParameter(true)] int b)
    {
        return a + b;
    }
}
2. サーバーを起動する
await MCPServer.StartAsync("CalculatorServer", "1.0.0");

StartAsync() メソッドは、基本アセンブリ内で McpTool 属性が付けられたメソッドを自動的にすべて検索します。参照ライブラリ内のメソッドを追加するには、対象のメソッドを含むクラスを T として MCPServer.Register<T>(); を呼び出し、手動で登録できます。メソッドに Semantic Kernel の属性が付けられている場合も、同様に機能します。クライアントがリスト変更通知に対応している場合、ツールが追加登録されたときに通知されます。

高度な使い方

動的なツール登録

独自の実装を使ってツールを動的に登録します。

MCPServer.AddToolHandler(new Tool() 
{
    Name = "dynamicTool",
    Description = "A dynamic tool",
    InputSchema = new InputSchema {
        Type = "object",
        Required = ["input"],
        Properties = new Dictionary<string, ParameterSchema>{
            {"input", new ParameterSchema{Type="string", Description="Input value"}}
        }
    }
}, (string input) => { return $"You provided: {input}"; });
Microsoft.Extensions.AI での使用
// Client-side integration
MCPClient client = new("AIClient", "1.0", "path/to/mcp/server");
IList<AIFunction> functions = await client.GetFunctionsAsync();

このリストは、IChatClientの ChatOptions.Tools プロパティに渡すことができ、MCP サーバーをあらゆる IChatClient 実装でシームレスに使用できます。

Semantic Kernel との統合
using Microsoft.SemanticKernel;

public class MySkillClass
{
    [KernelFunction("MyFunction")]
    [Description("Description of my function")]
    public string MyFunction(string input) => $"Processed: {input}";
}

// Register with MCPServer
MCPServer.Register<MySkillClass>();

現時点では、Semantic Kernel のメソッドを MCP サーバーに登録可能にする唯一の方法です。ここで取り上げていないユースケースがある場合は、お問い合わせください。

API リファレンス

属性
  • [McpTool] - クラスまたはメソッドを MCP ツールとしてマークします

    • オプションのパラメーター:
      • Name - ツール名(デフォルト:クラス名またはメソッド名)
      • Description - ツールの説明
  • [McpParameter] - 関数パラメーターのメタデータを指定します

    • オプションのパラメーター:
      • Description - パラメーターの説明
      • Required - パラメーターが必須かどうか(デフォルト:false)
  • [McpResource] - プロパティまたはメソッドを MCP リソースとしてマークします

    • パラメーター:
      • Name - リソース名
      • Uri - リソース URI(テンプレートを含めることができます)
      • MimeType - リソースの MIME タイプ
      • Description - リソースの説明
サーバーメソッド
  • MCPServer.StartAsync(string serverName, string version) - MCP サーバーを起動します
  • MCPServer.Register<T>() - ツールまたはリソースを含むクラスを登録します
  • MCPServer.AddToolHandler(Tool tool, Delegate func) - 動的ツールを登録します
クライアントメソッド
  • new MCPClient(string name, string version, string server, string args = null, IDictionary<string, string> env = null) - クライアントインスタンスを作成します
  • client.GetToolsAsync() - 利用可能なツールを取得します
  • client.CallToolAsync(string name, Dictionary<string, object> parameters) - ツールを呼び出します
  • client.GetResourcesAsync() - 利用可能なリソースを取得します
  • client.GetFunctionsAsync() - ツールを AIFunctions として取得します

XML ドキュメントのサポート

MCPSharp は XML コメントからドキュメントを自動的に抽出します:

/// <summary>
/// Provides mathematical operations
/// </summary>
public class Calculator
{
    /// <summary>
    /// Adds two numbers together
    /// </summary>
    /// <param name="a">The first number to add</param>
    /// <param name="b">The second number to add</param>
    /// <returns>The sum of the two numbers</returns>
    [McpTool]
    public static int Add(
        [McpParameter(true)] int a,
        [McpParameter(true)] int b)
    {
        return a + b;
    }
}

プロジェクトファイルで XML ドキュメントを有効にします:

<PropertyGroup>
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
    <NoWarn>$(NoWarn);1591</NoWarn>
</PropertyGroup>

これにより、再コンパイルせずに MCP ツールの名前や説明をすばやく変更できます。たとえば、モデルがツールの正しい使い方を理解できていない場合に便利です。

移行に関する注意事項

  • [McpFunction] は非推奨となり、MCP 標準との整合性を高めるため [McpTool] に置き換えられました
  • 一貫性を保つため、MCPServer.RegisterTool<T>() の代わりに MCPServer.Register<T>() を使用してください(旧メソッドも引き続き動作しますが、非推奨です)

コントリビューション

コントリビューションを歓迎します!お気軽に Pull Request を送信してください。

ライセンス

このプロジェクトは MIT License の下でライセンスされています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。