mcpField
H
hellohop

hellohop

本地服务
hellohop.app通信协作02 天前更新

关于 hellohop

hellohop 是面向开发者及其助手的 MCP 服务,可读取 HelloHop WhatsApp 频道数据。发送功能默认关闭,需显式启用。

主要功能

  1. 01读取频道状态和已记录的聊天
  2. 02查看近期消息和联系人记录
  3. 03查询群组、社群及子群
  4. 04启用后发送文本、媒体、投票和表情回应
  5. 05启用后删除已发送消息

适用场景

  1. 01查看 WhatsApp 聊天中的近期消息
  2. 02检查频道所属群组和社群
  3. 03从关联号码发送经批准的消息或投票

MCP 相关

该服务向 MCP 客户端提供 HelloHop 频道状态、聊天、消息、联系人、群组和社群等工具。发送工具仅在配置启用后才会注册。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"app-hellohop-hellohop": {
"command": "npx",
"args": [
"-y",
"hellohop-mcp"
],
"env": {
"GATEWAY_API_TOKEN": "<GATEWAY_API_TOKEN>",
"GATEWAY_CHANNEL_ID": "<GATEWAY_CHANNEL_ID>",
"GATEWAY_ALLOW_SEND": "<GATEWAY_ALLOW_SEND>",
"GATEWAY_API_URL": "<GATEWAY_API_URL>"
}
}
}
}
启动命令npx -y hellohop-mcp
需要配置的环境变量
GATEWAY_API_TOKEN密钥The channel's API token.
GATEWAY_CHANNEL_IDThe channel ID the token belongs to.
GATEWAY_ALLOW_SENDSet to 1 or true to enable the send tools. Off by default.
GATEWAY_API_URLAPI base URL. Defaults to https://api.hellohop.app/v1.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmhellohop-mcp0.3.2

工具

8

收录的工具列表 · 更新于 今天

参数类型必填说明
include_safetyboolean否同时读取安全指标(额外发送一次 GET 请求)。默认值为 false。

详细介绍

hellohop-mcp

HelloHop 是面向开发者的独立 WhatsApp API:发送和接收消息、自动管理群组和社群,以及获取带签名的 Webhook,每个号码每月 25 美元起,并提供免费的沙盒。

这是 HelloHop MCP 服务。它让 MCP 客户端(例如 Claude Desktop、Claude Code 或 Cursor)能够使用公共 API 中的一个渠道:读取渠道状态、它已观察到的聊天、近期消息、群组和社群,以及联系人。发送内容(文本、通过 URL 发送媒体、投票、反应)默认关闭,仅在你启用后可用。文档:https://hellohop.app/docs/mcp。HelloHop 与 WhatsApp 或 Meta 没有关联,也未获其认可。

安装

需要 Node.js 22 或更高版本。使用 npx 运行,无需单独安装:

npx -y hellohop-mcp

配置完成后,MCP 客户端会为你启动该服务(见下文的 Claude Desktop 和 Claude Code)。服务会从环境变量中读取设置,变量列表见“环境变量”部分。

工具

工具请求备注
channel_statusGET {base}/sessions/{channel}include_safety: true 还会读取 GET {base}/sessions/{channel}/safety。
list_chatsGET {base}/sessions/{channel}/chats从频道自己的日志中获取最多 100 个聊天。
read_messagesGET {base}/sessions/{channel}/chats/{chat}/messages最多获取 limit 条消息(默认 50,最多 500);next_before 会作为 before 向前翻页。chat 按原样传递,例如 [email protected]。
list_groupsGET {base}/sessions/{channel}/groups会向 WhatsApp 发起请求;不要轮询(被限流的号码会返回 429 whatsapp_rate_limited)。
get_groupGET {base}/sessions/{channel}/groups/{group}会向 WhatsApp 发起请求。
get_communityGET {base}/sessions/{channel}/communities/{community}会向 WhatsApp 发起请求。
list_community_subgroupsGET {base}/sessions/{channel}/communities/{community}/subgroups会向 WhatsApp 发起请求。
get_contactGET {base}/sessions/{channel}/contacts/{who}频道存储的联系人条目;不会向 WhatsApp 发起请求。
send_textPOST {base}/sessions/{channel}/messages/text仅当 GATEWAY_ALLOW_SEND=1 时可用。请求体为 {to, text},如有提供,还包括 quoted。
send_mediaPOST {base}/sessions/{channel}/messages/{kind}仅当 GATEWAY_ALLOW_SEND=1 时可用。kind 为 image、video、audio、voice 或 document;请求体为 {to, url},如有提供,还包括 caption、filename、mime_type。网关会获取该 URL。
send_pollPOST {base}/sessions/{channel}/messages/poll仅当 GATEWAY_ALLOW_SEND=1 时可用。请求体为 {to, question, options}(2 至 12 个选项),如有提供,还包括 multiple。
reactPUT {base}/sessions/{channel}/messages/{message_id}/reaction仅当 GATEWAY_ALLOW_SEND=1 时可用。请求体为 {emoji}。
unreactDELETE {base}/sessions/{channel}/messages/{message_id}/reaction仅当 GATEWAY_ALLOW_SEND=1 时可用。无请求体。
delete_messageDELETE {base}/sessions/{channel}/messages/{message_id}仅当 GATEWAY_ALLOW_SEND=1 时可用。无请求体。在 48 小时内删除该号码发送的消息,且对所有人生效。

有意不提供:群组和社区邀请链接(Agent 可能会把公开邀请链接粘贴到聊天中)、媒体下载(返回字节而非 JSON)以及 webhook 配置。

