Azure Function MCP Server初始化请求陷入无限循环问题求助
排查Azure Function MCP Server初始化无限循环问题
可能的原因及修复方案
1. 扩展版本与宿主兼容性不匹配
你使用的Microsoft.Azure.Functions.Worker.Extensions.Mcp为1.0.0-preview.5预览版,可能和当前Functions Runtime或Extension Bundle版本存在兼容性问题:
- 尝试升级MCP扩展至最新预览版,同时调整
host.json中的Extension Bundle版本以适配:"extensionBundle": { "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview", "version": "[4.15.*, 5.0.0)" }
2. Program.cs运行时配置错误
当前代码中使用的ConfigureFunctionsWebApplication()针对HTTP触发的Web应用场景,而MCP Server属于Worker服务模式,需改用Worker默认配置:
- 修改
Program.cs代码:using Microsoft.Azure.Functions.Worker; using Microsoft.Azure.Functions.Worker.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; var builder = FunctionsApplication.CreateBuilder(args); // 替换为Worker运行时默认配置 builder.ConfigureFunctionsWorkerDefaults(); builder.EnableMcpToolMetadata(); builder.Services.AddHttpClient(); var app = builder.Build(); app.Run();
3. MCP函数属性配置异常
检查McpToolTrigger和McpToolProperty的配置规范:
- 确保已正确引入
ToolInvocationContext的命名空间:using Microsoft.Azure.Functions.Worker.Mcp; - 确认触发器名称、属性定义无格式错误:
[Function("CreateCarrier")] public async Task<string> Run( [McpToolTrigger("createcarrier", "Crea un nuevo carrier en el sistema.")] ToolInvocationContext context, [McpToolProperty("name", "string", "Nombre del carrier a crear.")] string name) { // 业务逻辑代码 return $"Carrier {name} creado exitosamente"; }
4. 本地环境配置问题
- 更新VS Code的Azure Functions扩展至最新版本,避免旧版本兼容性bug。
- 手动执行
func start启动函数应用,查看控制台是否输出其他错误日志,排查运行时启动异常。 - 简化
host.json中MCP的instructions内容为英文测试,避免特殊字符或编码问题:"extensions": { "mcp": { "instructions": "Use this tool to create a carrier by providing a name.", "serverName": "MCPCarrierServer", "serverVersion": "1.0.0" } }
5. 端口占用或初始化超时
- 检查是否有其他进程占用MCP Server默认端口(通常为50051),可在
host.json中指定自定义端口:"extensions": { "mcp": { "instructions": "...", "serverName": "MCPCarrierServer", "serverVersion": "1.0.0", "port": 50052 } } - 调整VS Code中Azure Functions扩展的调试超时设置,增加初始化等待时长。
验证流程
- 按上述方案修改代码与配置。
- 清理项目的
bin和obj目录,重新构建解决方案。 - 执行
func start启动函数应用,确认控制台输出MCP Server初始化成功日志。 - 在VS Code中重新连接MCP Server,检查循环等待问题是否解决。
内容的提问来源于stack exchange,提问作者Sebastian Pelaez
相关产品推荐
相关产品推荐

