类别路由工具

CognitiveForge.McpCategoryRouting 是一个用于.NET MCP服务器的类别路由工具,允许在不同URL路径上暴露不同的工具、提示和资源子集。

  • by Cognitive-Forge-AI
  • C#
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Cognitive-Forge-AI/CognitiveForge.McpCategoryRouting

使用说明

认知伪造.Mcp类别路由

基于类别的路由。NET MCP服务器。从单个MCP服务器的不同URL路径上公开工具、提示和资源的不同子集。

概述

这个图书馆与 模型上下文协议(MCP) SDK用于。NET,并根据路由参数过滤每个HTTP会话的MCP原语。例如, app.MapMcp("/{category}") 让请求 /analytics 仅查看分析工具 /ops 只看到操作工具。

过滤在会话连接时通过以下方式进行 IPostConfigureOptions<HttpServerTransportOptions>,因此没有每条消息的开销。

先决条件

安装

dotnet add package CognitiveForge.McpCategoryRouting

快速开始

using CognitiveForge.McpCategoryRouting;
using ModelContextProtocol.Server;
using System.ComponentModel;

var builder = WebApplication.CreateBuilder(args);

builder.Services
    .AddMcpServer()
    .WithHttpTransport()
    .WithToolsFromAssembly(typeof(Program).Assembly)
    .AddCategoryFilters(); // enable category filtering

var app = builder.Build();
app.MapMcp("/{category}"); // standard MapMcp with a route parameter
app.Run();

// Tools categorized as "analytics" — visible at /analytics
[McpServerToolType]
[McpCategory("analytics")]
public static class AnalyticsTools
{
    [McpServerTool, Description("Returns a tiny analytics summary.")]
    public static string GetSummary() => "Users: 42, ConversionRate: 3.1%";
}

// Tools categorized as "ops" — visible at /ops
[McpServerToolType]
[McpCategory("ops")]
public static class OperationsTools
{
    [McpServerTool, Description("Returns a simple health status.")]
    public static string GetHealth() => "OK";
}

请参阅 样品/基本 一个完整的工作示例。

配置

将选项委托传递给 AddCategoryFilters():

.AddCategoryFilters(options =>
{
    options.RouteValueName = "category";
    options.CaseInsensitive = true;
    options.UncategorizedBehavior = UncategorizedBehavior.ExcludeAlways;
});
属性 默认值 描述
RouteValueName "category" ASP。要读取的NET Core路由参数名称
CaseInsensitive true 不区分大小写的类别匹配
DisableFilteringWhenCategoryMissing true 当路由没有类别段时跳过过滤(暴露所有基元)
UncategorizedBehavior ExcludeAlways 如何处理没有类别的图元(见下文)
FallbackCategory "mcp" 使用时激活未分类图元的路由值 FallbackRoute 行为学

类别分配

应用 [McpCategory] 对于类(影响类中的所有工具)或单个方法:

[McpCategory("analytics")]
[McpCategory("reporting")] // multiple categories allowed
public static class MultiCategoryTools { ... }

[System.ComponentModel.Category] 也支持在以下情况下作为回退 [McpCategory] 不存在。

未分类的图元

这 UncategorizedBehavior enum控制没有类别的基元的可见性:

价值观 行为
IncludeAlways 在每条路线上始终可见
ExcludeAlways 从不可见(默认)
FallbackRoute 仅当路线匹配时可见 FallbackCategory

建筑

dotnet build CognitiveForge.McpCategoryRouting.slnx

测试

# Run all tests
dotnet test CognitiveForge.McpCategoryRouting.slnx

# Run unit tests only
dotnet test src/CognitiveForge.McpCategoryRouting.Tests

# Run integration tests only
dotnet test src/CognitiveForge.McpCategoryRouting.IntegrationTests

# Run a single test
dotnet test src/CognitiveForge.McpCategoryRouting.Tests --filter "FullyQualifiedName~GetCategories_should_return_empty"

贡献

欢迎投稿!请打开问题或提交拉取请求。

许可证

该项目根据 MIT许可证.