关于 HasData Facebook
HasData Facebook 是面向 MCP 客户端的托管只读服务,用于查询公开 Facebook 页面或个人资料。它返回页面信息及帖子动态,包括互动数据,并以结构化 JSON 提供。
主要功能
- 01按用户名或 ID 查询公开页面
- 02获取页面资料和联系信息
- 03读取帖子及互动数据
- 04通过分页令牌继续读取动态
适用场景
- 01查看品牌页面的点赞数和资料
- 02提取公开页面的联系方式
- 03比较帖子获得的互动
- 04继续浏览页面的历史帖子
MCP 相关
托管远程服务向 MCP 客户端提供一个只读工具,用于查询公开页面或个人资料及其动态;还提供语言取值资源。私密账号和群组不在支持范围内。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.hasdata.com/mcp?apis=facebookclaude mcp add --transport http com-hasdata-facebook https://mcp.hasdata.com/mcp?apis=facebook{"mcpServers":{"com-hasdata-facebook":{"type":"http","url":"https://mcp.hasdata.com/mcp?apis=facebook"}}}在 Cursor 中打开{"servers":{"com-hasdata-facebook":{"type":"http","url":"https://mcp.hasdata.com/mcp?apis=facebook"}}}在 VS Code 中打开{"mcpServers":{"com-hasdata-facebook":{"type":"http","url":"https://mcp.hasdata.com/mcp?apis=facebook"}}}{"mcpServers":{"com-hasdata-facebook":{"serverUrl":"https://mcp.hasdata.com/mcp?apis=facebook"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://mcp.hasdata.com/mcp?apis=facebook需要授权工具
2| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pets | number | 否 | 宠物数量。 |
| neLat | number | 否 | 地图边界框东北角的纬度。提供全部四个边界框坐标后,将在框内搜索房源,而不是按位置搜索。 |
| neLng | number | 否 | 地图边界框东北角的经度。 |
| swLat | number | 否 | 地图边界框西南角的纬度。 |
| swLng | number | 否 | 地图边界框西南角的经度。 |
| adults | number | 否 | 成人数量。 |
| checkIn | string | 是 | 房源的入住日期。 |
| infants | number | 否 | 婴幼儿数量。 |
| checkOut | string | 否 | 房源的退房日期。 |
| children | number | 否 | 子女数量。 |
| location | string | 否 | 用于搜索房源的地点。除非提供完整地图边界框(neLat、neLng、swLat、swLng),否则必填。 |
| nextPageToken | string | 否 | 用于获取下一页结果的令牌。 |
详细介绍
Facebook MCP 服务
托管的模型上下文协议(MCP)服务,为 Claude、Cursor、Windsurf 和其他任何 MCP 客户端提供一个只读的 Facebook 工具。按账号名称查找公开主页或个人资料,获取包含准确点赞数、联系方式和所有者的主页记录,以及包含心情回应、评论和分享的帖子动态,所有内容均以结构化 JSON 提供,无需 Meta 开发者应用,也无需自行托管。
它读取已退出登录的访客可以查看的公开 Facebook 主页。群组和私人个人账号不在支持范围内。
每月赠送 1,000 个免费额度,无需信用卡,按每次调用 10 个额度计算,可调用 Facebook 100 次。
https://mcp.hasdata.com/mcp?apis=facebook
目录
所需条件
一个 MCP 客户端,以及从控制面板获取的 HasData API 密钥;免费创建,无需信用卡。免费套餐按每次调用 10 个额度计算,每月约可调用 100 次。这是一个远程服务,因此最简单的接入方式是使用 URL 和 x-api-key 标头,无需运行容器。仅支持 stdio 的客户端可通过一个轻量启动器连接该服务。启动器已发布到 npm,名称为 @hasdata/facebook-mcp,也发布到 PyPI,名称为 hasdata-facebook-mcp,如下所示。
快速开始
所有客户端使用相同的服务器 URL。我们已在 Claude Code 和 Claude Desktop 中进行实际运行。其他代码块则遵循各客户端为远程服务提供的文档格式。
| 字段 | 值 |
|---|---|
| URL | https://mcp.hasdata.com/mcp?apis=facebook |
| 传输方式 | HTTP,可流式传输 |
| 身份验证标头 | x-api-key: HASDATA_API_KEY |
支持 OAuth 的客户端可以将同一个 URL 添加为连接器,然后登录,无需将密钥写入配置文件。
Claude Code
claude mcp add --transport http facebook "https://mcp.hasdata.com/mcp?apis=facebook" \
--header "x-api-key: HASDATA_API_KEY"
Claude Desktop
依次选择 Settings、Connectors、Add custom connector,然后粘贴 https://mcp.hasdata.com/mcp?apis=facebook 并登录。
如果采用配置文件方式,Claude Desktop 只会加载本地(stdio)服务,因此需要通过 stdio 启动器连接远程服务。@hasdata/facebook-mcp 包就是这个启动器,它会从环境中读取密钥。将以下内容添加到 claude_desktop_config.json:
{
"mcpServers": {
"facebook": {
"command": "npx",
"args": ["-y", "@hasdata/facebook-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}
如果使用 Python 而不是 Node,可将启动器替换为 PyPI 包,uvx 无需手动安装即可运行该包:
{
"mcpServers": {
"facebook": {
"command": "uvx",
"args": ["hasdata-facebook-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}
Cursor
所有项目使用 ~/.cursor/mcp.json,单个项目使用 .cursor/mcp.json:
{
"mcpServers": {
"facebook": {
"url": "https://mcp.hasdata.com/mcp?apis=facebook",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json。Windsurf 将此字段称为 serverUrl,而不是 url:
{
"mcpServers": {
"facebook": {
"serverUrl": "https://mcp.hasdata.com/mcp?apis=facebook",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
VS Code
工作区中的 .vscode/mcp.json:
{
"servers": {
"facebook": {
"type": "http",
"url": "https://mcp.hasdata.com/mcp?apis=facebook",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
示例提示词
- Nike 专页有多少人点赞?本周有多少人在讨论它?
- 提取这个 Facebook 专页的联系方式和已确认的所有者。
- 阅读此专页最近的十条帖子,并告诉我哪条分享次数最多。
- 比较这个品牌的帖子与其竞争对手帖子的回应类型分布。
- 这个 Facebook 专页是否已验证?它列出的类别是什么?
- 从月初开始查看此专页的动态,并列出带视频的帖子。
一次调用会返回专页记录和最新帖子。遍历动态时,每三条帖子需要再调用一次,并使用上一次响应返回的令牌。
工具
| 工具 | 返回内容 |
|---|---|
hasdata_facebook_profile_getFacebookProfile | 根据句柄(用户名、@用户名或数字个人资料 ID)获取公开的 Facebook 专页或个人资料,并返回专页 ID、名称、用户名、类别、简介、精确点赞数及……每次调用消耗 10 个额度 |
一个工具,每次成功调用消耗 10 个额度。
获取 Facebook 个人资料
hasdata_facebook_profile_getFacebookProfile
公开专页或个人资料及其动态。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
handle | string | 是 | 用户名,可带或不带 @;也可以是 profile.php?id=… URL 中的数字 ID |
language | string | 专页呈现所用的语言,共 32 种代码,例如 en、de、pt 或 zh-hans | |
nextPageToken | string | 上一次响应返回的游标,用于读取接下来的三条帖子 |
首次调用会返回四个部分。profile 是专页记录,posts 包含最新帖子,photos 是近期图片列表,pagination 则包含 postsPerPage、nextPage 和用于继续读取的 nextPageToken。
每次携带令牌的调用只返回 posts 和 pagination,每次三条帖子;动态结束后会返回一个新令牌,之后令牌便不再出现。
{
"profile": {
"id": "100044541544829",
"pageId": "15087023444",
"name": "Nike",
"username": "nike",
"url": "https://www.facebook.com/nike",
"category": "Sportswear Store",
"biography": "Just Do It.",
"likesCount": 39545204,
"talkingAboutCount": 173971,
"checkInsCount": 18299,
"followersCount": "39M followers",
"followingCount": "24 following",
"verified": true,
"website": "nike.com",
"websiteUrl": "http://nike.com/",
"phone": "+48 58 881 27 61",
"owner": { "name": "NIKE, Inc.", "isConfirmed": true },
"profilePicUrl": "https://scontent.fmex5-1.fna.fbcdn.net/v/t39.30808-1/284964043_10159903868513445_7696353984967674128_n.jpg",
"coverPhotoUrl": "https://scontent.fmex25-1.fna.fbcdn.net/v/t39.30808-6/285211224_10159903868008445_5477337468887983165_n.png"
},
"posts": [
{
"id": "1393461115481927",
"url": "https://www.facebook.com/reel/2166091230582141/",
"text": "Leave your limits at the surface. #JustDoIt",
"hashtags": ["#JustDoIt"],
"timestamp": "2025-09-15T16:01:59.000Z",
"reactionsCount": 7885,
"commentsCount": 2461,
"sharesCount": 1124,
"reactions": [{ "type": "Like", "count": 6491 }],
"media": [{ "id": "2166091230582141", "type": "Video" }]
}
],
"photos": [{ "id": "1095811278580247", "type": "Photo", "image": "https://scontent.fmex22-1.fna.fbcdn.net/v/t39.30808-6/471313661_18515827156020081_2460706748949541958_n.jpg" }],
"pagination": { "postsPerPage": 3, "nextPage": 2, "nextPageToken": "eyJjdXJzb3IiOiJDZzhPYjNKbllXNXBZMTlqZFhKemIzS…" }
}
提示词和资源
该服务公开了一个资源,其中包含唯一参数所接受的固定值列表。读取它比从失败的调用中摸索词汇更省事,而且不消耗额度。
| 参数 | 值 | 用途 |
|---|---|---|
language | 32 | 页面呈现所用的语言。Facebook 会根据请求所用的语言提供页面,因此此参数会改变本地化字符串(followersCount、followingCount、category),而精确数值(likesCount、talkingAboutCount)在任何语言中都保持为数字。 |
其 URI 为 hasdata://facebook/language。
无需 API 密钥即可获取此列表,因此客户端可以在用户注册之前读取它。
错误和失败路径
请为以下情况做好准备,不要假设一切都会顺利。
其中三个计数是数字,另外两个是字符串,这不是错误。 likesCount、talkingAboutCount 和 checkInsCount 是 Facebook 发布的精确数值。followersCount 和 followingCount 则是页面显示的经过取整的本地化文本,英文为 "39M followers",当 language 为 de 时为 "39 Mio. Follower"。进行比较时使用数字,显示时使用字符串。
language 会改变字符串,不会改变数字。 category 在 de 下会从 Sportswear Store 变为 Sportbekleidungsgeschäft,而 likesCount 仍是数字。应根据读者选择语言,而不是根据计算选择语言。
不存在、已删除或不公开的页面仍会返回 200。 此时响应中会包含 error 而非 profile,且调用会计费。读取前请先检查 profile。群组和私人个人账户也会出现这种情况。
动态消息的第一页只有一篇帖子,而不是三篇。 postsPerPage 的值为 3,第二页及之后确实会返回三篇,但初始响应中只有最新的一篇帖子,同时还会返回个人资料和照片。请按实际收到的数量计数,而不是按字段承诺的数量计数。
后续页面不会返回 profile 和 photos。 使用 nextPageToken 发起的调用只会返回 posts 和 pagination。请保留首次响应中的个人资料,不要期待后续响应再次返回它。
只有令牌能用于继续翻页。 nextPage 是供你自行记录的页码,没有参数可以接收它。请原样传入上一次的 nextPageToken,并在响应中不再包含该令牌时停止。
联系信息反映的是页面向请求方显示的内容,而非规范记录。 全球品牌页面可能会显示地区电话号码;website 是显示文本,websiteUrl 才是链接。将所有者姓名视为已验证之前,请先读取 owner.isConfirmed。
图片 URL 是带有签名参数的 Facebook CDN 链接。 它们会过期。请及时获取所需图片,并存储文件,而非 URL。
包含数据的结果也会包含 requestMetadata.id,需要联系支持时值得引用。
定价、免费套餐和限制
Facebook 工具每次成功调用收费 10 个积分。响应大小不会影响价格,Feed 的每一页与首次调用价格相同,因此读取 30 篇帖子需要一次调用,再加上另外 10 次调用。
免费套餐每月提供 1,000 个积分,无需信用卡,按基础费率可调用 Facebook 100 次。积分会随计费周期续期,因此低调用量的 Agent 可以无限期使用免费套餐。
付费套餐起价为每月 59 美元,包含 200,000 个积分,即 20,000 次调用。用量越大,单价越低:入门套餐每 1,000 次调用 2.95 美元,Basic 套餐为 1.19 美元,Growth 套餐各级别为 0.83 美元。最新价格请见定价页面。
套餐还决定并发数。免费套餐允许同时处理 1 个请求,Startup 为 5 个,Basic 为 15 个,Growth 各级别则为 50 到 500 个。对于无人值守的任务,遇到 429 错误时应使用退避策略重试,因为在你发现之前,负责补充页面列表信息的 Agent 就可能已经达到上限。
未返回 200 状态码的请求不会计费。成功调用但没有找到页面,仍算一次调用。
对比
Meta 的 Graph API 是获取页面数据的官方途径,适用于不同的场景。
| Meta Graph API | 此服务 | |
|---|---|---|
| 使用资格 | Meta 开发者应用、访问令牌,以及读取非自主管理页面所需的应用审核 | API 密钥 |
| 可读取的页面 | 可完整读取自己的页面;读取其他页面需要经审核的权限 | 任意公开页面或个人主页 |
| 设置 | 创建应用、配置权限、处理令牌、提交审核 | 一个请求头 |
| 帖子互动 | 可获取自主管理页面中各类型的计数 | 可获取任意公开页面中各类型的计数 |
| 数据语言 | 应用所用语言 | 每次调用可选择 32 种语言中的任意一种 |
| 费用 | 在速率限制内免费 | 超出免费套餐后收费,每次调用 10 个积分 |
决定性因素在于你可以读取哪些页面。对于你管理的页面,Graph API 是合适的工具;若要读取其他页面,则需要通过业务验证,并提交说明用途的审核,才能获得 Page Public Content Access 权限。如果页面属于你自己,请使用 Graph API,它免费且功能完整。
常见问题
有官方的 Facebook MCP 服务吗?
Meta 没有发布用于读取公开页面的 MCP 服务。此服务由 HasData 维护,用于读取 Facebook 公开页面。
什么是 Facebook MCP 服务?
MCP 服务会向 AI 客户端提供可调用的工具。此服务可将 Facebook 公开页面及其 Feed 转换为 JSON,供 Agent 分析,无需在技术栈中使用浏览器或抓取库。
我需要 Facebook 账号或 Meta 开发者应用吗?
不需要。唯一需要的凭证是你的 HasData 密钥。
可以读取个人主页或群组吗?
公开的个人主页与页面的读取方式相同。不支持私人账号和群组,这类请求会返回“不可用”错误。
可以传入数字 ID,而不是用户名吗?
可以。响应返回的 id 和 pageId 都会解析为 handle,因此通过名称访问过的页面之后可以用 ID 跟踪。
如何读取整个 Feed?
先使用 handle 调用一次,然后持续使用每个响应中的 nextPageToken 调用,直到响应中不再包含该字段。每个令牌会返回 3 篇帖子。
为什么 followersCount 是文本,而 likesCount 是数字?
因为 Facebook 就是这样发布这些数据的。页面上显示的点赞数和讨论人数是精确值,而粉丝数会经过取整和本地化处理。响应会按原样返回这两项数据。
可以将此服务与其他 HasData API 一起使用吗?
可以。一个密钥即可访问所有服务,所有服务都通过 apis 参数由同一端点提供。将客户端指向 ?apis=facebook,instagram,即可在一个连接中获取这两组工具;也可以访问完整目录:mcp.hasdata.com/mcp。
HasData 与 Meta 或 Facebook 有关联吗?
没有。HasData 是一项独立服务,与 Meta 无关联,也未获得 Meta 的认可或赞助。Facebook 是其各自所有者的商标。这些工具仅处理公开可用的数据,您有责任确保使用结果时遵守 Meta 的条款以及适用于您的法律。
合规与个人数据
企业主页记录属于企业记录,而公开的个人主页显然属于个人数据,其中包含姓名、照片、个人简介和公开动态。该工具不会区分这两者,因此您必须根据自己的用途加以区分。仅收集您的使用场景所需的信息,不要为与您毫无业务往来的个人建立档案,并在存储任何内容之前确认您在 GDPR、CCPA 和 Meta 条款下的义务。主页上的联系方式是为客户公开的,向这些联系方式发送营销信息则另受法规约束。
HasData 链接
- Facebook Profile API 文档,此工具背后的 REST 端点
- MCP 服务文档
- 定价
- 控制面板
其他 HasData MCP 服务:Instagram、TikTok、YouTube、Google Search、Google Images、Google Scholar、Google Maps、Google Trends、Google Flights、Bing、DuckDuckGo、Amazon、Walmart、Shopify、Yelp、Yellow Pages、Zillow、Redfin、Airbnb、Booking.com、Indeed、Glassdoor、Web Scraping。
开发
启动器只是连接远程服务的轻量级 stdio 桥接程序,因此无需构建。
npm install
HASDATA_API_KEY=your_key_here npm test
test/ 中的测试用于断言工具契约,即无需在此提交代码也可能发生变化的部分。这些测试会检查 ?apis=facebook 是否返回唯一预期的工具、工具名称是否未更改、是否仍要求提供 handle 且包含描述、language 是否仍提供本 README 列出的代码,以及实际使用的密钥是否确实可用。
其中一项测试会读取实时页面,并断言本 README 依赖的两点:likesCount 是数字而非显示文本,且会返回 pagination.nextPageToken,因为没有该令牌,就无法进行本 README 所述的动态内容遍历。此调用耗费 10 个额度点,这是为可能因合理原因失败的哨兵测试付出的代价。
契约测试套件也会按计划每周运行,因为上游工具列表可能在无人修改此仓库的情况下发生变化。
贡献
如果工具表、响应示例或文档描述的行为与实际不符,欢迎提交问题反馈。我们为此专门提供了模板。欢迎提交修复这些问题的拉取请求,也欢迎为启动器中的任何内容提交拉取请求。
许可证
MIT,详见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。