Dela-MCP 服务器实现

使用说明内容(Markdown格式)

  • 项目简介

    • 本项目实现了一个基于 Model Context Protocol 的 MCP 服务器,旨在为大型语言模型(LLM)客户端提供可发现、可执行的任务上下文,与外部工具、资源与提示模板协同工作。
    • MCP 服务器通过 JSON-RPC 与客户端通信,支持对 Resources 的读取、Tools 的注册与执行,以及 Prompt 模板的定义与渲染,确保多租户和安全的上下文服务。
  • 主要功能点

    • 资源与数据访问:负责托管和管理可被 LLM 客户端读取的资源与数据。
    • Tools 注册与执行:定义可调用的外部功能和任务,LLM 可通过 RPC 调用执行任务、查询状态、获取输出等。
    • Prompt 模板定义与渲染:提供可定制的 Prompt 模板与渲染能力,便于 LLM 产生更精准的交互。
    • 会话与能力声明:服务端管理会话、能力宣告,向客户端显示可用功能与状态。
    • 安全性与可扩展性:通过面向 MCP 的允许列表控制任务执行权限,具备日志通知、输出流传输等能力,并支持多种传输协议。
    • JSON-RPC 与 日志通知:服务器使用 JSON-RPC 2.0 进行请求/响应,并通过通知发送任务输出与事件。
  • 安装与运行

    • 使用 cargo 构建与运行:
      • cargo build --release
      • 以 MCP 服务器模式启动:dela mcp --cwd <工作目录>
    • MCP Inspector 测试与调试参考:
      • 构建后可结合 MCP Inspector 等工具对协议握手、请求/响应进行互动测试。
  • 服务器配置(面向 MCP 客户端,不需要客户端代码)

    • server_name: dela-mcp
    • command: dela
    • args: ["mcp", "--cwd", "<工作目录>"]
    • 说明:上述配置用于 MCP 客户端连接到服务器,确保客户端在启动时能正确发起 initialize、call_tool、list_tasks 等请求。具体的工作目录应指向需要进行任务发现的目录。
  • 基本使用方法

    • 启动 MCP 服务器后,客户端可通过以下基本操作与服务器进行交互:
      • 初始化握手(initialize)
      • 列出可用任务(tools/list 或 list_tasks)
      • 启动任务(task_start)并获取 pid、状态
      • 查询任务状态(task_status)
      • 获取任务输出(task_output)
      • 停止任务(task_stop)并获取停止信息
    • 客户端应根据服务器的能力声明进行请求,若遇到权限或 Runner 不可用等情况,服务器将返回相应的错误信息,客户端应进行错误处理与重试策略。

服务器信息