当前位置: 首页 > news >正文

Human-MCP:基于MCP协议的人机协作框架,让AI助手安全调用人类执行操作

1. 项目概述:当AI助手学会“动手”

最近在折腾AI Agent和工具调用时,发现了一个让我眼前一亮的项目:mrgoonie/human-mcp。简单来说,这是一个“人机协作协议”(Human-MCP)的实现,它能让像Claude、GPT-4o这类大语言模型驱动的AI助手,通过标准化的协议,安全、可控地请求人类用户来执行那些它自己无法完成的操作。

这听起来可能有点抽象,我举个例子你就明白了。想象一下,你正在和Claude讨论一个复杂的项目,Claude分析后说:“要完成这个任务,我需要访问你电脑上的某个文件来获取数据,或者需要我帮你打开浏览器搜索最新的资料。” 在传统的聊天界面里,AI只能给出建议,然后你自己去手动操作。但有了Human-MCP,Claude可以通过这个协议,向你发起一个结构化的请求:“申请读取/projects/data.xlsx文件”,或者“请求执行操作:打开浏览器并导航至example.com”。你作为用户,可以在一个清晰的界面上看到这个请求,选择批准或拒绝。批准后,相应的操作(如读取文件、点击按钮)才会在你的电脑上实际执行。

这个项目的核心价值在于,它在AI的“思考”能力和人类的“执行”能力之间,架起了一座标准化、安全可控的桥梁。它没有尝试让AI去强行操控一切(那既危险又不现实),而是设计了一套优雅的协商机制。AI负责规划和请求,人类负责最终的审核与执行,两者协同,发挥各自的最大优势。对于开发者、研究员乃至普通的重度AI使用者来说,这意味着你可以构建出能力边界远超纯文本对话的智能助手,让它真正成为你数字工作流的延伸。

2. 核心设计思路:协议、安全与可控性

2.1 MCP协议:AI工具的“通用插座”

要理解Human-MCP,首先得知道什么是MCP。MCP(Model Context Protocol)是由Anthropic公司推出的一种开放协议,旨在为大语言模型(LLM)提供一个标准化的方式来发现、调用外部工具和资源。你可以把它想象成电脑上的USB接口标准。在没有MCP之前,每个AI应用(Claude Desktop、Cursor等)如果想连接新的工具(如数据库、搜索引擎、文件系统),都需要开发自定义的、紧耦合的集成方式,工作量大且不通用。

MCP协议定义了一套简单的“服务器-客户端”模型:

  • MCP服务器:提供具体的工具或资源。例如,一个“文件系统服务器”可以提供read_filelist_files等工具;一个“搜索引擎服务器”可以提供search_web工具。
  • MCP客户端:通常是AI应用本身(如Claude Desktop)。它负责连接一个或多个MCP服务器,获取服务器提供的工具列表,并在与用户对话过程中,根据需求调用合适的工具。

这种设计的美妙之处在于解耦。工具开发者只需遵循MCP标准实现一个服务器,任何支持MCP的AI客户端都能立即使用这个工具,无需为每个客户端单独适配。

2.2 Human-MCP的独特定位:以人为核心的“服务器”

mrgoonie/human-mcp项目正是在MCP协议基础上的一次创新实践。它实现了一个特殊的MCP服务器——这个服务器提供的“工具”,其执行者不是一段代码或一个API,而是用户本人

它的设计思路非常清晰:

  1. 将人类操作抽象为工具:项目定义了一系列“人类可执行操作”作为工具,例如read_file(读取文件)、write_file(写入文件)、open_url(打开网页)、run_command(运行命令)等。这些工具的描述、参数格式都严格遵循MCP规范。
  2. 请求-批准工作流:当AI客户端(如Claude)认为需要执行某个操作时,它会通过MCP协议向Human-MCP服务器发起工具调用请求。Human-MCP服务器不会立即执行,而是将这个请求(包括操作类型、参数、理由)格式化,通过一个用户界面(UI)呈现给用户。
  3. 用户掌控最终决策权:用户在UI上看到清晰的请求描述,例如“Claude申请读取~/Documents/report.pdf以进行摘要分析”。用户可以选择“批准”、“拒绝”或“修改后批准”。只有用户批准后,Human-MCP服务器才会真正执行该操作(如读取文件内容),并将结果返回给AI客户端。
  4. 安全沙箱与权限控制:项目在设计上包含了安全考量。例如,它可以配置允许访问的文件路径白名单,禁止执行高风险系统命令等。所有操作都在用户的监督下进行,并且有明确的日志记录。

注意:这种“人机回环”(Human-in-the-loop)的设计是安全性的基石。它避免了AI被恶意提示词诱导去执行危险操作,也确保了用户始终对自己的数据和系统拥有完全的控制权。这是与“全自动Agent”截然不同的设计哲学。

2.3 与其他方案的对比

在Human-MCP出现之前,实现类似功能通常有两种方式:

  • 全自动Agent框架(如AutoGPT、LangChain Agents):这些框架赋予AI自主调用工具的能力。虽然强大,但风险很高。AI可能陷入循环、执行不可逆的删除操作,或者在被注入恶意指令后造成破坏。它们缺乏一个强制性的、实时的人工审核环节。
  • 手动复制粘贴:最原始的方式。AI给出操作建议和代码,用户手动在终端或编辑器中执行。这种方式安全但效率极低,打断了连贯的工作流。

Human-MCP找到了一个理想的平衡点。它标准化了人机协作的接口,提升了效率(结构化请求比自然语言指令更易处理),同时坚守了安全底线(每项操作都需显式批准)。它不是一个替代自动化的工具,而是一个让人类智能和人工智能能够更高效、更安全协同工作的“协作平台”。

3. 核心细节解析与实操要点

3.1 项目架构与组件拆解

mrgoonie/human-mcp项目的代码结构清晰地反映了其MCP服务器的身份。核心主要包括以下几个部分:

  1. 服务器主程序 (server.pymain.py):这是项目的核心,负责启动一个符合MCP标准的服务器。它使用mcp标准库来定义服务器、工具和资源。主要工作包括:

    • 工具注册:在服务器初始化时,定义并注册所有可供AI调用的“人类工具”,例如human_read_file,human_open_url。每个工具都需要明确定义名称、描述和参数JSON Schema。
    • 请求处理:当收到来自AI客户端的工具调用请求时,不是立即执行,而是将请求信息(工具名、参数、调用ID)放入一个待处理队列,并通过某种方式通知用户界面。
    • 结果回调:监听用户从界面做出的决策(批准/拒绝),如果批准,则执行对应的实际操作(如调用open函数读取文件),然后将执行结果或错误信息按照MCP格式返回给AI客户端。
  2. 用户界面 (UI):这是用户与Human-MCP交互的窗口。项目的UI可能是一个简单的本地Web页面、一个桌面托盘程序,或者集成到终端里。它的核心职责是:

    • 轮询或接收来自服务器的待处理请求。
    • 清晰展示请求详情:哪个AI应用(客户端)发起的、请求什么操作(工具)、操作的具体参数是什么、AI提供的请求理由是什么。
    • 提供操作按钮:让用户点击“Approve”(批准)、“Reject”(拒绝)。有时还可能允许用户修改参数后再批准(例如,修改要读取的文件路径)。
  3. 配置系统:通常通过一个配置文件(如config.yaml.env)来管理安全策略和服务器行为,例如:

    • allowed_paths: 允许AI请求读取/写入的文件系统路径列表,防止越权访问。
    • denied_commands: 禁止执行的系统命令黑名单。
    • server_hostserver_port: 服务器监听的地址和端口。
    • ui_port: 用户界面Web服务的端口。
  4. 工具实现模块:具体实现每个“人类工具”背后逻辑的代码。例如,human_read_file工具的实现函数会接收文件路径参数,在获得用户批准后,执行Python的with open(path, 'r') as f: return f.read(),并处理文件不存在、无权限等异常。

