持久任务。主控程序
 
用于调试、监控和故障排除的模型上下文协议(MCP)服务器 持久任务框架(DTFx) 存储在Azure存储中的编排。
注: 该项目目前正在进行中。更多存储提供商即将推出!
特性
| 特性 | 描述 |
|---|---|
| 任务中心发现 | 自动发现Azure存储帐户中的所有DTFx任务中心 |
| 编排检查 | 列出、搜索和检查编排实例 |
| 时程分析 | 通过专门的视图深入了解编排执行历史 |
| 队列监视 | 检查控制队列和工作项队列中是否有挂起的消息 |
| 大消息访问 | 检索存储在blob存储中的大型有效载荷 |
安装
作为一个。NET工具(推荐)
dotnet tool install --global DurableTask.Mcp安装后,使用以下命令运行该工具:
dtfx-mcp --storage-account 使用dnx(MCP Runner)
如果你有 DNX 安装后,您可以直接运行该工具,而无需全局安装:
dnx DurableTask.Mcp -- --storage-account 或者启用日志记录:
dnx DurableTask.Mcp -- --storage-account --log-file ./dtfx-mcp.log来源
git clone https://github.com/MoaidHathot/DurableTasksMcp.git
cd DurableTasksMcp/src
dotnet build
dotnet run -- --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许可证获得许可-请参阅 许可证 文件以获取详细信息。
作者
哈特特湖
- github: @MoaidHathot
