Token导航 LogoToken导航TokenDH.com
MCP Sharp logo
开发工具HTTP官方级别未说明来源级核验

MCP Sharp

MCP Server

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.

工具数

0

提示词数

0

GitHub Stars

369

资源数

0
C#Claude开发工具Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

afrise

提供方

afrise

最后核验

2026/5/18 04:07

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

![Build](https://github.com/afrise/MCPSharp/actions/workflows/build.yml) ![NuGet](https://www.nuget.org/packages/MCPSharp) ](https://www.nuget.org/packages/MCPSharp)

MCPSharp

MCPSharp是一家。NET库,帮助您构建模型上下文协议(MCP)服务器和客户端-人工智能助手和模型使用的标准化API协议。使用MCPSharp,您可以:

  • 创建符合MCP的工具和功能,人工智能模型可以发现和使用
  • 使用易于使用的客户端从C#代码直接连接到现有的MCP服务器
  • 暴露你的。NET方法作为具有简单属性的MCP端点
  • 无缝处理MCP协议细节和JSON-RPC通信

🚀 MCPSharp的新功能

  • 微软。扩展。人工智能集成:MCPSharp现在与微软集成。扩展。AI,允许工具作为AIFunctions公开
  • 语义内核支持:使用语义内核的KernelFunctionAttribute添加工具
  • 动态工具注册:使用自定义实现逻辑动态注册工具
  • 工具更改通知:服务器现在会在添加、更新或删除工具时通知客户端
  • 复杂对象参数支持:更好地处理工具参数中的复杂对象
  • 更好的错误处理:通过详细的堆栈跟踪改进了错误处理

何时使用MCPSharp

在以下情况下使用MCPSharp:

  • 创建人工智能助手(如Anthropic的Claude Desktop)可以使用的工具
  • 构建符合MCP的API,而无需处理协议细节
  • 暴露现有。NET代码作为MCP端点
  • 通过标准化界面为您的应用程序添加人工智能功能
  • 与Microsoft集成。扩展。AI和/或语义内核,无需锁定单个供应商

特性

  • 易于使用的基于属性的API([McpTool], [McpResource])
  • 内置JSON-RPC支持,具有自动请求/响应处理功能
  • 自动参数验证和类型转换
  • 通过XML注释提供丰富的文档支持
  • 基本使用所需的配置接近于零

先决条件

安装

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属性的任何方法。为了添加引用库中的任何方法,您可以通过调用手动注册它们 MCPServer.Register(); 随着 T 即包含所需方法的类。如果你的方法用语义内核属性标记,这也会起作用。如果客户端支持列表更改通知,则会在注册其他工具时收到通知。

高级用法

动态工具注册

使用自定义实现动态注册工具:

MCPServer.AddToolHandler(new Tool() 
{
    Name = "dynamicTool",
    Description = "A dynamic tool",
    InputSchema = new InputSchema {
        Type = "object",
        Required = ["input"],
        Properties = new Dictionary{
            {"input", new ParameterSchema{Type="string", Description="Input value"}}
        }
    }
}, (string input) => { return $"You provided: {input}"; });

与Microsoft一起使用。扩展。人工智能

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

此列表可以插入 聊天选项。工具 房地产A IChat客户端,允许MCP服务器与Any IChatClient实现无缝使用。

语义内核集成

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

目前,这是使语义内核方法可在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() -注册包含工具或资源的类
  • MCPServer.AddToolHandler(Tool tool, Delegate func) -注册动态工具

客户端方法

  • new MCPClient(string name, string version, string server, string args = null, IDictionary env = null) -创建客户端实例
  • client.GetToolsAsync() -获取可用工具
  • client.CallToolAsync(string name, Dictionary parameters) -调用工具
  • client.GetResourcesAsync() -获取可用资源
  • client.GetFunctionsAsync() -将工具作为AIFunctions获取

XML文档支持

MCPSharp自动从XML注释中提取文档:

/// 
/// Provides mathematical operations
/// 
public class Calculator
{
    /// 
    /// Adds two numbers together
    /// 
    /// 
The first number to add

    /// 
The second number to add

    /// The sum of the two numbers
    [McpTool]
    public static int Add(
        [McpParameter(true)] int a,
        [McpParameter(true)] int b)
    {
        return a + b;
    }
}

在项目文件中启用XML文档:


    true
    $(NoWarn);1591

这使您能够快速更改MCP工具的名称和描述,而无需重新编译。例如,如果你发现模型在理解如何正确使用它方面有困难。

迁移说明

  • [McpFunction] 已弃用,并替换为 [McpTool] 更好地与MCP标准保持一致
  • 使用 MCPServer.Register() 而不是 MCPServer.RegisterTool() 为了保持一致性(旧方法仍然有效,但已被弃用)

贡献

我们欢迎捐款!请随时提交拉取请求。

许可证

该项目根据MIT许可证获得许可。

目录标签

目录标签

C#Claude开发工具developer-toolssdkaidotnetmcpdotnet-standardsemantic-kernelaifunctionsAI工具集成本地部署.NET库MCP协议JSON-RPC语义内核

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

HTTP

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

HTTPnone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP