Tharga.Mcp 0.1.4

dotnet add package Tharga.Mcp --version 0.1.4
                    
NuGet\Install-Package Tharga.Mcp -Version 0.1.4
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Tharga.Mcp" Version="0.1.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Tharga.Mcp" Version="0.1.4" />
                    
Directory.Packages.props
<PackageReference Include="Tharga.Mcp" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Tharga.Mcp --version 0.1.4
                    
#r "nuget: Tharga.Mcp, 0.1.4"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Tharga.Mcp@0.1.4
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Tharga.Mcp&version=0.1.4
                    
Install as a Cake Addin
#tool nuget:?package=Tharga.Mcp&version=0.1.4
                    
Install as a Cake Tool

Tharga.Mcp

Foundation package for MCP (Model Context Protocol) infrastructure in the Tharga ecosystem. Wraps the official ModelContextProtocol C# SDK with a Tharga-flavored registration pattern so downstream provider packages (Tharga.MongoDB.Mcp, Tharga.Platform.Mcp, etc.) compose cleanly inside a single AddThargaMcp(...) callback.

Tharga.Mcp itself has no dependency on any other Tharga package — the auth/scope/audit integration lives in Tharga.Platform.Mcp (Phase 1).

Install

dotnet add package Tharga.Mcp

Minimal usage

using Tharga.Mcp;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddThargaMcp(mcp =>
{
    mcp.Services.AddMcpServer().WithTools<HelloTools>();
});

var app = builder.Build();
app.UseThargaMcp();
app.Run();

UseThargaMcp() exposes the MCP endpoint at ThargaMcpOptions.EndpointBasePath (default /mcp). It also honors ThargaMcpOptions.RequireAuth (default true) — when set, the endpoint calls .RequireAuthorization() and requires the consumer to wire UseAuthorization() + an authentication scheme in the pipeline. Set mcp.Options.RequireAuth = false during registration to expose the endpoint anonymously.

An [Obsolete] MapMcp() alias still works for one release cycle but will be removed — update when you can.

Defining tools

Any class tagged with [McpServerToolType] exposing [McpServerTool] methods is recognised by the SDK:

[McpServerToolType]
public sealed class HelloTools
{
    [McpServerTool, Description("Returns a greeting for the given name.")]
    public string Greet([Description("The name to greet.")] string name)
        => $"Hello, {name}!";
}

Provider contracts

Tharga.Mcp also defines IMcpResourceProvider and IMcpToolProvider with per-scope registration (User, Team, System). This is the path for packages that need dynamic tools/resources — where the set of tools is known only at runtime (e.g. one MCP resource per MongoDB collection).

public sealed class TimeToolProvider : IMcpToolProvider
{
    public McpScope Scope => McpScope.System;

    public Task<IReadOnlyList<McpToolDescriptor>> ListToolsAsync(IMcpContext context, CancellationToken ct)
        => Task.FromResult<IReadOnlyList<McpToolDescriptor>>(
            [new McpToolDescriptor { Name = "time_now", Description = "Current UTC time." }]);

    public Task<McpToolResult> CallToolAsync(string name, JsonElement args, IMcpContext context, CancellationToken ct)
        => Task.FromResult(new McpToolResult
        {
            Content = [new McpContent { Text = DateTimeOffset.UtcNow.ToString("O") }],
        });
}

builder.Services.AddThargaMcp(mcp =>
{
    mcp.AddToolProvider<TimeToolProvider>();
});

Provider packages expose an extension method on IThargaMcpBuilder so consumers can compose them inside the same callback:

builder.Services.AddThargaMcp(mcp =>
{
    mcp.AddMongoDB();   // from Tharga.MongoDB.Mcp
    mcp.AddPlatform();  // from Tharga.Platform.Mcp
    mcp.AddToolProvider<MyCustomProvider>();
});

The two paths (attribute-based [McpServerTool] and contract-based IMcpToolProvider) work side by side — use attributes for statically-declared tools, providers for dynamic or programmatically-generated tools. Scope filtering (/mcp/me, /mcp/team, /mcp/system) activates in Phase 1 once Tharga.Platform.Mcp populates IMcpContextAccessor.Current from the authenticated request.

Endpoint scopes

The master plan defines three scopes — User (/mcp/me), Team (/mcp/team), System (/mcp/system). Phase 0 ships a single endpoint (/mcp) that exposes registered tools and resources filtered by a scope hierarchy: a caller at System sees User + Team + System providers; Team sees User + Team; User sees only User. The caller's effective scope is read from IMcpContextAccessor.Current (populated by Tharga.Platform.Mcp from the authenticated principal, or left anonymous in Phase 0). When no context is populated, every provider is visible. The three-endpoint split is deferred — see the master plan decision 2026-04-18.

Sample

Runnable end-to-end sample lives under Sample/Tharga.Mcp.Sample/. Start it and connect with @modelcontextprotocol/inspector:

cd Sample/Tharga.Mcp.Sample
dotnet run
# in another terminal:
npx @modelcontextprotocol/inspector http://localhost:5138/mcp

License

MIT. See LICENSE.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (5)

Showing the top 5 NuGet packages that depend on Tharga.Mcp:

Package Downloads
Tharga.Platform.Mcp

Platform bridge for Tharga.Mcp. Provides Platform-backed IMcpContext, scope enforcement, audit logging, and authentication for MCP tool and resource invocations.

Tharga.MongoDB.Mcp

Exposes Tharga.MongoDB monitoring data (collections, calls, clients) and actions (touch, rebuild index) via MCP (Model Context Protocol). Plugs into Tharga.Mcp.

Quilt4Net.Toolkit.Mcp

MCP (Model Context Protocol) provider for Quilt4Net.Toolkit. Exposes Application Insights query operations as MCP tools and resources, plugging into the Tharga.Mcp ecosystem so AI agents can look up incidents and correlate logs.

Tharga.Cache.Mcp

Exposes Tharga.Cache monitoring data (cache types, items, persistence health, fetch queue) and actions (clear all, clear stale) via MCP (Model Context Protocol). Plugs into Tharga.Mcp.

Tharga.Communication.Mcp

Exposes Tharga.Communication runtime data (connected clients, active subscriptions, registered handlers) via MCP (Model Context Protocol). Plugs into Tharga.Mcp.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.4 61 5/14/2026
0.1.3 772 4/28/2026
0.1.2 118 4/20/2026
0.1.1 148 4/19/2026
0.1.0 123 4/18/2026