Social Network Fetch Skill
通过 Social MCP(social-all)获取网络/社媒公开数据的 WorkBuddy Skill。 用户无需安装 MCP 连接器——Skill 内置迷你 MCP 客户端脚本,直连数据服务。
目录结构
social-network-skill/
├── SKILL.md # 技能定义与调用指令(上架/安装的主文件)
├── scripts/
│ └── social_mcp_client.py # 内置迷你 MCP 客户端(纯标准库,零依赖)
├── mcp-servers.json # (可选)连接器方式的 MCP 配置,供参考
└── README.md # 本说明
为什么能做到「免安装 MCP」
WorkBuddy 的 MCP server 属于连接器层,必须由用户在连接器管理里显式授权 才能被 Agent 调用——这是平台的安全模型:不允许任何 Skill 在用户不知情时 静默连接远程服务器。所以「Skill 包内自动注册/激活 MCP」这条路在平台层面 走不通。
但 Social 的 MCP 端点本质是 HTTP + JSON-RPC(streamable HTTP 协议), 因此把「MCP 客户端」写进 Skill 的 scripts 里即可绕过连接器依赖: Agent 直接运行脚本,脚本向 MCP 端点发请求拿数据。用户装完 Skill 就能用, 全程不需要碰连接器管理页。
鉴权与配额链路
WorkBuddy 用户触发 Skill
│
▼
Agent 调用 connect_open_platform(skill_id) ──► 返回 op_xxx 短时效令牌
│
▼
Agent 运行 scripts/social_mcp_client.py --user-token op_xxx
│
▼
脚本直连 Social MCP 端点(JSON-RPC over HTTP)
│
▼
Social 服务端对 op_xxx 做开放平台内省(introspection)
│
▼
取得稳定用户身份标识 → 按用户累计数据量(上限 10 万条)→ 放行/拒绝
要点:
op_xxx令牌短时效、每次调用重新获取,不缓存、不外显;- 服务端拿令牌内省得到的稳定身份标识才是配额主键,跨 session 识别同一用户;
- 配额超额时返回
QUOTA_EXCEEDED/429,SKILL.md 已定义对用户的告知措辞。
用户需要配置什么
用户只需要一个 SOCIAL_API_KEY(数据服务方签发),二选一:
- 设置环境变量
SOCIAL_API_KEY;或 - 调用时由 Agent 通过
--api-key参数传入(SKILL.md 已写明缺省时读环境变量)。
其余全部自动:Skill 安装 → 用户触发 → Agent 拿令牌 → 脚本取数 → 返回结果。
上架前必读(安全)
- 不要硬编码静态密钥:Skill 包会分发到每个用户机器上,包内任何
字符串都可被提取。
scripts/social_mcp_client.py默认api_key为空,mcp-servers.json中的Authorization是占位符——两者都不得填入真实 Key。 - 如果数据服务方支持按用户签发 API Key:每个用户拿自己的 Key,配额、 审计都天然对得上,是最佳形态;
- 如果必须共享一个网关 Key:任何安装者提取后即可绕过 WorkBuddy 直接
刷接口,配额/计费/审计全部失效——上架前请与数据方确认替代方案
(例如改用
op_令牌做用户级鉴权)。 - 上架前的安全扫描会拦截硬编码密钥,占位符方案可顺利过审。
待确认事项
social-all暴露的工具列表,以及服务端是否按user_token字段接收op_令牌(若不支持,需与 Social 服务端约定携带位置, 修改脚本call_tool()中的字段名即可);- 开放平台令牌内省接口的正式端点与返回字段, 以 WorkBuddy 开放平台入驻后提供的开发者文档为准。
本地验证方法
# 1. 列出工具(先配置 SOCIAL_API_KEY)
SOCIAL_API_KEY=your_key python3 scripts/social_mcp_client.py --list-tools
# 2. 调用工具(--user-token 用 connect_open_platform 拿到的 op_ 令牌)
SOCIAL_API_KEY=your_key python3 scripts/social_mcp_client.py \
--tool <工具名> --args '{"keyword": "测试"}' --user-token op_xxx
Scan to join WeChat group