人机回路 MCP 服务器
项目简介
本项目实现了一个基于 Model Context Protocol (MCP) 的服务器,专注于在AI自主执行任务流程中,智能地判断是否需要人工干预。它并非简单地将人工干预视为二元选择,而是采用多维度评分系统,从复杂性、权限、风险、情感理解和置信度等多方面评估任务,从而更精准地确定何时需要人工介入,实现更高效的人机协作。
主要功能点
- 任务评估工具 (Tool): 提供 'evaluate_need_for_human' 工具,允许客户端(如LLM Agent)调用此工具来评估特定任务是否需要人工干预。评估结果会详细说明是否需要人工介入、置信度、原因以及建议的操作类型(如审核、输入、批准等)。
- 任务评估 Prompt (Prompt): 提供 'evaluate_task' Prompt,客户端可以请求获取此 Prompt,用于引导 LLM 根据预设的系统指令(system message)和用户输入的任务描述(user message)进行任务评估,从而决定是否需要人工介入。
- 多维度评分系统: 服务器内部采用多维度评分机制,从任务的复杂性、风险性、敏感性、模型能力匹配度等多个维度综合评估,确保评估的全面性和准确性。
- 可配置的阈值: 评分系统中各个维度的阈值是可调整的,允许根据实际应用场景和经验进行优化,提高系统的灵活性和适应性。
- 详细的评估报告: 评估结果包含详细信息,例如评估原因、建议的操作、置信度、以及供人工审核的问题等,有助于理解评估过程和辅助人工决策。
安装步骤
- 确保已安装 Node.js 和 npm: 本服务器基于 Node.js 开发,请确保您的环境中已安装 Node.js 和 npm 包管理器。
- 下载仓库代码: 从 GitHub 仓库 https://github.com/boorich/mcp-human-loop 下载代码到本地。
- 安装依赖: 在仓库根目录下打开终端,运行以下命令安装项目依赖:
npm install - 构建项目 (可选): 虽然仓库中 'index.ts' 可以直接运行,但如果需要构建,可以添加构建脚本并在 'package.json' 中配置,例如使用 'tsc' 编译 TypeScript 代码。
服务器配置 (MCP 客户端配置)
MCP 客户端需要配置以下 JSON 信息以连接到此 MCP 服务器。请注意,这里的 'command' 和 'args' 需要根据您的实际环境和 Node.js 安装路径进行调整。
{ "serverName": "HumanLoopMCP", "command": "node", "args": [ "path/to/your/mcp-human-loop/src/index.js" // 将 "path/to/your/mcp-human-loop" 替换为实际仓库路径 ] }
配置参数说明:
- 'serverName': MCP 服务器的名称,可以自定义,用于在客户端标识该服务器。例如: "HumanLoopMCP"。
- 'command': 启动 MCP 服务器的命令,这里使用 'node' 命令来运行 JavaScript 代码。
- 'args': 启动命令的参数,以数组形式提供。
- 'path/to/your/mcp-human-loop/src/index.js': 指向 'index.js' 文件的绝对路径。请务必将其替换为您本地仓库 'src/index.js' 文件的实际路径。 您需要根据您将仓库下载到哪个位置来修改此路径。
例如,如果您的仓库下载到了用户目录下的 'Documents/mcp-human-loop' 文件夹,则 'args' 可能需要配置为:
"args": [ "~/Documents/mcp-human-loop/src/index.js" ]
请根据您的实际情况修改路径,确保 MCP 客户端能够正确找到并执行 'index.js' 文件。
基本使用方法
-
启动 MCP 服务器: 无需手动启动服务器。当 MCP 客户端尝试连接时,会根据您在客户端配置中提供的 'command' 和 'args' 自动启动服务器进程。
-
在 MCP 客户端中使用 Tool 或 Prompt:
- 使用 Tool: 客户端可以调用 'evaluate_need_for_human' 工具,并提供 'taskDescription' (任务描述) 和可选的 'modelCapabilities' (模型能力列表) 作为参数。服务器将返回 JSON 格式的评估结果。
- 使用 Prompt: 客户端可以请求 'evaluate_task' Prompt,并提供 'taskDescription' 作为参数。服务器将返回包含系统消息和用户消息的 Prompt 消息结构,客户端可以将此 Prompt 用于 LLM 对话,以获取评估结果。
使用示例 (假设在 MCP 客户端中调用 'evaluate_need_for_human' Tool):
客户端发送 'CallToolRequest' 请求,参数如下:
{ "name": "evaluate_need_for_human", "arguments": { "taskDescription": "分析用户情感并回复。", "modelCapabilities": ["情感分析", "自然语言回复"] } }
服务器返回 'CallToolResponse' 响应,内容 (content) 部分将包含 JSON 格式的评估结果,例如:
{ "needsHuman": true, "confidence": 0.75, "reason": "sensitive nature", "suggestedAction": { "type": "input", "description": "Needs human input on sensitive aspects" }, "confidentStatements": [ // ... (评估过程中的置信陈述) ], "humanQuestions": [ // ... (供人工审核的问题) ] }
客户端可以根据返回的评估结果和建议操作,决定是否需要人工介入任务流程。
信息
分类
AI与计算