Cover image
Try Now
2025-03-16

MCPSHARP是一个.NET库,可帮助您构建模型上下文协议(MCP)服务器和客户端 - AI助手和模型使用的标准化API协议。

3 years

Works with Finder

5

Github Watches

31

Github Forks

265

Github Stars

Build NuGet NuGet Downloads

MCPSharp

MCPSharp is a .NET library that helps you build Model Context Protocol (MCP) servers and clients - the standardized API protocol used by AI assistants and models. With MCPSharp, you can:

  • Create MCP-compliant tools and functions that AI models can discover and use
  • Connect directly to existing MCP servers from C# code with an easy to use client
  • Expose your .NET methods as MCP endpoints with simple attributes
  • Handle MCP protocol details and JSON-RPC communication seamlessly

🚀 What's New in MCPSharp

  • Microsoft.Extensions.AI Integration: MCPSharp now integrates with Microsoft.Extensions.AI, allowing tools to be exposed as AIFunctions
  • Semantic Kernel Support: Add tools using Semantic Kernel's KernelFunctionAttribute
  • Dynamic Tool Registration: Register tools on-the-fly with custom implementation logic
  • Tool Change Notifications: Server now notifies clients when tools are added, updated, or removed
  • Complex Object Parameter Support: Better handling of complex objects in tool parameters
  • Better Error Handling: Improved error handling with detailed stack traces

When to Use MCPSharp

Use MCPSharp when you want to:

  • Create tools that AI assistants like Anthropic's Claude Desktop can use
  • Build MCP-compliant APIs without dealing with the protocol details
  • Expose existing .NET code as MCP endpoints
  • Add AI capabilities to your applications through standardized interfaces
  • Integrate with Microsoft.Extensions.AI and/or Semantic Kernel without locking into a single vendor

Features

  • Easy-to-use attribute-based API ([McpTool], [McpResource])
  • Built-in JSON-RPC support with automatic request/response handling
  • Automatic parameter validation and type conversion
  • Rich documentation support through XML comments
  • Near zero configuration required for basic usage

Prerequisites

Installation

dotnet add package MCPSharp

Quick Start

1. Define a Tool

Create a class and mark your method(s) with the [McpTool] attribute:

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. Start the Server

await MCPServer.StartAsync("CalculatorServer", "1.0.0");

The StartAsync() method will automatically find any methods in the base assembly that are marked with the McpTool attribute. In order to add any methods that are in a referenced library, you can manually register them by calling MCPServer.Register<T>(); with T being the class containing the desired methods. If your methods are marked with Semantic Kernel attributes, this will work as well. If the client supports list changed notifications, it will be notified when additional tools are registered.

Advanced Usage

Dynamic Tool Registration

Register tools dynamically with custom implementation:

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}"; });

Use with Microsoft.Extensions.AI

// Client-side integration
MCPClient client = new("AIClient", "1.0", "path/to/mcp/server");
IList<AIFunction> functions = await client.GetFunctionsAsync();

This list can be plugged into the ChatOptions.Tools property for an IChatClient, Allowing MCP servers to be used seamlessly with Any IChatClient Implementation.

Semantic Kernel Integration

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>();

Currently, This is the only way to make a Semantic kernel method registerable with the MCP server. If you have a use case that is not covered here, please reach out!

API Reference

Attributes

  • [McpTool] - Marks a class or method as an MCP tool

    • Optional parameters:
      • Name - The tool name (default: class/method name)
      • Description - Description of the tool
  • [McpParameter] - Provides metadata for function parameters

    • Optional parameters:
      • Description - Parameter description
      • Required - Whether the parameter is required (default: false)
  • [McpResource] - Marks a property or method as an MCP resource

    • Parameters:
      • Name - Resource name
      • Uri - Resource URI (can include templates)
      • MimeType - MIME type of the resource
      • Description - Resource description

Server Methods

  • MCPServer.StartAsync(string serverName, string version) - Starts the MCP server
  • MCPServer.Register<T>() - Registers a class containing tools or resources
  • MCPServer.AddToolHandler(Tool tool, Delegate func) - Registers a dynamic tool

Client Methods

  • new MCPClient(string name, string version, string server, string args = null, IDictionary<string, string> env = null) - Create a client instance
  • client.GetToolsAsync() - Get available tools
  • client.CallToolAsync(string name, Dictionary<string, object> parameters) - Call a tool
  • client.GetResourcesAsync() - Get available resources
  • client.GetFunctionsAsync() - Get tools as AIFunctions

XML Documentation Support

MCPSharp automatically extracts documentation from XML comments:

/// <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;
    }
}

Enable XML documentation in your project file:

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

This allows you to be able to quickly change the names and descriptions of your MCP tools without having to recompile. For example, if you find the model is having trouble understanding how to use it correctly.

Migration Notes

  • [McpFunction] is deprecated and replaced with [McpTool] for better alignment with MCP standards
  • Use MCPServer.Register<T>() instead of MCPServer.RegisterTool<T>() for consistency (old method still works but is deprecated)

Contributing

We welcome contributions! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License.

相关推荐

  • Joshua Armstrong
  • Confidential guide on numerology and astrology, based of GG33 Public information

  • Emmet Halm
  • Converts Figma frames into front-end code for various mobile frameworks.

  • Elijah Ng Shi Yi
  • Advanced software engineer GPT that excels through nailing the basics.

  • https://maiplestudio.com
  • Find Exhibitors, Speakers and more

  • Alexandru Strujac
  • Efficient thumbnail creator for YouTube videos

  • https://zenepic.net
  • Embark on a thrilling diplomatic quest across a galaxy on the brink of war. Navigate complex politics and alien cultures to forge peace and avert catastrophe in this immersive interstellar adventure.

  • Beria Joey
  • 你的职业规划师,不走弯路就问我。Sponsor:小红书“ ItsJoe就出行 ”

  • pontusab
  • 光标与风浪冲浪社区,查找规则和MCP

  • av
  • 毫不费力地使用一个命令运行LLM后端,API,前端和服务。

  • GeyserMC
  • 与Minecraft客户端/服务器通信的库。

  • Mintplex-Labs
  • 带有内置抹布,AI代理,无代理构建器,MCP兼容性等的多合一桌面和Docker AI应用程序。

  • 1Panel-dev
  • 🔥1Panel提供了直观的Web接口和MCP服务器,用于在Linux服务器上管理网站,文件,容器,数据库和LLMS。

  • awslabs
  • AWS MCP服务器 - 将AWS最佳实践直接带入您的开发工作流程的专门MCP服务器

  • WangRongsheng
  • 🧑‍🚀 llm 资料总结(数据处理、模型训练、模型部署、 o1 模型、mcp 、小语言模型、视觉语言模型)|摘要世界上最好的LLM资源。

  • appcypher
  • 很棒的MCP服务器 - 模型上下文协议服务器的策划列表

  • chongdashu
  • 使用模型上下文协议(MCP),启用Cursor,Windsurf和Claude Desktop等AI助手客户,以通过自然语言控制虚幻引擎。

  • GLips
  • MCP服务器向像光标这样的AI编码代理提供FIGMA布局信息

    Reviews

    4 (1)
    Avatar
    user_opkCw8MB
    2025-04-17

    MCPSharp is an outstanding tool for anyone involved in automating tasks. Developed by afrise, it offers robust features and a user-friendly interface that makes automating processes seamless. I have been using it for several projects and it never fails to deliver reliable performance. Highly recommended for anyone looking to streamline their workflow! Check it out on GitHub: https://github.com/afrise/MCPSharp