Token导航 LogoToken导航TokenDH.com
API Tomcp logo
AI代理未说明官方级别未说明来源级核验

API Tomcp

MCP Server

一个将ASP.NET Core API端点自动转换为MCP兼容工具的C#源代码生成器,适用于AI助手通过MCP协议与REST API交互的场景。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
API转换C#ClaudeClaude

安装说明

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

作者 / 组织

Kebechet

提供方

Kebechet

最后核验

2026/5/17 20:20

快速接入

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

详细介绍

!["Buy Me A Coffee"](https://www.buymeacoffee.com/kebechet)

应用程序编程接口。ToMcp

](https://www.nuget.org/packages/Kebechet.Api.ToMcp/) ](https://www.nuget.org/packages/Kebechet.Api.ToMcp/) Last updated (main) ![Twitter](https://x.com/samuel_sidor)

一个C#源代码生成器,可以自动转换您的ASP。NET核心API端点到 模型上下文协议(MCP) 工具。

这是什么?

应用程序编程接口。ToMcp分析您现有的ASP。NET Core控制器,并生成与MCP兼容的工具类。这允许AI助手(如Claude)通过MCP协议与您的REST API交互,而无需手动编写任何集成代码。

特性

  • 自动生成刀具 -在编译时扫描控制器并生成MCP工具
  • 属性控制 -使用 [McpExpose][McpIgnore] 微调暴露的端点
  • 灵活选择 -在allowlist之间进行选择(SelectedOnly)或阻止列表(AllExceptExcluded)模式
  • 可自定义命名 -通过配置工具命名格式 generator.json
  • 环路预防 -当MCP工具回调API时,内置中间件可防止无限递归
  • 身份验证转发 -MCP请求的身份验证头转发到API调用

快速开始

1.安装软件包

dotnet add package Kebechet.Api.ToMcp

2.添加发电机配置

创建 Mcp/generator.json 在您的项目中:

{
  "schemaVersion": 1,
  "mode": "SelectedOnly",
  "include": [
    "ProductsController.GetAll",
    "ProductsController.GetById"
  ],
  "exclude": [],
  "naming": {
    "toolNameFormat": "{Controller}_{Action}",
    "removeControllerSuffix": true
  }
}

将其添加到您的 .csproj:


  

3.在Program.cs中连接

using System.Reflection;
using Api.ToMcp.Runtime;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddMcpTools(Assembly.GetExecutingAssembly());

var app = builder.Build();

app.UseMcpLoopPrevention();
app.MapControllers();
app.MapMcpEndpoint("mcp");

app.Run();

4.使用控制器上的属性

[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
    [HttpGet]
    public Task GetAll([FromQuery] string? category = null)
    {
        // ...
    }

    [HttpGet("{id:guid}")]
    public Task GetById(Guid id)
    {
        // ...
    }

    [HttpDelete("{id:guid}")]
    [McpIgnore]  // Exclude dangerous operations
    public Task Delete(Guid id)
    {
        // ...
    }
}

配置

选择模式

模式描述
SelectedOnly只有端点在 include 列表已公开(allowlist)
AllExceptExcluded除以下端点外的所有端点 exclude 被暴露(黑名单)

命名选项

选项描述
toolNameFormat工具名称的格式字符串。支持 {Controller}{Action} 占位符
removeControllerSuffix何时 true,从控制器名称中删除“控制器”

包含/排除模式

  • "ProductsController" -包括/排除整个控制器
  • "ProductsController.GetById" -包括/排除特定行动

属性

[McpExpose]

强制将端点作为MCP工具公开,而不管配置模式如何。

[McpExpose(Name = "GetProduct", Description = "Retrieves a product by ID")]
public Task
 GetById(Guid id) { ... }

[McpIgnore]

强制将终点排除在MCP暴露之外。

[McpIgnore]
public Task Delete(Guid id) { ... }

基于范围的访问控制

应用程序编程接口。ToMcp支持MCP工具的可选基于作用域的访问控制。作用域从HTTP方法映射而来:

作用域HTTP方法
阅读获取、头部、选项
贴、放、贴
删除删除

默认行为

默认情况下, 不进行范围检查 -所有生成的工具都是可访问的。

启用范围验证

要启用范围验证,请配置声明到范围映射器:

using Api.ToMcp.Abstractions.Scopes;

builder.Services.AddMcpTools(Assembly.GetExecutingAssembly(), options =>
{
    options.ClaimName = "permissions"; // JWT claim name
    options.ClaimToScopeMapper = claimValue =>
    {
        var scope = McpScope.None;
        if (claimValue.Contains("read")) scope |= McpScope.Read;
        if (claimValue.Contains("write")) scope |= McpScope.Write;
        if (claimValue.Contains("delete")) scope |= McpScope.Delete;
        return scope;
    };
});

运作原理

  1. MCP请求与包含索赔的JWT一起到达
  2. 已配置 ClaimName 从用户的声明中读取
  3. ClaimToScopeMapper 将索赔价值转换为 McpScope
  4. 如果未授予工具所需的作用域(基于HTTP方法),则返回错误

JWT索赔示例

{ "permissions": "mcp:read mcp:write" }

这笔赠款 ReadWrite 范围,但不是 Delete.

运作原理

  1. 编译时:源代码生成器扫描您的控制器以查找HTTP操作
  2. 代码生成:对于每个选定的端点,都会生成一个工具类,其中包含 [McpServerToolType] 属性
  3. 运行时:当MCP客户端调用工具时,它会在内部通过HTTP调用您的API
  4. 环路预防:The X-MCP-Internal-Call 标头阻止递归调用MCP端点

生成代码示例

对于 ProductsController.GetById(Guid id),生成器创建:

[McpServerToolType]
public static class ProductsController_GetByIdTool
{
    [McpServerTool(Name = "Products_GetById")]
    [Description("Invokes ProductsController.GetById")]
    public static async Task InvokeAsync(
        IMcpHttpInvoker invoker,
        [Description("Parameter: id")] Guid id)
    {
        var route = $"/api/products/{Uri.EscapeDataString(id.ToString())}";
        return await invoker.GetAsync(route);
    }
}

需求

  • .NET 8.0或更高版本
  • ASP。NET核心

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

目录标签

目录标签

API转换C#Claude源代码生成器本地部署MCP协议ASP.NETCoreAI集成

支持客户端

Claude

接入字段

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

未说明

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

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

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

0

权限和风险

未说明none部署方式未说明

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

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP