You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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扩展的调试超时设置,增加初始化等待时长。

验证流程

  1. 按上述方案修改代码与配置。
  2. 清理项目的bin和obj目录,重新构建解决方案。
  3. 执行func start启动函数应用,确认控制台输出MCP Server初始化成功日志。
  4. 在VS Code中重新连接MCP Server,检查循环等待问题是否解决。

内容的提问来源于stack exchange,提问作者Sebastian Pelaez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 22:23:17