Durable Task调试监控工具

用于调试、监控和排查Azure存储中Durable Task Framework编排问题的模型上下文协议服务器。

  • by MoaidHathot
  • C#
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 MoaidHathot/DurableTasksMcp

使用说明

持久任务。主控程序

用于调试、监控和故障排除的模型上下文协议(MCP)服务器 持久任务框架(DTFx) 存储在Azure存储中的编排。

注: 该项目目前正在进行中。更多存储提供商即将推出!

特性

特性 描述
任务中心发现 自动发现Azure存储帐户中的所有DTFx任务中心
编排检查 列出、搜索和检查编排实例
时程分析 通过专门的视图深入了解编排执行历史
队列监视 检查控制队列和工作项队列中是否有挂起的消息
大消息访问 检索存储在blob存储中的大型有效载荷

安装

作为一个。NET工具(推荐)

dotnet tool install --global DurableTask.Mcp

安装后,使用以下命令运行该工具:

dtfx-mcp --storage-account <your-storage-account>

使用dnx(MCP Runner)

如果你有 DNX 安装后,您可以直接运行该工具,而无需全局安装:

dnx DurableTask.Mcp -- --storage-account <your-storage-account>

或者启用日志记录:

dnx DurableTask.Mcp -- --storage-account <your-storage-account> --log-file ./dtfx-mcp.log

来源

git clone https://github.com/MoaidHathot/DurableTasksMcp.git
cd DurableTasksMcp/src
dotnet build
dotnet run -- --storage-account <your-storage-account>

先决条件

  • .NET 10.0 SDK或更高版本
  • 具有DTFx数据的Azure存储帐户
  • 已配置Azure凭据(Azure CLI、环境变量或托管身份)

配置

存储帐户(必填)

通过命令行或环境变量提供Azure存储帐户名:

# Command line
dtfx-mcp --storage-account mystorageaccount
dtfx-mcp -s mystorageaccount

# Environment variable
export DTFX_STORAGE_ACCOUNT=mystorageaccount
dtfx-mcp

日志记录(可选)

启用调试文件日志记录:

# Command line
dtfx-mcp -s mystorageaccount --log-file ./dtfx-mcp.log
dtfx-mcp -s mystorageaccount -l ./dtfx-mcp.log

# Environment variable
export DTFX_LOG_FILE=./dtfx-mcp.log
dtfx-mcp -s mystorageaccount

认证

服务器使用 DefaultAzureCredential 它支持:

  • Azure命令行界面(az login)
  • 环境变量(AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET)
  • 托管身份(在Azure中运行时)
  • Visual Studio/VS代码凭据

所需的Azure RBAC权限

您的身份需要存储帐户上的以下角色:

角色 目的
存储表数据读取器 读取编排实例和历史记录
存储队列数据读取器 查看队列消息
存储Blob数据读取器 读取大型消息blob

MCP客户端配置

克劳德桌面版

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "durable-tasks": {
      "command": "dtfx-mcp",
      "args": ["-s", "mystorageaccount"]
    }
  }
}

启用日志记录后:

{
  "mcpServers": {
    "durable-tasks": {
      "command": "dtfx-mcp",
      "args": ["-s", "mystorageaccount", "-l", "/path/to/dtfx-mcp.log"]
    }
  }
}

使用dnx

您还可以配置Claude Desktop以使用 dnx 要运行该工具,请执行以下操作:

{
  "mcpServers": {
    "durable-tasks": {
      "command": "dnx",
      "args": ["DurableTask.Mcp", "--", "-s", "mystorageaccount"]
    }
  }
}

可用工具

任务中心工具

工具 说明
dtfx_list_task_hubs 列出在配置的Azure存储帐户中发现的所有持久任务框架任务中心。返回有关每个中心资源(表、队列、容器)的信息。
dtfx_get_task_hub_details 获取特定任务中心的详细信息,包括其表、队列和blob容器。
dtfx_get_orchestration_summary 获取任务中心中业务流程的摘要统计信息,包括按运行时状态(运行、已完成、失败等)统计的计数。

编排工具

工具 说明
dtfx_list_orchestrations 从任务中心列出编排实例,并可选择按状态、名称和创建时间进行筛选。
dtfx_get_orchestration 通过实例ID获取特定编排实例的详细信息
dtfx_search_orchestrations 按实例ID前缀搜索编排实例。可用于查找相关的编排或子编排。
dtfx_get_failed_orchestrations 从历史记录中获取具有失败状态及其错误消息的业务流程。有助于故障排除。
dtfx_list_running_orchestrations 列出当前正在运行的所有业务流程。可用于监控正在进行的工作
dtfx_list_pending_orchestrations 列出处于挂起状态(已计划但尚未启动)的业务流程。有助于识别积压。

历史记录工具

工具 说明
dtfx_get_orchestration_history 获取业务流程实例的完整执行历史记录。显示所有事件,包括活动执行、计时器、子业务流程和外部事件。
dtfx_get_activity_history 仅获取业务流程的活动相关历史事件(TaskScheduled、TaskCompleted、TaskFailed)。有助于理解活动执行流程。
dtfx_get_sub_orchestration_history 获取业务流程的子业务流程相关历史事件。显示子业务流程的创建时间及其完成状态。
dtfx_get_timer_history 获取业务流程的计时器相关历史事件。显示创建的持久计时器及其触发时间。
dtfx_get_external_events 获取业务流程的外部事件历史记录。显示从编排外部引发的事件(例如,通过RaiseEventAsync)。
dtfx_get_failed_activities 获取业务流程的所有失败活动执行。显示活动名称和失败原因。
dtfx_get_history_summary 获取编排历史的摘要,显示每种事件类型和关键里程碑的计数。

队列工具

工具 说明
dtfx_list_queues 列出与任务中心关联的所有队列,包括控制队列(用于编排器)和工作项队列(用于活动)。
dtfx_peek_queue_messages 查看队列中的消息而不将其删除。可用于调试卡住的业务流程或活动。
dtfx_get_queue_depth 获取特定队列的近似消息计数。可用于监控积压。
dtfx_get_all_queue_depths 获取任务中心中所有队列的近似消息计数。有助于监控整个系统的健康状况。

Blob工具

工具 说明
dtfx_list_containers 列出与任务中心关联的所有blob容器(大型消息、租约等)。
dtfx_list_large_messages 列出存储在任务中心的大消息容器中的大消息blob。这些是超过队列消息大小限制(>45KB)的有效载荷。
dtfx_get_large_message_content 获取特定大消息blob的内容。可用于检查无法放入队列消息的大型有效负载。

示例提示

一旦通过MCP客户端连接,请尝试以下操作:

  • “列出我的存储帐户中的所有任务中心”
  • “在MyTaskHub中显示所有失败的业务流程”
  • “获取编排实例abc-123的执行历史记录”
  • “此编排中有哪些活动失败?”
  • “显示所有控制队列的队列深度”
  • “搜索以“order-”开头的业务流程”

DTFx存储结构

MCP服务器从这些Azure存储资源中读取:

表格

表 说明
{TaskHubName}Instances 所有编排实例的当前状态
{TaskHubName}History 所有编排的事件源历史记录

队列

队列 描述
{taskhubname}-workitems 活动功能消息
{taskhubname}-control-00 到 -{N} 编排器消息

Blob容器

容器 描述
{taskhubname}-largemessages 有效负载超过45KB
{taskhubname}-leases 工作分区租约

贡献

欢迎投稿!请随时提交拉取请求。

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

作者

哈特特湖