Skip to content

salty-flower/ModelContextProtocol.NET

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
GitHub Actions YAML generator [bot]
Dec 18, 2024
d32bd35 Β· Dec 18, 2024

History

21 Commits
Dec 18, 2024
Dec 18, 2024
Dec 18, 2024
Dec 18, 2024
Dec 18, 2024
Dec 18, 2024
Dec 18, 2024
Dec 18, 2024
Dec 18, 2024
Dec 18, 2024
Dec 18, 2024

Repository files navigation

ModelContextProtocol.NET

NuGet Version

A C# SDK implementation of the Model Context Protocol (MCP), enabling seamless integration between AI models and development environments.

Overview

ModelContextProtocol.NET is a native .NET implementation of the Model Context Protocol, designed to facilitate communication between AI models and development environments. This SDK provides a robust foundation for building AI-powered tools and applications in the .NET ecosystem.

Features

Ready to Use

  • βœ… Standard I/O Communication
  • βœ… Tool Integration Framework
  • βœ… Native AOT Compatible
  • βœ… Calculator Demo Implementation

Under Development

  • 🚧 WebSocket Support
  • 🚧 Resource Management
  • 🚧 Prompt System

Demo

The repository includes a fully functional calculator demo that showcases the basic capabilities of the MCP implementation. This demo serves as a practical example of how to integrate and use the protocol in your applications.

Technical Details

Architecture

The project is structured into multiple components:

  • Core Library: Contains the fundamental protocol implementation
  • Server Components: Handles communication and request processing
  • Demo Implementation: Provides a working example with a calculator application

Key Benefits

  • Native AOT Support: Fully compatible with .NET Native AOT compilation for optimal performance
  • Modular Design: Clean separation of concerns allowing for flexible implementation
  • Standard Compliance: Implements the Model Context Protocol specification

Getting Started

Install the server package:

dotnet add package ModelContextProtocol.NET.Server

The easiest way to get started is to look at the calculator demo in src/ModelContextProtocol.NET.Demo.Calculator. Here's a quick example of how to set up an MCP server:

// Create server info
var serverInfo = new Implementation { Name = "Calculator Demo Server", Version = "1.0.0" };

// Configure and build server
var server = new McpServerBuilder(serverInfo)
    .AddStdioTransport()
    // see below for logging configuration
    .ConfigureLogging(logging => ...)
    .ConfigureTools(tools => tools.AddHandler<CalculatorToolHandler>())
    .Build();

// Start the server
server.Start();

Logging Configuration

McpServerBuilder uses Microsoft.Extensions.Logging.ILogger as the logging interface. Since stdio transport is used, logs can't be sent to the console. You need to configure a logging provider that can write to a file or other logging destination.

If no logging provider is configured, a null logger will be used, resulting in no logs being written.

// Using Serilog
.ConfigureLogging(logging => logging.AddSerilog(yourSerilogLogger))

// Using NLog
.ConfigureLogging(logging => logging.AddNLog())

Implementing Tools

Tools are implemented as handlers. Here's a simplified example from the calculator demo:

public class CalculatorParameters
{
    public required CalculatorOperation Operation { get; init; }
    public required double A { get; init; }
    public required double B { get; init; }
}

public enum CalculatorOperation { Add, Subtract, Multiply, Divide }

Check out the complete calculator demo for a full working example including:

  • Tool handler implementation
  • Request/response handling
  • Error management
  • Logging setup

More documentation and implementation guide coming soon.

Development Status

This project is under active development. While core features like stdio communication and tool integration are complete and usable, some advanced features are still being implemented.

Contributing

Contributions are welcome! Please feel free to submit pull requests or create issues for bugs and feature requests.

License

Apache 2.0

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages