使用说明
持久任务。主控程序
用于调试、监控和故障排除的模型上下文协议(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许可证获得许可-请参阅 许可证 文件以获取详细信息。
作者
哈特特湖
- github: @MoaidHathot
