Facebook MCP Server

Páginas y perfiles públicos de Facebook con me gusta, seguidores, datos de contacto y publicaciones, en formato JSON.

Documentación

Facebook MCP Server

Un servidor de Protocolo de Contexto de Modelo (MCP) alojado que le brinda a Claude, Cursor, Windsurf y cualquier otro cliente MCP una herramienta de Facebook de solo lectura. Busque una página o perfil público por su identificador y obtenga el registro de la página con su número exacto de "Me gusta", datos de contacto y propietario, además del feed de publicaciones con reacciones, comentarios y compartidos, todo como JSON estructurado, sin necesidad de una aplicación de desarrollador de Meta ni de alojar nada.

Lee páginas públicas de Facebook que un visitante sin sesión puede ver. Los grupos y las cuentas personales privadas quedan fuera del alcance.

1,000 créditos gratis cada mes, sin necesidad de tarjeta, lo que equivale a 100 llamadas a Facebook a la tarifa de 10 créditos.

https://mcp.hasdata.com/api/mcp?apis=facebook

Glama score tool contract MCP Tools npm PyPI License

Contenido

Lo que necesitas

Un cliente MCP y una clave de API de HasData desde el panel de control, que se crea gratis sin tarjeta, y el nivel gratuito cubre unas 100 llamadas al mes a la tarifa de 10 créditos. Este es un servidor remoto, así que la ruta más sencilla es una URL y un encabezado x-api-key, sin contenedor que ejecutar. Un cliente que solo hable stdio llega a través de un lanzador ligero, publicado como @hasdata/facebook-mcp en npm y hasdata-facebook-mcp en PyPI, como se muestra a continuación.

Inicio rápido

La URL del servidor es la misma para todos los clientes. Lo probamos de forma práctica en Claude Code y Claude Desktop. Los demás bloques siguen el formato documentado de cada cliente para un servidor remoto.

CampoValor
URLhttps://mcp.hasdata.com/api/mcp?apis=facebook
TransporteHTTP, transmisible
Encabezado de autenticaciónx-api-key: HASDATA_API_KEY

Los clientes con soporte OAuth pueden añadir la misma URL como conector e iniciar sesión sin poner una clave en un archivo de configuración.

Claude Code
claude mcp add --transport http facebook "https://mcp.hasdata.com/api/mcp?apis=facebook" \
  --header "x-api-key: HASDATA_API_KEY"
Claude Desktop

Configuración, luego Conectores, luego Añadir conector personalizado, y luego pega https://mcp.hasdata.com/api/mcp?apis=facebook e inicia sesión.

Para la ruta de archivo de configuración, Claude Desktop solo carga servidores locales (stdio), por lo que llega a un servidor remoto a través de un lanzador stdio. El paquete @hasdata/facebook-mcp es ese lanzador, y lee la clave del entorno. Añade esto a claude_desktop_config.json:

