使用说明
# 自动MCP 从ASP自动创建MCP(模型上下文协议)服务器。NET核心API。
🚀 概述
AutoMCP弥合了ASP之间的差距。NET核心API和AI驱动工具,通过自动将您的API端点公开为MCP工具。只需几行代码,您现有的API控制器就可以被AI助手和其他兼容MCP的客户端访问。
📦 安装
安装主软件包:
dotnet add package AutoMcp
要获得OData支持,还需要安装:
dotnet add package AutoMcp.OData
🎯 快速开始
将AutoMCP添加到您的ASP中。NET Core应用程序 Program.cs:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
// Add MCP server with automatic API endpoint discovery
builder.Services.AddMcpServer()
.WithHttpTransport()
.WithOData() // Optional: Add OData query support. Must be called before WithAutoMcp()
.WithAutoMcp(); // Automatically expose API endpoints as MCP tools
var app = builder.Build();
app.UseAuthorization();
app.MapControllers();
app.MapMcp("mcp"); // Map MCP endpoint at /mcp
app.Run();
试试这个例子
该存储库包含一个完整的工作示例。NET Aspire支持。要运行它:
# Clone the repository
git clone https://github.com/wertzui/AutoMCP
cd AutoMCP/src/AutoMcp
# Run the Aspire app host
dotnet run --project AutoMcp.AppHost
Aspire仪表板将打开,显示配置了AutoMCP的API运行示例。MCP检查员将被指向正确的终点。
🔧 核心方法
WithAutoMcp()
这 WithAutoMcp() 方法是AutoMCP的核心。它会自动发现ASP中的所有API端点。NET Core应用程序并生成相应的MCP工具。
它的作用:
- 自动发现:扫描所有控制器操作,并为每个端点创建MCP工具
- 模式生成:自动为请求参数和响应类型生成JSON模式
- 元数据抽取:使用端点元数据,如
[Description]或[ProducesResponseType]为AI客户端提供上下文的属性 - 行动结果:正确打开ASP。NET核心
ActionResult<T>类型
配置选项:
builder.Services.AddMcpServer()
.WithAutoMcp(
serializerOptions: customJsonOptions, // Optional: Custom JSON serialization options
apiDescriptionGroupCollectionProvider: provider // Optional: Custom API description provider
);
控制器示例:
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
[HttpGet(Name = "GetWeatherForecast")]
[Description("Get the weather forecast for the given date.")]
public ActionResult<WeatherForecast> Get(DateOnly date)
{
var forecast = new WeatherForecast
{
Date = date,
TemperatureC = Random.Shared.Next(-20, 55),
Summary = "Sunny"
};
return Ok(forecast);
}
}
此控制器操作自动成为名为的MCP工具 WeatherForecast_Get 与:
- 描述来自
[Description]属性 - 正确的参数模式
date参数 - 基于的响应架构
WeatherForecast类型
WithOData()
这 WithOData() 该方法添加了对OData查询选项的支持,在MCP工具中启用了强大的过滤、排序和分页功能。
它的作用:
- 查询支持:启用
$filter,$orderby,$top,$skip,$select,以及其他OData查询选项 - JSON序列化:添加自定义JSON转换器以正确序列化和反序列化
ODataQueryOptions<T> - 模式集成:将OData查询模式集成到MCP工具定义中
- 类型保存:维护MCP边界上的类型信息
配置:
builder.Services.AddMcpServer()
.WithAutoMcp()
.WithOData(); // Enable OData query support
OData示例:
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly IQueryable<WeatherForecast> _repository =
GetWeatherForecasts().AsQueryable();
[HttpGet("multiple", Name = "GetMultipleWeatherForecasts")]
[Description("Get multiple weather forecasts with filtering and sorting options.")]
public ActionResult<IEnumerable<WeatherForecast>> GetMultiple(
ODataQueryOptions<WeatherForecast> options)
{
return Ok(options.ApplyTo(_repository));
}
}
随着 WithOData(),AI客户端现在可以使用强大的过滤器查询您的API:
$filter=temperatureC gt 20-获得高于20°C的预报$orderby=date desc-按日期降序排序$top=10-只获取前10个结果$skip=5&$top=10-分页支持
🎨 特性
自动生成刀具
- ✅ 自动发现所有API终结点
- ✅ 为参数和响应生成正确的JSON模式
- ✅ 处理复杂类型和嵌套对象
- ✅ 支持异步和同步控制器操作
OData集成
- ✅ 完全支持OData查询语法
- ✅ 过滤、排序、分页
- ✅ 复杂的查询表达式
ASP。NET核心集成
- ✅ 使用标准ASP。NET核心控制器
- ✅ 尊重路由和HTTP方法约束
- ✅ 与ASP集成。NET核心依赖注入
- ✅ 在整个请求管道中维护HttpContext
开发者体验
- ✅ 所需配置最少
- ✅ 使用现有的API元数据和属性
- ✅ 全面的错误处理和记录
📚 运作原理
- 发现阶段:
WithAutoMcp()扫描应用程序的API描述以查找所有终结点 - 模式生成:对于每个端点,它生成:
- 使用反射和JSON模式生成输入参数模式
- 基于返回类型和
[ProducesResponseType]属性
- 工具注册:每个端点都成为一个MCP工具,其名称如下
{ControllerName}_{ActionName} - 调用:当AI客户端调用该工具时:
- 使用配置的JSON选项对参数进行反序列化
- 使用正确的路由创建模拟HTTP请求
- 控制器操作是通过ASP。NET Core的管道
- 结果被序列化并返回给客户端
🔍 高级配置
自定义JSON序列化
var customJsonOptions = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
WriteIndented = true
};
builder.Services.AddMcpServer()
.WithAutoMcp(serializerOptions: customJsonOptions);
📖 示例用例
数据分析
使用OData过滤和分页查询大型数据集。
内容管理
使用复杂的查询表达式检索和过滤内容。
商业智能
使AI助手能够使用转换为OData查询的自然语言查询业务数据。
🛠️ 需求
- .NET 9.0或更高版本
- ASP。NET核心
📄 许可证
该项目在the Unlicense下发布到公共领域。看 许可证 了解详情。
🤝 贡献
欢迎投稿!请随时提交问题和拉取请求。
