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" />
<PackageReference Include="ivilson.mcpdotnet.webapi" />
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
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#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
#tool nuget:?package=ivilson.mcpdotnet.webapi&version=1.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
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 | Versions 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.
-
net8.0
- Microsoft.AspNetCore.Http.Abstractions (>= 2.3.0)
- Microsoft.AspNetCore.Mvc.Abstractions (>= 2.3.0)
- Microsoft.AspNetCore.Mvc.Core (>= 2.3.0)
- Microsoft.Extensions.AI (>= 9.6.0)
- Microsoft.Extensions.AI.Abstractions (>= 9.6.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 9.0.6)
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.6)
- Newtonsoft.Json (>= 13.0.3)
- System.Net.ServerSentEvents (>= 9.0.6)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.