返回市场
MCP-人类

MCP-人类

作者:olalonde20 星标更新:2025-05-08

项目介绍

MCP-Human:AI助手的人类辅助工具

这是一个模型上下文协议(MCP)服务器,它允许AI助手在需要时获取人类输入。该工具会在Amazon Mechanical Turk上创建任务,让真实的人类回答来自AI系统的问题。虽然主要是概念验证,但它展示了如何使用MCP标准构建人机交互的AI系统。请参阅限制以了解当前的约束。

我们需要深入

设置

先决条件

  • Node.js 16+
  • 具有MTurk权限的AWS凭证。请参阅[以下说明](#设置具有Mechanical Turk访问权限的AWS用户)。
  • AWS CLI(推荐用于设置AWS凭证)

配置AWS凭证

# 为mcp-human配置文件配置AWS凭证
export AWS_ACCESS_KEY_ID="your_access_key"
export AWS_SECRET_ACCESS_KEY="your_secret_key"
aws configure set aws_access_key_id ${AWS_ACCESS_KEY_ID} --profile mcp-human
aws configure set aws_secret_access_key ${AWS_SECRET_ACCESS_KEY} --profile mcp-human

使用您的MCP客户端配置MCP服务器

Claude代码

沙箱模式:

claude mcp add human -- npx -y mcp-human@latest

服务器默认使用沙箱模式(用于测试)。如果您想提交实际请求,请使用MTURK_SANDBOX=false

claude mcp add human -e MTURK_SANDBOX=false -- npx -y mcp-human@latest

通用

更新您的MCP客户端配置如下:

{
  "mcpServers": {
    "human": {
      "command": "npx",
      "args": ["-y", "mcp-human@latest"]
    }
  }
}

例如:Claude Desktop(MacOS):~/Library/Application\ Support/Claude/claude_desktop_config.json

配置

服务器可以通过以下环境变量进行配置:

变量描述默认值
MTURK_SANDBOX使用MTurk沙箱(true)或生产环境(false)true
AWS_REGIONMTurk的AWS区域us-east-1
AWS_PROFILE用于凭证的AWS配置文件mcp-human
DEFAULT_REWARD奖励金额(美元)0.05
FORM_URL表单托管的URL。需要是https。https://syskall.com/mcp-human/

设置具有Mechanical Turk访问权限的AWS用户

要创建一个具有适当权限的AWS用户以访问Mechanical Turk:

  1. 登录到AWS管理控制台

  2. 创建新的IAM用户

    • 导航至IAM(身份和访问管理)
    • 点击“用户” > “创建用户”
    • 输入用户名(例如,mturk-api-user
    • 点击“下一步”继续设置权限
  3. 设置权限

    • 选择“直接附加现有策略”
    • 搜索并选择 AmazonMechanicalTurkFullAccess
    • 如果需要更细粒度的控制,可以创建一个具有特定MTurk权限的自定义策略
    • 点击“下一步”,然后“创建用户”
  4. 创建访问密钥

    • 用户创建后,点击用户名进入其详细页面
    • 转到“安全凭证”标签页
    • 在“访问密钥”部分,点击“创建访问密钥”
    • 选择“运行在AWS之外的应用程序”或其他合适的选项
    • 通过向导点击最终“创建访问密钥”
  5. 保存凭证

    • 下载CSV文件或复制访问密钥ID和秘密访问密钥
    • 这些将用作AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY环境变量
    • 重要:这是唯一能看到秘密访问密钥的时候,所以请安全保存
  6. 配置MTurk请求者设置

注意:始终从MTurk沙箱开始(MTURK_SANDBOX=true),以测试集成而不花费真实资金。只有在您确信实现无误时才切换到生产环境。

架构

此系统由两个主要组件组成:

  1. MCP服务器:一个实现模型上下文协议并与MTurk集成的服务器
  2. 表单:一个静态HTML表单。

AI助手连接到MCP服务器,该服务器在MTurk上创建任务。人类工作者通过表单完成这些任务,他们的响应可供AI助手使用。

使用的Mechanical Turk表单托管在GitHub Pages上:https://syskall.com/mcp-human/。它通过查询参数填充数据。

MCP工具

askHuman

允许AI向Mechanical Turk上的工人提出问题。

参数:

  • question:要问工人的问题
  • reward:奖励金额(美元,默认:$0.05)
  • title:HIT标题(可选)
  • description:HIT描述(可选)
  • hitValiditySeconds:HIT过期前的时间(秒,默认:1小时)

示例用法:

// 从AI助手的角度
const response = await call("askHuman", {
  question:
    "基于情绪调整照明的智能家居设备的创意名称是什么?",
  reward: "0.25",
  title: "帮助创意产品命名",
  hitValiditySeconds: 3600, // HIT有效1小时
});

如果工人在HIT的有效期内作出回应,则响应将包含他们的答案。如果没有,它将返回一个可以稍后检查的HIT ID。

checkHITStatus

检查之前创建的HIT的状态,并检索任何已提交的任务。

参数:

  • hitId:要检查状态的HIT ID

示例用法:

// 从AI助手的角度
const status = await call("checkHITStatus", {
  hitId: "3XMVN1BINNIXMTM9TTDO1GKMW7SGGZ",
});

资源

mturk-account

提供对MTurk账户信息的访问。

URI:

  • mturk-account://balance - 获取账户余额
  • mturk-account://hits - 列出HIT
  • mturk-account://config - 获取配置信息

限制

  • 需要实现进度通知,以避免超时。
  • 目前仅支持简单的文本问题和答案
  • 每个HIT仅限一次分配
  • 不支持表单中的自定义HTML/JS
  • 结果采用简单轮询而不是webhook方法
  • 使用MTurk的ExternalQuestion格式,需要托管表单