Token导航 LogoToken导航TokenDH.com
Durabletask Dotnet MCP logo
AI代理stdio官方级别未说明来源级核验

Durabletask Dotnet MCP

MCP Server

一个使用Durable Task SDK与Durable Task Scheduler后端实现MCP任务规范的原型工具,用于构建可靠、可观察的长期运行工具。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
C#DockerAI代理

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

cgillum

提供方

cgillum

最后核验

2026/5/17 20:19

运行时

Docker

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

docker run -d -p 8080:8080 -p 8082:8082 mcr.microsoft.com/dts/dts-emulator:latest

详细介绍

持久任务MCP集成

一个原型实现 MCP任务规范 使用

概述

MCP服务器开发人员构建由持久任务支持的可靠、可观察、长时间运行的工具 调度程序。MCP工具映射到持久任务编排或活动,以及框架 自动处理所有协议细节。

为什么是持久任务?

  • 可靠性 --任务状态在DTS中持久保存。编排自动恢复

服务器重新启动后,不会丢失进度。

将任务执行历史、时间线、输入/输出和故障详细信息。

  • 可扩展性 --DTS是一种独立于MCP服务器扩展的托管服务。
  • 丰富的执行模型 --简单的单活动工具和复杂的多步骤编排

在人类参与的情况下,所有这些都使用相同的编程模型。

运作原理

MCP Client ──► MCP Server (.NET)
                    │
               IMcpTaskStore
                    │
              DurableTaskMcpTaskStore ◄── maps MCP lifecycle to orchestrations
                    │
               DurableTaskClient
                    │
              ┌─────┴──────┐
              │    DTS     │  (Emulator or Azure)
              └────────────┘

每个MCP工具都通过以下方式注册 WithDurableTaskTool() 获取内部 包装编排器 处理MCP协议问题(TTL、状态报告、启发)。用户的编排器 或者活动在这个包装器内运行,因此开发人员编写没有MCP的简单持久任务代码 样板。

概念图

MCP任务概念持久任务概念
任务ID业务流程实例ID
任务生命周期编排生命周期
workingPendingRunning
input_requiredRunning +自定义状态
completedCompleted
failedFailed
cancelledTerminated
任务状态消息自定义状态
激励WaitForExternalEvent +自定义状态
TTL持久定时器逻辑
列出任务列出编排
取消任务终止业务流程

编程模型

将编排和活动注册为MCP工具,每个工具只需一行代码:

// Program.cs
builder.Services.AddDurableTaskClient(b => b.UseDurableTaskScheduler(connectionString));

builder.Services.AddDurableTaskWorker(b =>
{
    b.UseDurableTaskScheduler(connectionString);
    b.AddTasks(tasks =>
    {
        tasks.AddOrchestrator
();
        tasks.AddActivity();
        tasks.AddActivity
();
    });
});

builder.Services.AddMcpServer(options => { /* ... */ })
    .AddDurableTaskMcpTaskStore()
    .WithDurableTaskTool
()  // registers as MCP tool
    .WithTools()                         // regular tools work too
    .WithHttpTransport();

编排器使用标准的持久任务API和MCP扩展方法来处理状态和 启发:

[McpDurableTaskTool(Name = "purchase_order")]
[Description("Submit a purchase order. Orders over $1,000 require approval.")]
public class PurchaseOrderOrchestrator : TaskOrchestrator

{
    public override async Task RunAsync(
        TaskOrchestrationContext context, PurchaseOrderInput input)
    {
        context.SetMcpStatus("Validating order...");
        await context.CallActivityAsync(nameof(ValidateOrderActivity), input);

        if (input.Amount > 1000)
        {
            // Pauses the task and sets status to "input_required"
            var decision = await context.WaitForMcpInputAsync(
                $"Approve order for ${input.Amount}?");
            if (!decision.Approved)
                return "Order rejected.";
        }

        context.SetMcpStatus("Processing items...");
        await context.CallActivityAsync(nameof(ProcessItemsActivity), input.ItemCount);
        return "Order completed.";
    }
}

样品

两个样本都暴露了相同的两个工具(process_datapurchase_order)并演示 完整的MCP任务生命周期,包括人工在环审批。每个示例README包括 使用测试的分步说明 MCP检查员.

样品运输描述
StreamableHttpServer流式HTTPASP。NET Core MCP服务器 http://localhost:5000
标准服务器stdioMCP客户端作为子进程启动的控制台应用程序

先决条件

快速开始

# 1. Start the DTS emulator
docker run -d -p 8080:8080 -p 8082:8082 mcr.microsoft.com/dts/dts-emulator:latest

# 2. Run a sample
dotnet run --project samples/StreamableHttpServer

然后按照示例的README获取测试说明。

配置

从以下位置读取DTS连接字符串 DurableTask:ConnectionString 在配置中 (appsettings.json 或环境变量 DurableTask__ConnectionString).

环境连接字符串
本地仿真器Endpoint=http://localhost:8080;TaskHub=default;Authentication=None
Azure DTSEndpoint=https://.westus2.durabletask.io;TaskHub=default;Authentication=DefaultAzure

项目结构

├── src/Microsoft.DurableTask.Mcp/     # Core library (NuGet package)
│   ├── DurableTaskMcpTaskStore.cs     # IMcpTaskStore implementation
│   ├── DurableTaskMcpServerTool.cs    # Custom McpServerTool
│   ├── McpToolWrapperOrchestrator.cs  # Internal wrapper orchestrator
│   ├── McpDurableTaskToolAttribute.cs # [McpDurableTaskTool] attribute
│   ├── McpOrchestrationExtensions.cs  # SetMcpStatus / WaitForMcpInputAsync
│   ├── ServiceCollectionExtensions.cs # DI registration
│   └── StatusMapping.cs              # Orchestration → MCP status mapping
├── samples/
│   ├── StreamableHttpServer/          # Streamable HTTP sample
│   └── StdioServer/                   # stdio sample
├── tests/
│   └── Microsoft.DurableTask.Mcp.Tests/
└── docs/
    ├── PRD.md                         # Product Requirements Document
    ├── design.md                      # Technical Design (V1)
    ├── DesignV2.md                    # Simplified Programming Model (V2)
    └── spec-feedback.md               # MCP Task Spec feedback

文档

文档描述
产品需求文档产品要求、场景和成功标准
设计V1原始技术设计 IMcpTaskStore 整合
设计V2简化 WithDurableTaskTool() 程序设计模型
规格反馈对MCP任务规范的观察和反馈

许可证

麻省理工学院

目录标签

目录标签

C#DockerAI代理任务调度本地部署持久化任务MCP协议开发框架

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Docker

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP