PowPow MCP 接口文档

服务名 powpow-mcp · 服务端版本 v0.23.5 · 工具数 34 · 文档更新 2026-11-04
English summary at the end of this page.

只想尽快连上?可以跳过协议细节,直接看 十一、在 AI 客户端中接入 —— 只需要填一条 URL,元数据发现、动态注册与 PKCE 都由客户端自动完成。
  1. 服务概览
  2. 连接与传输协议
  3. 鉴权(OAuth 2.1 + PKCE)
  4. 工具清单(34)
  5. 调用示例
  6. 限流与超时
  7. 写操作规则
  8. 错误码
  9. 隐私与合规
  10. 测试账号与联系
  11. 在 AI 客户端中接入

一、服务概览

PowPow(泡泡)是一个中文「附近发现」社交应用:用户在地图上发布带位置的帖子、创建可对话的数字人(AI 角色)、 参与线下打卡活动。本 MCP 服务把上述内容与账号能力开放给 AI 客户端,让助手可以查询附近有什么、 读取账号状态,并在用户确认后代为发帖、点赞、关注、收藏。

项目值
MCP 端点https://global.powpow.online/api/mcp
传输方式Streamable HTTP(不是 SSE 长连接)
支持的 HTTP 方法POST(JSON-RPC)、GET(可选的服务端推送)、OPTIONS
协议版本2025-06-18 / 2025-11-25 / 2026-07-28(按 initialize 协商)
响应格式text/event-stream(SSE,逐行 data: {json} 解析)
鉴权OAuth 2.1 + PKCE(S256),支持动态客户端注册(DCR)
工具数量34(20 个只读 + 14 个写)。另有一个默认关闭的诊断工具,仅在服务端开启 MCP_ENABLE_PROBE 时注册,不对外提供
官方站点https://global.powpow.online
关于 SSE:即使请求体是普通 JSON-RPC,响应也以 text/event-stream 返回。 客户端需要按行读取,取 data: 之后的内容作为 JSON 解析;同一响应内可能有多条事件。 不要按 application/json 一次性 JSON.parse 整个响应体。

二、连接与传输协议

所有请求都是标准 MCP JSON-RPC 2.0。必需请求头:

Content-Type: application/json
Accept: application/json, text/event-stream
Authorization: Bearer <access_token>

服务端在响应头返回 Mcp-Session-Id 时,后续请求需带上同名请求头(Mcp-Session-Id); 服务端不强制要求,但带上可复用会话状态。CORS 允许任意来源(Access-Control-Allow-Origin: *), 暴露 Mcp-Session-Id、Content-Type、WWW-Authenticate 三个响应头。

服务端同时兼容两种调用形态:传统形态(先 initialize 握手,再 tools/list、tools/call) 与无握手的 modern envelope 形态(协议 2026-07-28,工具名与方法名通过 Mcp-Method / Mcp-Name 请求头镜像)。不支持现代化的客户端走传统形态即可。

三、鉴权(OAuth 2.1 + PKCE)

端点受 OAuth 2.1 保护,未携带有效 access token 时任何方法都会返回 401,包括 initialize。 401 响应通过 WWW-Authenticate 指明资源元数据位置:

HTTP/1.1 401 Unauthorized
www-authenticate: Bearer error="invalid_token",
  error_description="missing or invalid access token",
  resource_metadata="https://global.powpow.online/api/mcp/.well-known/oauth-protected-resource"

3.1 资源元数据(RFC 9728)

GET https://global.powpow.online/api/mcp/.well-known/oauth-protected-resource

{
  "resource": "https://global.powpow.online/api/mcp",
  "authorization_servers": ["https://xhahsqbaohraqrdhtvay.supabase.co/auth/v1"],
  "scopes_supported": ["openid", "profile", "email"],
  "resource_name": "PowPow",
  "resource_documentation": "https://www.powpow.online/"
}

3.2 授权服务器元数据

授权服务器由托管身份服务提供,与资源端点不在同一个域名——这是标准 MCP OAuth 架构: PowPow 自有域名只暴露资源端点,授权服务器地址通过资源元数据下发。 客户端不需要手工配置任何地址:读取 3.1 的资源元数据后,MCP 客户端会按 RFC 8414 自动前往 authorization_servers 指向的位置拉取下面的发现文档。

需要人工核对时,从本站入口获取即可(内容与授权服务器返回一致):

GET https://global.powpow.online/api/mcp/.well-known/oauth-protected-resource → 读取 authorization_servers 字段

若平台要求手工填写端点(不走自动发现),下表可直接抄写。域名固定,不可替换: issuer 必须与资源元数据中 authorization_servers 的值逐字一致, 换成其它域名会导致客户端在发现阶段校验失败、授权流程根本起不来。

端点URL
issuerhttps://xhahsqbaohraqrdhtvay.supabase.co/auth/v1
授权https://xhahsqbaohraqrdhtvay.supabase.co/auth/v1/oauth/authorize
令牌https://xhahsqbaohraqrdhtvay.supabase.co/auth/v1/oauth/token
动态注册(DCR)https://xhahsqbaohraqrdhtvay.supabase.co/auth/v1/oauth/clients/register
用户信息https://xhahsqbaohraqrdhtvay.supabase.co/auth/v1/oauth/userinfo
JWKShttps://xhahsqbaohraqrdhtvay.supabase.co/auth/v1/.well-known/jwks.json

3.3 授权流程要点

四、工具清单(34)

标注说明:本服务未开放匿名访问,下表所有工具(含 initialize 与 tools/list)都必须携带有效 access token。 需登录 读取公开内容或本人数据,不修改任何数据; 写 会修改数据,受写权限开关与限流约束。

4.1 附近发现与内容检索(8)

工具名说明
find_nearby 需登录 核心工具。按地名查找附近的公开数字人、真实用户与帖子。入参只要地名(place),不接收经纬度; 服务端先经高德地图解析地名(返回 matched_name 与 confidence 匹配度),再检索周边内容。 调用后以「PowPow 附近发现」卡片展示结果。
nearby_attractions 需登录 按地名查找附近的景点(attractions)与商圈(business_districts),各带距离。
geocode_place 需登录 地名转坐标,返回 matched_name 与 confidence。地名模糊时用于先核对再检索。
get_digital_human 需登录 数字人详情:人设(persona)、简介、头像、所在位置、当前情绪。
get_post_detail 需登录 单条公开帖子的完整正文与评论列表。
get_post_replies 需登录 某条公开帖子的评论:一级评论分页返回(最新在前),每条内嵌其下的回复,带作者昵称、时间与「评论 id」。 要回复某条评论时,reply_to_comment_id 就用这里输出的 id。只想看正文用 get_post_detail。
search_posts 需登录 按关键词检索公开帖子(不区分大小写),返回摘要与位置。
list_campaigns 需登录 列出公开活动(如「北京 100 家博物馆」打卡活动)及其打卡点。

4.2 账号与自身数据(6)

工具名说明
whoami 需登录 确认当前授权的账号(用户 ID、用户名、昵称)。
get_my_account 需登录 账号概览:昵称、徽章余额、会员等级与到期时间、帖子数、数字人数、加入时间、主页链接。
my_posts 需登录 本人发布的帖子(含位置、点赞/评论数、原帖链接)。
get_my_post_replies 需登录 别人给我的回音,两类都算:我帖子下的评论与回复,以及别人在他人帖子中回复我的话(自己回自己不算)。 默认只返回「上次读过之后」的新内容;回溯历史传 since_hours。传 mark_read=true 会把本次返回标为已读——只在用户确实看过或已被转述时才传。
my_digital_humans 需登录 本人创建的数字人(是否过期、剩余天数、所在位置、对话链接)。
get_badge_history 需登录 徽章余额与发放/消耗流水。只读,不能通过接口增减徽章。

4.3 社交关系(7)

工具名说明
get_user_profile 需登录 任意用户的公开主页:昵称、简介、徽章数、帖子/关注/粉丝数、最近 3 条帖子。
search_users 需登录 按用户名或昵称模糊搜索用户,最多 20 条。
my_following 需登录 我关注的人。
my_followers 需登录 关注我的人,每项带 is_mutual(是否互关)。
list_friends 需登录 好友列表。PowPow 的「好友」= 互相关注,没有好友申请流程。
follow_user 需登录 写 关注某人。需 user_id(先用 search_users 查),重复关注不报错。
unfollow_user 需登录 写 取消关注。未关注时返回 removed: false,不报错。

4.4 收藏(4)

工具名说明
list_favorites 需登录 我的收藏,三类:地点 location、帖子 post、数字人 digital_human。
add_favorite 需登录 写 加入收藏,可带分类、标签、备注。重复收藏不报错。
update_favorite 需登录 写 修改收藏的分类/标签/备注,只改传入字段,无历史版本。
remove_favorite 需登录 写 删除收藏,不存在时返回 removed: false。

4.5 内容发布与互动(6)

工具名说明
prepare_post 需登录 写 只生成草稿,不公开。正文最多 5000 字,可选 1-3 张对话内上传的图片,可带地名。
publish_post 需登录 写 只有它能真正公开帖子,必须带 draft_id。同一 draft_id 重复调用不会重复发帖。
delete_post 需登录 写 撤回通过 AI 发布、且发布后 24 小时内的帖子。站内自己发的帖子不在此列。
like_post 需登录 写 点赞。已点过不报错;对即将过期的帖子点赞会延长其 24 小时。
unlike_post 需登录 写 取消点赞。未点过不报错。
reply_to_post 需登录 写 在某条公开帖子下发表评论;传 reply_to_comment_id 即为回复该评论(任意层级都直接回,无需自己判断)。 正文 ≤500 字。以用户本人名义公开留言,发出前必须把正文原样念给用户确认。

4.6 资料与数字人(3)

工具名说明
update_profile 需登录 写 修改昵称(1-20 字)与简介(≤200 字)。头像不在此修改,需在站内操作。
create_digital_human 需登录 写 创建数字人:扣 2 枚徽章,30 天后过期,创建后出现在地图上。位置用地名描述,不传坐标。
delete_digital_human 需登录 写 撤销通过 AI 创建、24 小时内、且尚无人对话的数字人,退还 2 枚徽章。

五、调用示例

5.1 握手

POST /api/mcp HTTP/1.1
Host: global.powpow.online
Content-Type: application/json
Accept: application/json, text/event-stream
Authorization: Bearer <access_token>

{"jsonrpc":"2.0","id":1,"method":"initialize",
 "params":{"protocolVersion":"2025-06-18","capabilities":{},
           "clientInfo":{"name":"my-client","version":"1.0.0"}}}

响应(SSE):

event: message
data: {"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-06-18",
  "serverInfo":{"name":"powpow-mcp","version":"0.22.4"},
  "capabilities":{"tools":{}},"instructions":"PowPow 是「附近发现」社交应用…"}}

5.2 列出工具

{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}

5.3 调用工具(公开工具,无需账号数据)

{"jsonrpc":"2.0","id":3,"method":"tools/call",
 "params":{"name":"find_nearby","arguments":{"place":"北京天坛公园"}}}

返回为文本摘要(给模型)+ structuredContent(给界面渲染卡片):

{"jsonrpc":"2.0","id":3,"result":{
  "content":[{"type":"text","text":"天坛公园附近有 3 个数字人、5 条帖子…"}],
  "structuredContent":{"place":"天坛公园","confidence":1.0,"items":[…]},
  "isError":false}}

5.4 两步发帖(写操作必须两次调用)

// 第一步:只生成草稿,用户还看不到任何公开内容
{"jsonrpc":"2.0","id":4,"method":"tools/call",
 "params":{"name":"prepare_post",
           "arguments":{"content":"今天在天坛看人拍汉服,光特别好。","place":"北京天坛公园"}}}
// → result: {"draft_id":"…","expires_at":"…"}

// 第二步:用户明确确认后才发布
{"jsonrpc":"2.0","id":5,"method":"tools/call",
 "params":{"name":"publish_post","arguments":{"draft_id":"…"}}}

六、限流与超时

范围规则超限表现
公开检索工具
find_nearby / nearby_attractions / geocode_place
每个访问令牌 60 秒内最多 12 次 返回 isError: true,文案「请求太频繁…请 N 秒后再试」,不执行任何外部调用
全部写操作 每个 PowPow 账号 60 秒内最多 20 次(按账号,不按 IP) 429 / rate_limited
外部依赖(高德地图) 单次超时 8 秒 工具内降级为「稍后重试」,不返回 5xx
写操作网关 单次超时 20 秒 同上
限流按访问令牌计数。若同一出口 IP 下有大量客户端同时调用, 建议各自完成 OAuth 授权、使用独立令牌,避免相互挤占配额。

七、写操作规则

八、错误码

传输层错误使用 HTTP 状态码;业务错误在工具结果的 isError 与错误码中体现。

code含义与处理
unauthorizedaccess token 缺失、过期或无效 → 重新走 OAuth 授权
subscription_required账号状态受限(例如会员已过期),暂不能读写账号数据
write_disabled用户在站内关闭了 AI 写权限
rate_limited触发限流,稍后重试
missing_id / missing_user_id / missing_item_id缺少必填标识
invalid_target / invalid_item_type目标不存在或类型不合法
not_found对象不存在或无权限查看
missing_content / content_too_long正文为空或超过 5000 字
missing_draft_id / draft_expired / draft_deleted草稿缺失、超过 1 小时、或已被使用
publishing同一草稿正在发布中(并发保护)
not_mcp_post / too_old该帖子不是 AI 发布,或已超过 24 小时撤回窗口
badge_insufficient徽章不足(创建数字人需 2 枚)
not_mcp_dh / has_conversations数字人不是 AI 创建,或已有人对话,无法撤销
name_too_long / missing_name / missing_location创建数字人的入参不合法

九、隐私与合规

十、测试账号与联系

测试账号

为避免公开账号被滥用,测试账号与密码不在本页展示。需要审核或联调时,请发邮件至下方地址索取, 我们会在 1 个工作日内提供账号、密码与样例数据说明(含公开帖子、数字人、徽章与账号状态; 密码登录即可,无 MFA、无邮件验证码)。

该账号仅用于审核与联调,审核结束后会重置密码或停用。请勿将其用于任何其他用途。

技术支持:dongtao@outlook.com

十一、在 AI 客户端中接入

前面几节是协议细节。日常使用只要把下面这一条 URL 填进客户端即可,其余步骤(资源元数据发现、 动态客户端注册、PKCE)由客户端自动完成,不需要手工配置任何 client_id 或授权地址:

https://global.powpow.online/api/mcp

11.1 Claude(网页版 / 桌面版)

  1. 打开 设置 → 连接器 → 添加自定义连接器
  2. 名称填 PowPow,URL 填上面那条端点
  3. 点「连接」,浏览器会跳到 PowPow 授权页,用 PowPow 账号登录并确认授权

11.2 Claude Code

claude mcp add --transport http powpop https://global.powpow.online/api/mcp

11.3 Cursor

写入项目级 .cursor/mcp.json 或全局 ~/.cursor/mcp.json:

{
  "mcpServers": {
    "powpop": {
      "url": "https://global.powpow.online/api/mcp"
    }
  }
}

11.4 VS Code(Copilot Chat)

写入 .vscode/mcp.json:

{
  "servers": {
    "powpop": {
      "type": "http",
      "url": "https://global.powpow.online/api/mcp"
    }
  }
}

11.5 ChatGPT

  1. 打开 chatgpt.com/plugins,点加号 → Add custom MCP server
  2. 填写名称与描述;Connection 选公开端点,URL 填上面那条端点
  3. Authentication 选 OAuth,确认风险提示后选择 Create as a plugin
  4. 新开一个对话,输入 @ 选中该插件即可调用
三个常见卡点:

English summary

PowPow is a Chinese location-based social app (posts pinned to places, conversational AI characters called "digital humans", offline check-in campaigns). This document describes its MCP server: