Azure功能洞察MCP服务器
Azure Functions MCP(模型上下文协议)服务器,为您的Azure Functions资源提供全面的监控和洞察工具。用。NET 10隔离工作程序和Azure Functions MCP扩展。
先决条件
- .NET 10 SDK
- Azure功能核心工具
- Azure命令行界面 (用于身份验证)
- Azure开发者命令行界面(azd) (用于部署)
- 二头肌CLI (基础设施)
- 具有Azure Functions资源的Azure订阅
🚀 快速开始
简单的三步设置:
- 添加您的Azure订阅ID 到
src/local.settings.json:
{
"Values": {
"AZURE_SUBSCRIPTION_ID": "your-subscription-id-here"
}
}> 记得删除 .sample 从 src/local.settings.sample.json
- 启动MCP服务器:
cd src
func start- 连接VS代码:
- 打开 .vscode/mcp.json - 点击“开始” local-azure-function-insights 服务器 - 开始在GitHub Copilot聊天中使用MCP工具!
聊天中的工具调用示例:
#mcp_local-azure-f_ListFunctions列出我的所有Azure功能应用#mcp_local-azure-f_GetFunctionStatus我的功能应用程序的状态如何?#mcp_local-azure-f_GetFailedExecutions显示支付处理程序的失败执行#mcp_local-azure-f_ListFailingFunctions我的哪些功能出现故障?#mcp_local-azure-f_GetTraceLogs显示损坏应用程序的跟踪日志
特性
🔍 七大强大的MCP工具
- 列表功能 -列出订阅中的所有Azure功能应用
- 按资源组筛选 - 分页结果(默认每页50个) - 返回:名称、位置、状态、运行时版本、标记
- GetFunction状态 -获取特定功能应用程序的详细状态
- 当前状态(运行、停止等) - 应用程序中所有功能的列表 - 运行时版本和主机信息 - 主机健康检查 (检查 /admin/host/status 和 /admin/host/ping) - 检测运行时错误 (InternalServerError,主机故障)
- GetFunctionMetrics -检索执行指标和分析
- 总执行次数、成功执行次数和失败执行次数 - 平均、最小和最大持续时间统计 - 成功率百分比 - 可配置的时间范围(1-720小时)
- GetFailed执行失败 -分析最近的故障及其全部细节
- 错误消息和异常类型 - 完整的堆栈跟踪 用于调试 - 用于关联的调用ID - 执行时长 - 包括来自请求、异常和跟踪日志的错误 - 可配置计数(1-100)和时间范围
- GetTraceLogs -从Application Insights获取最近的跟踪日志
- 可用于调试损坏的功能应用程序 - 即使请求/异常表为空,也能正常工作 - 可配置的严重性级别过滤(详细、信息、警告、错误、严重) - 可配置的计数和时间范围
- 列出失败功能 -所有故障功能应用程序概述
- 显示哪些应用程序最近出现故障 - 每个应用程序的错误率和失败次数 - 先按表现最差者排序 - 整个订阅的快速健康仪表板
- 查询应用洞察 -执行自定义KQL查询
- 运行任何Kusto查询语言查询 - 访问完整的应用程序洞察遥测 - 查询日志分析工作区 (AppRequests、AppExceptions、AppTraces表) - 定制分析和报告 - 可配置的时间范围
设置
1.克隆和恢复
git clone https://github.com/liliankasem/azfunc-insights-mcp-server.git
cd /path/to/azfunc-insights-mcp
dotnet restore2.配置身份验证
选项A:Azure CLI(建议用于本地开发)
az login
az account set --subscription "YOUR_SUBSCRIPTION_ID"选项B:服务负责人(生产/CI/CD)
设置环境变量:
export AZURE_TENANT_ID="your-tenant-id"
export AZURE_CLIENT_ID="your-client-id"
export AZURE_CLIENT_SECRET="your-client-secret"3.配置应用程序设置
编辑 local.settings.json:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
"AZURE_SUBSCRIPTION_ID": "your-subscription-id-here"
}
}必修的:
AZURE_SUBSCRIPTION_ID-您的Azure订阅ID
4.授予所需的Azure权限
您的Azure身份(用户或服务主体)需要:
- 读者 在包含功能应用程序的订阅或资源组中的角色
# Grant Reader access to subscription
az role assignment create \
--assignee "user@example.com" \
--role "Reader" \
--scope "/subscriptions/YOUR_SUBSCRIPTION_ID"本地运行
启动Azurite(Azure存储模拟器)
如果您没有配置Azure存储:
# Install Azurite
npm install -g azurite
# Start Azurite
azurite --silent --location ./azurite --debug ./azurite/debug.log运行功能应用程序
cd src
func start部署
使用Azure Developer CLI部署到Azure
部署最简单的方法是使用 azd:
# Login to Azure
az login
# Deploy everything (infrastructure + app)
azd up
# You'll be prompted for:
# - Environment name (e.g., "dev", "prod")
# - Azure location (e.g., "eastus", "westus2")
# - Azure subscription (if you have multiple)部署的内容:
- 资源组
- 存储帐户
- 应用洞察
- 应用服务计划(灵活消费-FC1 SKU)
- 功能应用程序:
- 系统分配的管理身份 - Flex消费配置(2048 MB内存,最多100个实例) - 所需的应用程序设置(订阅ID,默认为此应用程序正在部署到的订阅ID) - 自动RBAC角色分配(订阅阅读器、日志分析阅读器)
更新应用程序代码:
azd deploy清理所有资源:
azd down使用示例
连接MCP客户端
配置您的MCP客户端(例如,Claude Desktop、VS Code扩展)以连接到:
http://localhost:7071/runtime/webhooks/mcp工具调用示例
列出所有功能应用程序
{
"tool": "ListFunctions",
"arguments": {}
}列出特定资源组中的功能应用程序
{
"tool": "ListFunctions",
"arguments": {
"resourceGroupName": "my-functions-rg",
"pageSize": 25
}
}获取功能应用程序状态
{
"tool": "GetFunctionStatus",
"arguments": {
"appName": "my-function-app"
}
}获取过去48小时的指标
{
"tool": "GetFunctionMetrics",
"arguments": {
"appName": "my-function-app",
"hoursBack": 48
}
}获取最近20次失败的执行
{
"tool": "GetFailedExecutions",
"arguments": {
"appName": "my-function-app",
"count": 20,
"hoursBack": 24
}
}查询应用程序洞察(使用日志分析表)
{
"tool": "QueryApplicationInsights",
"arguments": {
"appName": "my-function-app",
"query": "AppRequests | where Success == false | summarize count() by ResultCode",
"hoursBack": 24
}
}获取调试跟踪日志
{
"tool": "GetTraceLogs",
"arguments": {
"appName": "my-function-app",
"count": 50,
"minSeverityLevel": 3,
"hoursBack": 24
}
}列出所有失败的功能应用程序
{
"tool": "ListFailingFunctions",
"arguments": {
"hoursBack": 24
}
}故障排除
“未配置AZURE_SUBSCRIPTION_ID”
确保 AZURE_SUBSCRIPTION_ID 已设置 local.settings.json 或环境变量。
“未配置应用程序洞察”
这意味着Function App没有链接Application Insights,或者服务无法发现它。MCP服务器通过以下方式自动发现每个Function App的Application Insights工作区:
- 阅读
hidden-link: /app-insights-resource-id功能应用程序中的标签 - 按照资源链查找日志分析工作区
- 提取工作区客户ID进行查询
如果遥测功能不起作用,请确保:
- 功能应用程序启用了应用程序洞察
- 这
hidden-link: /app-insights-resource-id标签出现在功能应用程序上 - 您的托管身份对Application Insights资源具有读取器权限
注: Application Insights工作区发现通过ARM标签工作,独立于Function App的环境变量。这意味着即使Function App主机损坏,它也能正常工作。
“没有遥测数据可用”
当日志分析工作区存在但没有数据时,会出现此消息。常见原因:
- 功能应用程序尚未被调用
- 尚未摄入Application Insights数据(可能需要几分钟)
- 工作区是新创建的,为空
- 功能应用程序已损坏,无法发送遥测数据
尝试使用 GetTraceLogs 检查是否有任何跟踪数据可用,或 GetFunctionStatus 以验证主机健康状况。
身份验证失败
# Verify Azure CLI login
az account show
# Test Azure access
az functionapp list --query "[].{Name:name, State:state}" -o table速率限制
该服务将并发Azure API请求限制为5。如果你遇到节流问题,这是为了防止Azure API不堪重负而设计的。
许可证
MIT许可证-有关详细信息,请参阅许可证文件