3.2 关键配置与安全边界设定

安全是Human-MCP项目的生命线。在部署和使用前,必须仔细规划安全边界。

1. 文件系统访问控制:这是最常见的风险点。你绝对不希望AI突然请求读取你的SSH私钥或财务文档。配置示例:

# config.yaml security: filesystem: allowed_read_paths: - “${HOME}/Documents/ai_projects/*” - “${HOME}/Downloads/” - “/tmp/” allowed_write_paths: - “${HOME}/Documents/ai_projects/output/” # 使用绝对路径,并谨慎使用通配符`*`

实操心得:我建议采用“最小权限原则”。初期只开放一个特定的、非敏感的目录(如~/AI_Workspace)。所有需要AI协助处理的文件,都先移动到这个目录内。这样既满足了协作需求,又建立了清晰的安全隔离带。

2. 命令执行沙箱:run_command工具功能强大但极其危险。必须施加最严格的限制。

security: commands: allowed_commands: - “git status” - “python3 -m venv .venv” - “pwd” - “ls -la” denied_patterns: - “rm *” # 禁止删除 - “chmod *” # 禁止修改权限 - “curl * | bash” # 禁止管道下载执行 allowlist_only: true # 设置为true,则只允许执行`allowed_commands`列表中的命令,其他一律拒绝。

3. 网络请求管控:open_url工具虽然只是打开浏览器,但也需防范钓鱼风险。可以考虑配置一个允许打开的域名白名单,或者至少对于非HTTPS的链接给予明显警告。

4. 请求频率与超时限制:在服务器配置中,应设置请求队列的最大长度和单个请求的等待超时时间(如30秒)。防止AI客户端疯狂发送请求导致界面卡死,也避免一个被用户忽略的请求一直挂起。

3.3 与AI客户端的集成配置

Human-MCP服务器需要被AI客户端(如Claude Desktop)发现并连接。这通常通过客户端的配置文件完成。

Claude Desktop为例,你需要在其配置文件中添加MCP服务器配置:

// ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) // C:\Users\<YourName>\AppData\Roaming\Claude\claude_desktop_config.json (Windows) { “mcpServers”: { “human-mcp”: { “command”: “python3”, // 或 “uv”, “poetry run” “args”: [ “/path/to/your/human-mcp/server.py” ], “env”: { “HUMAN_MCP_CONFIG_PATH”: “/path/to/your/config.yaml” } } } }

关键点

  • commandargs指向你启动Human-MCP服务器的命令。
  • env可以传递环境变量,例如指定配置文件路径。
  • 修改配置后,需要完全重启Claude Desktop应用,新的MCP服务器才会被加载。

集成验证: 重启客户端后,当你新建一个对话,AI模型(如Claude 3.5 Sonnet)通常会在系统提示中得知新工具可用。你可以直接询问:“你现在可以使用哪些工具?” 或者尝试触发一个场景,比如“请帮我分析一下~/Documents/ai_projects/draft.txt这个文件的内容。” 如果配置成功,Claude会识别出需要调用read_file工具,并向Human-MCP发起请求,你的UI上就会弹出审批窗口。

4. 实操过程与核心环节实现

4.1 环境准备与项目部署

假设我们在一个干净的Python环境中部署mrgoonie/human-mcp

第一步:获取项目代码

# 克隆仓库 git clone https://github.com/mrgoonie/human-mcp.git cd human-mcp # 检查项目结构,通常会有README.md, server.py, requirements.txt, config.example.yaml等文件 ls -la

第二步:创建并激活虚拟环境使用虚拟环境是Python项目的最佳实践,可以避免依赖冲突。

python3 -m venv .venv # 激活虚拟环境 # macOS/Linux: source .venv/bin/activate # Windows: # .venv\Scripts\activate

第三步:安装依赖

pip install -r requirements.txt

通常,核心依赖会包括mcp(Model Context Protocol SDK),fastapiflask(用于构建UI),pydantic(用于数据验证)等。如果项目使用pyproject.toml,则安装命令可能是pip install -e .

