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

部署在Azure Function上的自定义MCP服务器认证失败问题

问题描述

我使用fastMCP搭建自托管MCP服务器,并按照官方指南部署到Azure Function中。已严格遵循「启用内置服务器授权与认证」的步骤,但连接远程MCP服务器时持续报错;尝试使用AccessKey方式启动远程服务器也出现相同错误。

VS Code中的报错信息:

2026-05-23 15:23:49.535 [info] Waiting for server to respond to initialize request...

部署在Azure Function中的server.py代码:

from typing import Any
import sys
import logging
from mcp.server.fastmcp import FastMCP

# 降低MCP SDK日志级别
logging.getLogger("mcp").setLevel(logging.WARNING)

# 初始化FastMCP服务器
mcp = FastMCP("weather", stateless_http=True)

# 添加一个示例工具
@mcp.tool()
def greet(name: str = "World") -> str:
    """按名称问候某人。"""
    return f"Wolla!!, {name}!"
  
if __name__ == "__main__":
    try:
        # 启动服务器
        print("Starting MCP server...")
        mcp.run(transport="streamable-http")
    except Exception as e:
        print(f"运行MCP服务器时出错: {e}", file=sys.stderr)
排查解决方案
  • 确认Azure Function触发配置:FastMCP使用streamable-http传输时,必须用HTTP触发类型,建议将Function路由设置为/{*route},确保所有MCP请求能被正确接收。
  • 校验认证一致性:无论是内置授权还是AccessKey方式,要保证客户端的认证参数和Azure Function的访问控制设置完全匹配。比如用AccessKey时,客户端请求头要带上Authorization: Bearer <你的AccessKey>,同时Azure端要允许该Key的访问权限。
  • 查看服务端日志:不要只依赖客户端日志,登录Azure Portal查看Function的执行日志,排查是否存在服务端报错(如请求拦截、依赖缺失、端口配置问题)。
  • 本地先验证功能:先在本地运行该代码,用MCP客户端连接测试。如果本地正常,再排查部署到Azure后的环境差异——比如网络限制、环境变量是否正确、Python依赖版本是否与本地一致(尤其是fastMCP版本)。
  • 匹配无状态模式:初始化FastMCP时设置了stateless_http=True,要确保客户端也使用无状态HTTP模式连接,两者模式必须统一。

内容的提问来源于stack exchange,提问作者ANIRBAN DAS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 04:43:11