Azure Functions中MCP扩展host.json不被识别及参数未捕获问题
解决Azure Functions MCP配置警告及Copilot Studio参数捕获问题
一、host.json中mcp配置出现“Property mcp is not allowed”警告的解决步骤
- 确认Runtime版本兼容性:MCP绑定要求Azure Functions Runtime至少为v4.28.0,先检查host.json里的
version字段是否为"4",再用func --version命令确认本地Core Tools是最新版本,低于v4.28.0的话直接升级。 - 检查host.json结构正确性:
mcp是顶层配置属性,要和logging、extensions同级,别嵌套到其他节点里,正确示例:
{ "version": "2.0", "logging": { "applicationInsights": { "samplingSettings": { "isEnabled": true, "excludedTypes": "Request" } } }, "extensions": { "http": { "routePrefix": "" } }, "mcp": { "toolMetadata": { "enabled": true } } }
- 验证NuGet包安装:确保项目里已经安装了
Microsoft.Azure.Functions.Worker.Extensions.Mcp包,版本至少v1.0.0,.csproj里的包引用要正确:
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Mcp" Version="1.0.0" />
- 清除VS Code JSON缓存:有时候是VS Code的JSON schema缓存导致误报,直接重启VS Code,或者在设置里搜索「JSON Schema Cache」,点击清除后再重启编辑器。
二、Copilot Studio调用无法捕获Location变量的排查要点
- 检查函数参数的MCP装饰器:确保函数的输入参数用
[McpInput("Location")]正确标记,参数名要和Copilot Studio里的配置完全一致,示例代码:
[Function("WeatherFunction")] public async Task<HttpResponseData> Run( [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req, [McpInput("Location")] string location, FunctionContext context) { // 业务逻辑 var response = req.CreateResponse(HttpStatusCode.OK); await response.WriteAsJsonAsync(new { Location = location }); return response; }
- 验证MCP元数据生成:启动函数后,访问
http://localhost:7071/mcp/tools,查看返回的JSON里是否包含Location参数的定义,确认参数名、类型都正确,这是Copilot Studio识别工具的依据。 - 核对Copilot Studio参数映射:在Copilot Studio的工具配置里,确认输入参数的映射规则,比如把对话中的实体变量准确关联到函数的
Location参数,别出现拼写错误或者映射到无关字段。 - 查看函数执行日志:本地启动函数时看控制台日志,或者在Azure上看Application Insights,检查请求体里是否真的包含
Location字段,确认Copilot Studio有没有把参数发出来。 - 注意参数大小写:MCP参数名是大小写敏感的,如果函数里定义的是
Location,Copilot Studio里就不能写成location,必须完全匹配。
内容的提问来源于stack exchange,提问作者Mauro Minella
相关产品推荐
相关产品推荐