第四步:配置初始化

# 复制示例配置文件 cp config.example.yaml config.yaml # 编辑配置文件,根据上文的安全建议进行修改 nano config.yaml # 或使用你喜欢的编辑器

config.yaml中,首要任务是设置allowed_paths。我会先将其设置为一个专门创建的目录:

server: host: “127.0.0.1” port: 8080 ui: port: 3000 security: allowed_paths: - “${HOME}/AI_Workspace”

然后创建这个目录:mkdir ~/AI_Workspace,并放一个测试文件进去:echo “Hello, Human-MCP!” > ~/AI_Workspace/test.txt

4.2 启动服务器与用户界面

根据项目的具体设计,启动方式可能略有不同。有些项目将服务器和UI集成在一个进程中,有些则分开。

常见启动方式:

# 方式一:直接运行主脚本 python server.py # 或 python -m human_mcp # 方式二:使用项目定义的命令(如果使用了poetry) poetry run start # 方式三:分别启动服务器和UI(如果架构分离) # 终端1:启动MCP服务器 python server.py --port 8080 # 终端2:启动UI界面 python ui.py --port 3000

启动成功后,终端会输出类似的信息:

INFO: Started MCP server on stdio INFO: Human-MCP UI is available at http://localhost:3000

此时,打开浏览器访问http://localhost:3000,你应该能看到Human-MCP的用户界面。它可能是一个简单的列表页面,显示“等待中的请求”或“历史请求”。

4.3 端到端操作流程实录

让我们完成一个从AI请求到人工批准执行的完整闭环。

场景:我希望Claude帮我总结一个放在~/AI_Workspace目录下的长文档report.md

步骤1:配置AI客户端确保已按照3.3节的内容,将Human-MCP服务器配置到Claude Desktop中并重启。

步骤2:发起对话在Claude Desktop中新建对话,输入:

“请阅读并总结我~/AI_Workspace/report.md文件的主要内容。”

步骤3:观察AI与MCP的交互Claude理解请求后,不会直接回复内容,而是会尝试调用MCP工具。在Claude的回复中,你可能会看到一段“思考过程”,表明它正在使用read_file工具。同时,Human-MCP的UI界面会立刻弹出一个新的待处理请求。

步骤4:在Human-MCP UI中审批打开UI界面(或如果它是系统托盘应用,会有通知),你会看到类似这样的请求卡片:

  • 客户端: Claude-Desktop
  • 工具:read_file
  • 参数:{“path”: “/Users/yourname/AI_Workspace/report.md”}
  • 理由: “用户要求总结此文件内容。”
  • 状态: Pending (等待中)

界面会有“Approve”和“Reject”按钮。检查请求的路径是否在允许范围内(确实是~/AI_Workspace下的文件),确认无误后,点击“Approve”。

步骤5:查看结果批准后,Human-MCP服务器会执行文件读取操作,将文件内容通过MCP协议返回给Claude。几乎在瞬间,Claude的对话界面就会更新,显示出它对report.md文件内容的总结。

步骤6:流程验证此时,Human-MCP UI中该请求的状态会变为“Approved & Executed”,并可能显示执行结果摘要(如“Success: Read 2048 bytes”)。同时,在服务器的日志中,会有详细的记录:

INFO: Request [req_123] from ‘Claude-Desktop’ for tool ‘read_file’ approved by user. INFO: Executing ‘read_file’ with path ‘/Users/.../report.md’. INFO: Request [req_123] completed successfully.

整个流程下来,你作为用户,在关键的执行环节(文件访问)拥有完全的控制权和知情权。AI则无缝地融入了你的工作流,充当了强大的分析和规划大脑。

5. 常见问题与排查技巧实录

在实际部署和使用Human-MCP的过程中,你几乎一定会遇到一些问题。下面是我踩过坑后总结的排查清单。

5.1 连接与配置问题

