ivilson.mcpdotnet.webapi 1.1.0

dotnet add package ivilson.mcpdotnet.webapi --version 1.1.0
                    
NuGet\Install-Package ivilson.mcpdotnet.webapi -Version 1.1.0
                    
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="ivilson.mcpdotnet.webapi" Version="1.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ivilson.mcpdotnet.webapi" Version="1.1.0" />
                    
Directory.Packages.props
<PackageReference Include="ivilson.mcpdotnet.webapi" />
                    
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 ivilson.mcpdotnet.webapi --version 1.1.0
                    
#r "nuget: ivilson.mcpdotnet.webapi, 1.1.0"
                    
#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 ivilson.mcpdotnet.webapi@1.1.0
                    
#: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=ivilson.mcpdotnet.webapi&version=1.1.0
                    
Install as a Cake Addin
#tool nuget:?package=ivilson.mcpdotnet.webapi&version=1.1.0
                    
Install as a Cake Tool

McpDotNet WebAPI

本项目基于 https://github.com/PederHP/mcpdotnet 开发,特此感谢原作者的开源贡献。

简介

本库为 Model Context Protocol (MCP) 的 .NET 实现,适用于 AI、LLM 等相关场景。

使用方法

Demo 参考 https://github.com/iwaitu/mcpwebapi

服务端:

program.cs

using McpDotNet;
using McpDotNet.Webapi;


var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddMcpServer()
    .WithHttpListenerSseServerTransport("testserver", 8100);



builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// 这里将所有返回类型为非 IActionResult 的 public 方法注册为 mcp 方法
await app.UseMcpApiFunctions(typeof(Program).Assembly);

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}
app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

控制器代码:

[McpToolType]
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    private static readonly string[] Summaries = new[]
    {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

    private readonly ILogger<WeatherForecastController> _logger;

    public WeatherForecastController(ILogger<WeatherForecastController> logger)
    {
        _logger = logger;
    }

    [HttpGet(Name = "GetWeatherForecast")]
    [McpTool, Description("获取天气情况")]
    public IEnumerable<WeatherForecast> Get([Description("城市名称")]string city)
    {
        return Enumerable.Range(1, 1).Select(index => new WeatherForecast
        {
            Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = Summaries[Random.Shared.Next(Summaries.Length)],
            City = city
        })
        .ToArray();
    }
}

客户端代码:

McpServerConfig serverConfig = new()
{
    Id = "everything",
    Name = "Everything",
    TransportType = TransportTypes.Sse,
    Location = "http://localhost:3500/sse",
};
McpClientOptions clientOptions = new()
{
    ClientInfo = new() { Name = "SimpleToolsConsole", Version = "1.0.0" }
};
var mcpClient = await McpClientFactory.CreateAsync(serverConfig, clientOptions);
var tools = await mcpClient.GetAIFunctionsAsync();

var messages = new List<ChatMessage>
    {
        new ChatMessage(ChatRole.User, "你有什么能力?")
    };
var chatOptions = new ChatOptions
{
    Temperature = 0.5f,
    Tools = tools.ToArray()
};
           
var res = await _chatClient.GetResponseAsync(messages, chatOptions);
return res.Messages.FirstOrDefault()?.Text;

致谢

感谢 PederHP/mcpdotnet 项目的启发与贡献。


This project is based on https://github.com/PederHP/mcpdotnet. Many thanks to the original author for the open-source contribution.

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 was computed.  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 was computed.  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

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.0 136 6/24/2025
1.0.13 137 6/24/2025
1.0.12 136 6/24/2025
1.0.10 145 6/23/2025
1.0.8 146 6/23/2025
1.0.6 139 6/23/2025
1.0.5 141 6/23/2025
1.0.2 136 6/23/2025
1.0.1 127 3/26/2025