Public Facebook pages and profiles with likes, followers, contact details and posts, as JSON.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent — or use 1-click editor setup below.
One-click editor setup isn’t available for this listing yet — we don’t have a confirmed install command, and we’d rather show nothing than point your editor at the wrong package or host. Follow the project’s own setup instructions, linked above.
A hosted Model Context Protocol (MCP) server that gives Claude, Cursor, Windsurf and any other MCP client one read-only Facebook tool. Look up a public page or profile by its handle and get the page record with its exact like count, contact details and owner, plus the post feed with reactions, comments and shares, all as structured JSON, with no Meta developer app and nothing to host.
It reads public Facebook pages that a signed-out visitor can see. Groups and private personal accounts are out of scope.
1,000 free credits every month, no card required, which is 100 Facebook calls at the 10-credit rate.
An MCP client and a HasData API key from the dashboard, free to create with no card, and the free tier covers about 100 calls a month at the 10-credit rate. This is a remote server, so the simplest path is a URL and an x-api-key header, with no container to run. A client that only speaks stdio reaches it through a thin launcher, published as @hasdata/facebook-mcp on npm and hasdata-facebook-mcp on PyPI, shown below.
The server URL is the same for every client. We run it hands-on in Claude Code and Claude Desktop. The other blocks follow each client's own documented format for a remote server.
| Field | Value |
|---|---|
| URL | https://mcp.hasdata.com/mcp?apis=facebook |
| Transport | HTTP, streamable |
| Auth header | x-api-key: HASDATA_API_KEY |
Clients with OAuth support can add the same URL as a connector and sign in without putting a key in a config file.
Settings, then Connectors, then Add custom connector, then paste https://mcp.hasdata.com/mcp?apis=facebook and sign in.
For the config-file route, Claude Desktop loads only local (stdio) servers, so it reaches a remote server through a stdio launcher. The @hasdata/facebook-mcp package is that launcher, and it reads the key from the environment. Add this to claude_desktop_config.json:
For Python instead of Node, swap the launcher for the PyPI package, which uvx runs without a manual install:
~/.cursor/mcp.json for every project, or .cursor/mcp.json for one:
~/.codeium/windsurf/mcp_config.json. Windsurf calls the field serverUrl, not url:
.vscode/mcp.json in the workspace:
One call returns the page record and the newest post. Walking the feed takes one more call per three posts, using the token the previous response returns.
| Tool | What it returns |
|---|---|
hasdata_facebook_profile_getFacebookProfile | Fetches a public Facebook page or profile by handle (username, @username or numeric profile id) and returns page id, name, username, category, bio, exact likes and…. 10 credits a call |
One tool, 10 credits per successful call.
hasdata_facebook_profile_getFacebookProfile
A public page or profile, with its feed.
| Parameter | Type | Required | Notes |
|---|---|---|---|
handle | string | yes | The username, with or without @, or the numeric id from a profile.php?id=… URL |
language | string | Language the page is rendered in, one of 32 codes such as en, de, pt or zh-hans | |
nextPageToken | string | Cursor from the previous response, to read the next three posts |
The first call returns four blocks. profile is the page record, posts holds the newest post, photos is the strip of recent images, and pagination carries postsPerPage, nextPage and the nextPageToken to continue with.
Every call made with a token returns posts and pagination only, three posts at a time, with a fresh token until the feed ends and the token disappears.
Plan for these rather than assuming a happy path.
Three of the counts are numbers and two are strings, and that is not a bug. likesCount, talkingAboutCount and checkInsCount are the exact figures Facebook publishes. followersCount and followingCount arrive as the rounded, localised text the page shows, "39M followers" in English and "39 Mio. Follower" when language is de. Compare with the numbers, display the strings.
language changes the strings, not the numbers. category moved from Sportswear Store to Sportbekleidungsgeschäft under de, while likesCount stayed a number. Pick the language for the reader, not for the maths.
A page that does not exist, was deleted or is not public still answers 200. The response then carries error instead of profile, and the call is billed. Test for profile before you read it. Groups and private personal accounts land here too.
No reviews yet — be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/hasdata-facebook)<a href="https://allmcps.com/mcp/hasdata-facebook"><img src="https://allmcps.com/api/badge/hasdata-facebook?style=directory" alt="HasData Facebook on AllMCPs" /></a>