问题1:Claude Desktop无法识别Human-MCP工具。

  • 症状:在对话中询问Claude有哪些工具可用,它不提及Human-MCP提供的工具,或者直接说无法执行文件操作。
  • 排查步骤
    1. 检查配置文件路径和语法:确保Claude Desktop的配置文件路径正确,JSON格式无误,没有多余的逗号或括号不匹配。可以使用在线JSON校验工具。
    2. 确认重启生效:修改配置后,必须完全退出并重启Claude Desktop。仅仅关闭窗口可能不够,需要从任务管理器或活动监视器中彻底结束进程。
    3. 查看客户端日志:Claude Desktop通常有日志文件。在macOS上可能在~/Library/Logs/Claude/,Windows在%APPDATA%\Claude\logs。查看日志中是否有加载MCP服务器时的错误信息。
    4. 验证服务器启动:确保Human-MCP服务器在Claude Desktop启动之前就已经在运行。可以尝试在终端手动启动服务器,观察是否有报错。
    5. 使用MCP Inspector工具:这是一个用于调试MCP服务器的官方工具。安装后(pip install mcp[cli]),运行mcp dev human-mcp-server-command-here,可以检查服务器是否正常启动并提供了哪些工具。

问题2:Human-MCP UI无法打开或白屏。

  • 症状:访问http://localhost:3000无响应或页面加载错误。
  • 排查步骤
    1. 检查端口占用:使用lsof -i:3000(macOS/Linux) 或netstat -ano | findstr :3000(Windows) 检查3000端口是否被其他程序占用。修改config.yaml中的ui.port为其他值(如3001)。
    2. 检查UI服务是否启动:查看启动服务器的终端输出,确认UI服务启动成功的日志。如果没有,可能是UI模块的依赖未正确安装,尝试重新安装依赖。
    3. 检查防火墙:确保本地防火墙没有阻止对3000端口的访问。

5.2 工具调用与执行问题

问题3:AI发起了请求,但UI界面没有显示。

  • 症状:Claude显示正在调用工具,但Human-MCP的Web UI或通知里没有任何新请求。
  • 排查步骤
    1. 检查服务器-UI通信:Human-MCP内部,服务器和UI通常通过WebSocket或HTTP长轮询通信。查看服务器日志,看是否收到了来自Claude的请求,以及是否成功将该请求转发给了UI后端。
    2. 确认请求参数在允许范围内:如果AI请求的路径不在allowed_paths配置中,服务器可能会直接拒绝并记录一条警告日志,而不会推送到UI。检查服务器日志中的“permission denied”相关记录。
    3. UI刷新机制:有些简单UI是定时轮询的,可能存在几秒延迟。稍等片刻或尝试刷新页面。

问题4:批准请求后,AI没有收到结果或报错。

  • 症状:在UI点击了批准,但Claude那边一直“正在思考”,或者最终返回一个工具调用错误。
  • 排查步骤
    1. 查看执行日志:这是最重要的信息源。在Human-MCP服务器日志中,找到对应请求ID的执行部分。常见错误有:
      • FileNotFoundError:路径拼写错误,或文件确实不存在。
      • PermissionError:运行服务器的用户没有读取该文件的权限。
      • IsADirectoryError:尝试读取一个目录。
    2. 检查MCP协议兼容性:确保使用的mcpSDK版本与Claude Desktop兼容。版本不匹配可能导致结果格式错误。尝试固定版本,如pip install mcp==1.x.x
    3. 超时设置:如果文件很大或操作很慢,可能超过MCP调用的默认超时时间。需要在服务器端或客户端调整超时设置。

5.3 安全与权限进阶问题

问题5:如何实现更细粒度的权限控制?项目自带的路径白名单是基础控制。如果你需要更复杂的规则,例如“允许读取/projects/下所有.md文件,但禁止读取.env文件”,就需要修改工具执行前的检查逻辑。

  • 解决方案:在server.py中找到工具执行函数(如execute_read_file),在执行实际的open()操作前,添加自定义的校验逻辑。可以使用os.path模块解析路径,结合正则表达式匹配文件名。
    import re def validate_file_access(path): allowed_dir = “/projects/” if not path.startswith(allowed_dir): return False, “Path not in allowed directory” if path.endswith(“.env”): return False, “Access to .env files is prohibited” # 更多规则... return True, “”

