1. Conduid
  2. Maps
  3. CognitiveForge.McpCategoryRouting
MCP server · Maps

CognitiveForge.McpCategoryRouting

Category-based routing for .NET MCP servers. Expose different subsets of tools, prompts, and resources on different URL paths from a single MCP server.

34Low

Scored 6 months ago · breakdown

About CognitiveForge.McpCategoryRouting

CognitiveForge.McpCategoryRouting is an MCP server in the Maps category: category-based routing for .NET MCP servers. Expose different subsets of tools, prompts, and resources on different URL paths from a single MCP server.

Install

From source
git clone https://github.com/Cognitive-Forge-AI/CognitiveForge.McpCategoryRouting

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

✦

Ask AI about CognitiveForge.McpCategoryRouting

Powered by Claude · Grounded in docs

I know everything about CognitiveForge.McpCategoryRouting. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

  • ✓README presentThe repository ships documentation.

5 checks have not been run yet.

README

CognitiveForge.McpCategoryRouting

Category-based routing for .NET MCP servers. Expose different subsets of tools, prompts, and resources on different URL paths from a single MCP server.

NuGet version codecov CodeRabbit Pull Request Reviews

Overview

This library hooks into the Model Context Protocol (MCP) SDK for .NET and filters MCP primitives per HTTP session based on a route parameter. For example, app.MapMcp("/{category}") lets requests to /analytics see only analytics tools while /ops sees only operations tools.

Filtering happens at session connection time via IPostConfigureOptions<HttpServerTransportOptions>, so there is no per-message overhead.

Prerequisites

Installation

dotnet add package CognitiveForge.McpCategoryRouting

Quick Start

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

See the samples/Basic project for a complete working example.

Configuration

Pass an options delegate to AddCategoryFilters():

.AddCategoryFilters(options =>
{
    options.RouteValueName = "category";
    options.CaseInsensitive = true;
    options.UncategorizedBehavior = UncategorizedBehavior.ExcludeAlways;
});
Property Default Description
RouteValueName "category" ASP.NET Core route parameter name to read
CaseInsensitive true Case-insensitive category matching
DisableFilteringWhenCategoryMissing true Skip filtering when the route has no category segment (expose all primitives)
UncategorizedBehavior ExcludeAlways How to handle primitives with no category (see below)
FallbackCategory "mcp" Route value that activates uncategorized primitives when using FallbackRoute behavior

Category Assignment

Apply [McpCategory] to a class (affects all tools in the class) or to individual methods:

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

[System.ComponentModel.Category] is also supported as a fallback when [McpCategory] is not present.

Uncategorized Primitives

The UncategorizedBehavior enum controls visibility of primitives that have no category:

Value Behavior
IncludeAlways Always visible on every route
ExcludeAlways Never visible (default)
FallbackRoute Visible only when the route matches FallbackCategory

Building

dotnet build CognitiveForge.McpCategoryRouting.slnx

Testing

# 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"

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

License

This project is licensed under the MIT License.

README copy captured when this server was indexed; it may lag the repository. The original is authoritative.

Questions

About CognitiveForge.McpCategoryRouting

How do I install CognitiveForge.McpCategoryRouting?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is CognitiveForge.McpCategoryRouting safe to use with an AI agent?

Its trust score is 34 out of 100 (low). It passes 1 of the 1 static security checks run so far. It has no ConduID identity yet, so agent calls to it are not receipted.

Is CognitiveForge.McpCategoryRouting still maintained?

Conduid hasn't recorded a commit date for this repository yet. Check the repository directly for recent activity.