{
  "mcpServers": {
    "facebook": {
      "command": "npx",
      "args": ["-y", "@hasdata/facebook-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

Para Python en lugar de Node, cambia el lanzador por el paquete de PyPI, que uvx ejecuta sin instalación manual:

{
  "mcpServers": {
    "facebook": {
      "command": "uvx",
      "args": ["hasdata-facebook-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}
Cursor

~/.cursor/mcp.json para cada proyecto, o .cursor/mcp.json para uno solo:

{
  "mcpServers": {
    "facebook": {
      "url": "https://mcp.hasdata.com/api/mcp?apis=facebook",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
Windsurf

~/.codeium/windsurf/mcp_config.json. Windsurf llama al campo serverUrl, no url:

{
  "mcpServers": {
    "facebook": {
      "serverUrl": "https://mcp.hasdata.com/api/mcp?apis=facebook",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
VS Code

.vscode/mcp.json en el espacio de trabajo:

{
  "servers": {
    "facebook": {
      "type": "http",
      "url": "https://mcp.hasdata.com/api/mcp?apis=facebook",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

Ejemplos de indicaciones

  • ¿A cuántas personas les gusta la página de Nike, y cuántas están hablando de ella esta semana?
  • Obtén los datos de contacto y el propietario confirmado de esta página de Facebook.
  • Lee las últimas diez publicaciones de esta página y dime cuál recibió más compartidos.
  • Compara la mezcla de reacciones en las publicaciones de esta marca con las de su competidor.
  • ¿Está verificada esta página de Facebook y qué categoría lista?
  • Recorre el feed de esta página hasta el inicio del mes y lista las publicaciones con video.

Una llamada devuelve el registro de la página y la publicación más reciente. Recorrer el feed requiere una llamada más por cada tres publicaciones, usando el token que devuelve la respuesta anterior.

Herramientas

Una herramienta, 10 créditos por llamada exitosa.

Obtener perfil de Facebook

hasdata_facebook_profile_getFacebookProfile

Una página o perfil público, con su feed.

HerramientaCréditosQué devuelve
hasdata_facebook_profile_getFacebookProfile10El registro de la página con "Me gusta", seguidores, datos de contacto y propietario, la publicación más reciente, la tira de fotos y un token para las siguientes tres publicaciones
ParámetroTipoObligatorioNotas
handlestringEl nombre de usuario, con o sin @, o el id numérico de una URL de profile.php?id=…
languagestringIdioma en el que se renderiza la página, uno de 32 códigos como en, de, pt o zh-hans
nextPageTokenstringCursor de la respuesta anterior, para leer las siguientes tres publicaciones

La primera llamada devuelve cuatro bloques. profile es el registro de la página, posts contiene la publicación más reciente, photos es la tira de imágenes recientes y pagination lleva postsPerPage, nextPage y el nextPageToken para continuar.

Cada llamada hecha con un token devuelve solo posts y pagination, tres publicaciones a la vez, con un token nuevo hasta que el feed termina y el token desaparece.

{
  "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…" }
}

Errores y rutas de fallo

Planifica estos casos en lugar de asumir un camino sin problemas.

Tres de los conteos son números y dos son cadenas, y eso no es un error. likesCount, talkingAboutCount y checkInsCount son las cifras exactas que publica Facebook. followersCount y followingCount llegan como el texto redondeado y localizado que muestra la página, "39M followers" en inglés y "39 Mio. Follower" cuando language es de. Compara con los números, muestra las cadenas.

language cambia las cadenas, no los números. category pasó de Sportswear Store a Sportbekleidungsgeschäft bajo de, mientras que likesCount siguió siendo un número. Elige el idioma para el lector, no para las matemáticas.

Una página que no existe, fue eliminada o no es pública igual responde 200. La respuesta entonces lleva error en lugar de profile, y la llamada se factura. Comprueba profile antes de leerlo. Los grupos y las cuentas personales privadas también caen aquí.

La primera página del feed contiene una publicación, no tres. postsPerPage dice 3, y las páginas siguientes sí devuelven tres, pero la respuesta inicial lleva solo la publicación más reciente junto con el perfil y las fotos. Cuenta lo que recibiste en lugar de lo que promete el campo.

Las páginas posteriores omiten profile y photos. Una llamada hecha con nextPageToken devuelve solo posts y pagination. Conserva el perfil de la primera respuesta en lugar de esperar que aparezca de nuevo.

El token es la única forma de avanzar. nextPage es un número de página para tu propio registro, y no hay ningún parámetro que lo acepte. Pasa el nextPageToken anterior sin cambios y detente cuando una respuesta llegue sin uno.

Los datos de contacto son lo que la página muestra a la solicitud, no un registro canónico. Una página de marca global puede mostrar un número de teléfono regional, y website es el texto mostrado mientras que websiteUrl es el enlace. Lee owner.isConfirmed antes de tratar el nombre del propietario como verificado.

Las URL de imágenes son enlaces de CDN de Facebook con parámetros firmados. Caducan. Obtén lo que necesites con prontitud y guarda el archivo, no la URL.

Los resultados que contienen datos también llevan un requestMetadata.id que vale la pena citar en soporte.

Precios, nivel gratuito y límites

La herramienta de Facebook cuesta 10 créditos por llamada exitosa. El tamaño de la respuesta no cambia el precio, y una página del feed cuesta lo mismo que la llamada inicial, así que una lectura de treinta publicaciones es una llamada más diez adicionales.

El nivel gratuito es 1,000 créditos cada mes sin tarjeta, lo que equivale a 100 llamadas a Facebook a la tarifa base. Se renueva con el ciclo de facturación, así que un agente de bajo volumen funciona con el nivel gratuito indefinidamente.

Los planes de pago comienzan en $49 al mes por 200,000 créditos, lo que equivale a 20,000 llamadas. El precio unitario baja con el volumen, desde $2.45 por 1,000 llamadas en el plan inicial hasta $1.00 en Business, $0.84 en Growth y $0.74 en los planes de alto volumen más grandes.

Tu plan también establece la concurrencia. El nivel gratuito permite 1 solicitud a la vez, Startup 15, Business 30, Growth 50, y los planes de alto volumen van de 200 a 1,500. Reintenta con el 429 con un retroceso en cualquier proceso desatendido, porque un agente que enriquece una lista de páginas llegará al techo antes que tú.

Una solicitud que devuelve un código distinto de 200 no se factura. Una llamada exitosa que no encuentra una página sigue siendo una llamada.

Cómo se compara

La API Graph de Meta es la ruta oficial a los datos de página, y está construida para una situación diferente.

API Graph de MetaEste servidor
ElegibilidadUna aplicación de desarrollador de Meta, un token de acceso y revisión de la aplicación para páginas que no administrasUna clave de API
Páginas que puedes leerTus propias páginas en su totalidad, las demás solo con permisos revisadosCualquier página o perfil público
ConfiguraciónCreación de la aplicación, permisos, manejo de tokens, revisiónUn encabezado
Reacciones a publicacionesConteos por tipo en páginas que administrasConteos por tipo en cualquier página pública
Idioma del registroLa configuración regional de tu aplicaciónCualquiera de los 32, por llamada
CostoGratis dentro de los límites de tarifaDe pago más allá del nivel gratuito, 10 créditos por llamada

La fila que lo decide es qué páginas puedes leer. La API Graph es la herramienta adecuada para las páginas que administras, y su permiso de Acceso a Contenido Público de Página para todo lo demás requiere una verificación empresarial y una revisión con un caso de uso declarado. Cuando la página es tuya, usa la API Graph, es gratis y completa.

Preguntas frecuentes

¿Existe un servidor MCP oficial de Facebook?

Meta no publica uno para leer páginas públicas. Este está mantenido por HasData y lee páginas públicas de Facebook.

¿Qué es un servidor MCP de Facebook?

Un servidor MCP expone herramientas que un cliente de IA puede llamar. Este convierte una página pública de Facebook y su feed en JSON sobre el que un agente puede razonar, sin un navegador ni una biblioteca de scraping en tu stack.

¿Necesito una cuenta de Facebook o una aplicación de desarrollador de Meta?

No. La única credencial es tu clave de HasData.

¿Puedo leer un perfil personal o un grupo?

Un perfil personal público funciona igual que una página. Las cuentas privadas y los grupos no son compatibles y devuelven el error de no disponible.

¿Puedo pasar un id numérico en lugar de un nombre de usuario?

Sí. Tanto el id como el pageId que devuelve una respuesta se resuelven como handle, así que una página alcanzada una vez por nombre se puede rastrear por id después.

¿Cómo leo todo el feed?

Llama una vez con el identificador y luego sigue llamando con el nextPageToken de cada respuesta hasta que llegue una sin él. Vuelven tres publicaciones por token.

¿Por qué followersCount es texto mientras que likesCount es un número?

Porque así es como los publica Facebook. El conteo de "Me gusta" y el conteo de "hablando de esto" son exactos en la página, y el conteo de seguidores se muestra redondeado y localizado. La respuesta pasa ambos tal como están.

¿Puedo usar esto junto con otras APIs de HasData?

Sí. Una clave cubre todo, y un endpoint sirve a todos a través del parámetro apis. Apunta un cliente a ?apis=facebook,instagram para obtener ambos conjuntos de herramientas en una conexión, o a mcp.hasdata.com/api/mcp para el catálogo completo.

¿HasData está afiliado a Meta o Facebook?

No. HasData es un servicio independiente y no está afiliado, respaldado ni patrocinado por Meta. Facebook es una marca comercial de su respectivo propietario. Las herramientas funcionan únicamente con datos disponibles públicamente, y usted es responsable de utilizar los resultados de acuerdo con los términos de Meta y la ley que le sea aplicable.

Cumplimiento y datos personales

Un registro de página para una empresa es un registro comercial, y un perfil personal público es un dato personal en el sentido más estricto, con un nombre, una foto, una biografía y un feed público. La herramienta no distingue entre ambos, por lo que su propósito debe hacerlo. Limítese a lo que su caso de uso necesita, no cree perfiles de individuos con los que no tenga relación comercial y verifique sus obligaciones bajo el GDPR, la CCPA y los términos de Meta antes de almacenar cualquier cosa. Los datos de contacto en una página se publican para los clientes, y el marketing hacia ellos está regulado por separado.

Enlaces de HasData

Otros servidores MCP de HasData: 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.

Desarrollo

El lanzador es un puente delgado de stdio hacia el servidor remoto, por lo que no hay nada que compilar.

npm install
HASDATA_API_KEY=your_key_here npm test

Las pruebas en test/ verifican el contrato de la herramienta, la parte que puede romperse sin un commit aquí. Comprueban que ?apis=facebook devuelve la única herramienta esperada, que su nombre no ha cambiado, que todavía requiere handle y lleva una descripción, que language sigue ofreciendo los códigos que este README menciona, y que la clave en uso es realmente aceptada.

Una prueba lee una página en vivo y verifica las dos cosas en las que se apoya este README: que likesCount es un número en lugar de texto mostrado, y que pagination.nextPageToken llega, porque sin el token, el recorrido del feed que este README documenta no existe. Esa llamada cuesta 10 créditos, que es el precio de un canario que puede fallar por la razón correcta.

El conjunto de pruebas del contrato también se ejecuta semanalmente según un cronograma, porque la lista de herramientas ascendentes puede cambiar sin que nadie toque este repositorio.

Contribuciones

Una tabla de herramientas, una muestra de respuesta o un comportamiento documentado que no coincida con la realidad merece un issue. Hay una plantilla exactamente para eso. Las solicitudes de extracción son bienvenidas para lo mismo y para cualquier cosa en el lanzador.

Licencia

MIT, consulte LICENSE.