问题6:多人协作场景下如何使用?当前设计主要是单用户、单机。如果想在团队中共享一个审批网关,就需要进行架构改造。

  • 思路:将Human-MCP服务器部署为一台内部服务,UI改为一个需要登录的Web应用。每个AI客户端的请求都带上用户身份标识。在服务器端,根据用户身份和预设的权限组(RBAC)来判断是否允许其发起特定请求,并将待审批请求路由给该用户的上级或特定审批人。这相当于一个小型的内部工作流系统,复杂度会显著增加。

问题7:操作记录与审计。对于合规或复盘需求,完整的操作日志至关重要。

  • 实操建议:项目本身会有基础日志。为了更好的审计,你应该配置Python的logging模块,将日志同时输出到文件和标准输出,并设置合理的日志级别(INFO及以上)。关键信息必须包括:时间戳、请求ID、客户端ID、用户(审批者)ID、工具名、参数、审批结果、执行结果(成功/失败及原因)。可以考虑将日志结构化(如JSON格式),便于后续导入到ELK(Elasticsearch, Logstash, Kibana)等日志分析平台进行查询和报表生成。
http://www.jsqmd.com/news/773673/

相关文章:

  • 解放双手:macOS 命令行自动化神器 cliclick 全解析
  • AD8232开源心电监测系统:从传感器到可视化平台的完整技术架构
  • 利用Taotoken用量看板精细化管控团队AI应用开发成本
  • 为开源项目配置统一的Taotoken调用以方便贡献者协作
  • ComfyUI-CLI:命令行驱动Stable Diffusion工作流自动化与批处理
  • 别再只做AISMM认证了!真正值百万的,是这6类场景化运营提效模板(含制造业/零售/金融行业对照表)
  • 一键部署本地大模型:从自动化脚本到实战部署全解析
  • SO-VITS-SVC模型仓库实战:从零部署到音质优化的语音克隆指南
  • 快速上手IDR:Delphi反编译工具的完整指南
  • SpringBoot项目优化技巧:让你的应用更高效、更稳定
  • Arm Cortex-X2处理器MTE与SVE特性及异常分析
  • ARMv8/v9事务内存扩展(TME)原理与系统寄存器配置详解
  • 终极指南:BthPS3蓝牙驱动让PS3控制器在Windows上完美工作
  • 重构IT资产治理:基于Django+Vue的下一代开源CMDB架构实践
  • 从游戏UI到桌面光标:基于《重返未来:1999》风格的光标主题制作全流程解析
  • 如何轻松搭建全能摄像头流媒体系统:go2rtc完整部署指南
  • 如何彻底告别百度网盘分享链接失效:秒传脚本完整使用指南
  • clawpier爬虫框架:声明式配置应对动态网页抓取难题
  • OpenCode插件实战:一键打通ChatGPT Plus,解锁GPT-5 Codex代码生成
  • 自动驾驶汽车低速大曲率轨迹跟踪模型预测【附代码】
  • ISCC2026 校级赛 pwn 前三题
  • 从零构建可信AISMM评估看板,手把手带你打通数据→特征→指标→可视化的全链路闭环
  • OpenSoul开源项目:构建个性化AI灵魂伴侣的技术架构与实战指南
  • 智能中间件驱动的跨平台设备通信技术解析
  • claw-memory-os:基于文件系统的AI智能体持久化记忆系统设计与实践
  • 大数据运维中的虚拟机配置:从零搭建你的数据城堡
  • 影刀RPA打造店群自动化:详解多浏览器并发,为TEMU与拼多多构建“平行作业空间”
  • 2025届学术党必备的六大AI论文平台实际效果
  • ESP32-P4 芯片升级:性能与多媒体体验全面提升
  • Gitee:中国开发者生态的加速器与安全守护者