认知伪造.Mcp类别路由
基于类别的路由。NET MCP服务器。从单个MCP服务器的不同URL路径上公开工具、提示和资源的不同子集。
](https://www.nuget.org/packages/CognitiveForge.McpCategoryRouting/)   
概述
这个图书馆与 模型上下文协议(MCP) SDK用于。NET,并根据路由参数过滤每个HTTP会话的MCP原语。例如, app.MapMcp("/{category}") 让请求 /analytics 仅查看分析工具 /ops 只看到操作工具。
过滤在会话连接时通过以下方式进行 IPostConfigureOptions,因此没有每条消息的开销。
先决条件
- .NET 10 SDK 或以后
安装
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许可证.