get_group 会返回群组参与者列表。这属于你自己的群组数据,因此会像其他工具结果一样进入 MCP 客户端的上下文。只有在你信任该客户端处理这些成员身份信息时,才使用此工具。

公共 API 在读取对话时只转发 limit(1 至 500)和 before,因此 read_messages 使用这两个参数翻页,其他查询字符串都不会传递给 API。其他列表工具不接受分页参数。

聊天标识会直接放入 URL 路径,不进行百分号编码,因为 API 会拒绝任何包含 % 的路径。若聊天标识包含字母、数字和 @ . : _ + - 以外的字符,则会在发起请求前被拒绝。

每个请求都会发送 Authorization: Bearer <token>。成功响应以 JSON 文本形式返回。HTTP 错误会作为工具错误返回,其中包含 status、code 和 error;如果 API 返回了 retry_after(以及 window、resets_at、ambiguous、id),错误中也会包含这些字段。所有返回字符串中的令牌都会被隐藏,成功响应正文也不例外。系统不会自动重试;遇到重定向时会直接拒绝,而不会跟随。

环境

变量必需含义
GATEWAY_API_URL否API 基础 URL。默认为 https://api.hellohop.app/v1,即公共 API。必须使用 https(仅 localhost 接受 http)。
GATEWAY_API_TOKEN是该频道的 API 令牌。此令牌绝不会被记录到日志中。
GATEWAY_CHANNEL_ID是此令牌所属的频道 ID。
GATEWAY_ALLOW_SEND否设置为恰好 1 或 true 以启用发送工具(send_text、send_media、send_poll、react、unreact、delete_message)。任何其他值或未设置时,这些工具都不会启用。

如果缺少必需变量,服务会将原因写入 stderr,并以状态码 1 退出。

默认关闭发送功能

未设置 GATEWAY_ALLOW_SEND=1 时,不会注册任何发送工具:客户端无法看到或调用这些工具,服务也绝不会联系发送端点。启用后,每次调用都会通过已关联的号码发送一条真实的 WhatsApp 消息(包括添加反应、移除反应和删除消息),并计入频道的每日发送上限(如果有;运营人员可以将频道设为不受上限限制)。

发送可能成功,但不会返回成功提示

如果 send_text 失败时消息仍有可能已发送,则会返回 delivery: "unknown":例如未收到响应、API 返回 ambiguous: true(504 send_unconfirmed,其中包含已记录该请求的行的 id),或返回任何其他 502 或 504。不要再次发送。请先通过 read_messages 检查该聊天。再次发送可能导致同一条消息被发送给真实用户两次。

提示词注入:同时读取和发送会让陌生人操控发送内容

read_messages 会将第三方(即任何能够向该号码发送消息的人)撰写的文本放入模型的上下文中。如果同一服务还启用了 GATEWAY_ALLOW_SEND=1,这些文本就可能指示模型向任何人发送任何内容。这无法通过信任客户端或使用者来解决:指令来自正在读取的消息。

将读取和发送配置为两个独立的客户端配置:

  • 只读配置,不设置 GATEWAY_ALLOW_SEND,用于任何会读取消息的场景;
  • 发送配置,设置 GATEWAY_ALLOW_SEND=1,仅在需要发送的会话中启用,并由人员审核每次 send_text 调用的 to 和 text 后批准。

发送配置仍会注册读取工具,因此一旦使用该配置的会话读取消息,就会暴露于风险之中。除非你信任所有能够向该号码发送消息的人,否则不要在该会话中使用 read_messages。

Claude Desktop

在 claude_desktop_config.json 的 mcpServers 中添加一项:

{
  "mcpServers": {
    "hellohop-mcp": {
      "command": "npx",
      "args": ["-y", "hellohop-mcp"],
      "env": {
        "GATEWAY_API_TOKEN": "<CHANNEL_TOKEN>",
        "GATEWAY_CHANNEL_ID": "<CHANNEL_ID>"
      }
    }
  }
}

在 env 中添加 "GATEWAY_ALLOW_SEND": "1" 以启用发送功能。编辑文件后,重启 Claude Desktop。

Claude Code

claude mcp add hellohop-mcp \
  -e GATEWAY_API_TOKEN=<CHANNEL_TOKEN> \
  -e GATEWAY_CHANNEL_ID=<CHANNEL_ID> \
  -- npx -y hellohop-mcp

在 -- 前添加 -e GATEWAY_ALLOW_SEND=1 以启用发送功能。

这两个客户端都会将令牌以纯文本形式存储在其配置文件中。请使用频道自身的令牌,切勿使用运营人员凭据。

Cursor

在 ~/.cursor/mcp.json(或项目中的 .cursor/mcp.json)添加相同的配置项:

{
  "mcpServers": {
    "hellohop-mcp": {
      "command": "npx",
      "args": ["-y", "hellohop-mcp"],
      "env": {
        "GATEWAY_API_TOKEN": "<CHANNEL_TOKEN>",
        "GATEWAY_CHANNEL_ID": "<CHANNEL_ID>"
      }
    }
  }
}

除非在 env 中添加 "GATEWAY_ALLOW_SEND": "1",否则发送功能会保持关闭。

请求示例

连接后,可以用自然语言向助手提问。例如:

  • “我的频道状态如何?”(调用 channel_status)
  • “显示我与 [email protected] 的聊天中的最近 20 条消息。”(调用 read_messages)
  • “列出这个号码所在的群组。”(调用 list_groups)

许可证

MIT。完整文档:https://hellohop.app/docs/mcp

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。