Skip to main content
Glama
mambalabsdev

mcp-linkedin-post-engager-capture

LinkedIn Post Tracker and Comment Capture MCP Server

Smithery Glama score MCP Registry npm version npm downloads license mcpservers.org

MCP-Server für den Mamba Labs LinkedIn Post Tracker and Comment Capture Actor auf Apify.

Richten Sie es auf LinkedIn-Personenprofile oder Unternehmensseiten. Es gibt ihre letzten Beiträge als flache Zeilen zurück, mit den tatsächlichen Reaktions- und Kommentarzahlen für jeden, plus die Kommentatoren, die LinkedIn öffentlich zeigt. Keine Cookies, kein LinkedIn-Konto, keinerlei Anmeldedaten.

Installation

npx -y @mambalabsdev/mcp-linkedin-post-engager-capture

Claude Desktop

{
  "mcpServers": {
    "mamba-linkedin-post-engager-capture": {
      "command": "npx",
      "args": ["-y", "@mambalabsdev/mcp-linkedin-post-engager-capture"],
      "env": { "APIFY_TOKEN": "your-apify-token" }
    }
  }
}

Holen Sie sich einen Apify-Token unter console.apify.com/account/integrations.

Related MCP server: LinkedIn Data API MCP Server

Werkzeug

capture_linkedin_posts_and_commenters

LinkedIn-Profile und Unternehmensseiten als Eingabe, ihre letzten Beiträge und öffentlichen Kommentatoren als Ausgabe.

Eingabe

Typ

Erforderlich

Hinweise

profile_urls

array

nein

Personenprofile, zum Beispiel https://www.linkedin.com/in/williamhgates. Ländersubdomains sind in Ordnung. Geben Sie dies, company_urls oder beides an.

company_urls

array

nein

Unternehmensseiten, zum Beispiel https://www.linkedin.com/company/microsoft. Geben Sie dies, profile_urls oder beides an.

posted_since

string

nein

ISO-Datum, zum Beispiel 2026-08-01. Beiträge, die älter sind, werden übersprungen, bevor etwas berechnet wird.

collect_commenters

boolean

nein

Eine Zeile pro öffentlichem Kommentator. Deaktivieren Sie diese Option, um nur Beiträge zu sammeln. Standard true.

collect_reactors

boolean

nein

Gibt unabhängig von Ihrer Einstellung keine Reaktionszeilen zurück, da LinkedIn einem abgemeldeten Besucher keine Reaktionsidentitäten liefert. Vorhanden, damit die Grenze sichtbar statt still ist. Standard true.

max_engagers_per_post

integer

nein

0 bis 100. Zehn ist LinkedIns eigene Obergrenze für einen abgemeldeten Besucher, daher bewirkt eine Erhöhung über 10 nichts. Setzen Sie es auf 0, um nur für Beiträge zu zahlen. Standard 10.

use_residential_proxy

boolean

nein

Standardmäßig deaktiviert, was die Preisgestaltung annimmt. Apify berechnet Residential-Bandbreite zusätzlich zu den Ereignissen dieses Actors. Standard false.

Es ist nichts erforderlich. Ein Aufruf ohne eine der URL-Listen wird als no_input-Hinweiszeile zurückgegeben, nicht als Fehler, was den Actor exakt widerspiegelt.

Auslesen der Ausgabe

Ein Datensatz enthält drei Zeilentypen, die sich durch row_type unterscheiden. Filtern Sie danach, bevor Sie eine Tabelle laden.

  • post ist eine Zeile pro LinkedIn-Beitrag.

  • engager ist eine Zeile pro öffentlichem Kommentator, verbunden mit dem Beitrag über post_id.

  • notice ist eine Nachricht auf Ausführungs- oder Quellenebene.

post_id ist der numerische Teil der Activity-URN von LinkedIn. Er ist über Ausführungen, Ländersubdomains und beide Permalink-Schreibweisen hinweg stabil, daher ist er als Primärschlüssel und als Prüfung „Habe ich das bereits an Slack gepostet?" sicher.

Die Kommentatorgrenzen sind real und nicht klein. LinkedIn rendert etwa zehn Top-Level-Kommentare für einen abgemeldeten Besucher, unabhängig von der tatsächlichen Gesamtzahl. Die gemessene Abdeckung über den gesamten Lauf betrug 178 Kommentatoren von 4.857 vorhandenen, also 3,7 Prozent. Etwa 30 Prozent der Kommentarzeilen tragen keinen Zeitstempel. Jede Beitragszeile enthält commenters_collected neben commenters_available, sodass die Abdeckung für einen bestimmten Beitrag eine Zahl ist, die Sie lesen können, und nicht etwas, das Sie ableiten müssen.

Reaktionsidentitäten sind für einen abgemeldeten Besucher überhaupt nicht verfügbar. Jede Beitragszeile enthält weiterhin die tatsächliche reaction_count, und reactors_status sagt unavailable_without_login.

Jede Zeile enthält degraded und degradation_reason. false bedeutet, dass der Actor nachgesehen hat; null bei einem Feld bedeutet, dass er es nicht konnte. Filtern Sie nach degraded, bevor Sie einer Abwesenheit vertrauen. Zwei Dinge, die wie Fehler aussehen, sind bewusst nicht als degradiert markiert, weil beide Messungen sind: reactors_unavailable ist so, wie abgemeldetes LinkedIn funktioniert, und no_posts_found auf einer geladenen Seite ist eine echte Abwesenheit.

Abrechnung

Sie zahlen pro gesammeltem Beitrag und pro gesammeltem Kommentator, plus eine kleine Actor-Startgebühr. Hinweiszeilen sind kostenlos. posted_since filtert, bevor etwas berechnet wird, sodass ein geplanter Lauf, der nichts Neues findet, nur den Actor-Start kostet und sonst nichts.

Es gibt keinen Ergebnis-Cache: Jeder Lauf ruft erneut ab, was das richtige Verhalten für einen Actor ist, dessen Aufgabe es ist, neue Beiträge zu bemerken. Die Preisgestaltung finden Sie auf der Apify-Seite des Actors. Das Ausführen dieses Servers verbraucht Apify-Credits.

Was dieser Server tut und nicht tut

Er ist ein dünner Client für den Apify-Actor. Er reicht Ihre Eingabe durch und gibt die Ausgabe des Actors unverändert zurück. Jedes oben beschriebene Verhalten lebt im Actor, nicht hier.

Er liest nur, was LinkedIn einem abgemeldeten Besucher liefert. Er hält kein Sitzungscookie, verwendet kein LinkedIn-Konto und liest nichts hinter einer Anmeldung.

Kommentatorzeilen sind benannte Personen. Wenn Sie dies ausführen, sind Sie der Verantwortliche für die personenbezogenen Daten, die zurückgegeben werden, und Apify ist der Auftragsverarbeiter. Ihre Rechtsgrundlage müssen Sie selbst festlegen; dies ist keine Rechtsberatung.

Dieser Actor ist inoffiziell und weder mit LinkedIn noch mit Microsoft verbunden, von ihnen gesponsert oder unterstützt.

Fehler werden angezeigt, nie verschluckt. Eine ungültige Eingabe, ein ungültiges Token, ein erschöpftes Guthaben, ein Timeout oder ein Lauf, der etwas anderes als einen Datensatz zurückgibt, werden alle als expliziter Tool-Fehler zurückgegeben, nicht als leeres Ergebnis.

Quelle

Der Actor ist im Apify Store. Dieser Wrapper ist MIT-lizenziert.

Erstellt von Mamba Labs.

Available Tools

1 tool
capture_linkedin_posts_and_commentersCapture LinkedIn Posts and CommentersA
Idempotent

Point it at LinkedIn person profiles or company pages and it returns the posts a search engine has indexed for each one, as flat rows: permalink, author, a text excerpt, and the publish date decoded from the post id. No request is sent to LinkedIn and no cookie or account is used. A result counts only when its permalink names the source, so posts are never attributed to the wrong author. Coverage is what the search index holds: posts appear days or weeks after publishing and many never appear. Commenters, reaction counts, comment counts and media are no longer returned (removed 2026-10-12, they came only from LinkedIn pages). Rows carry row_type post or notice; filter on row_type before loading a table. post_id is the activity URN and is stable across runs. Every row carries degraded and degradation_reason. Requires an APIFY_TOKEN and consumes Apify credits. Read only.

NameRequiredDescriptionDefault
company_urlsNoLinkedIn company page URLs, for example https://www.linkedin.com/company/microsoft. Supply this, profile_urls, or both.
posted_sinceNoISO date or timestamp, for example 2026-08-01. Posts published before this are skipped BEFORE anything is charged. Leave empty to take everything the index holds.
profile_urlsNoLinkedIn person profile URLs, for example https://www.linkedin.com/in/williamhgates. Country subdomains such as uk.linkedin.com are fine. Supply this, company_urls, or both.
max_charge_usdNoOptional. The actor's own spend cap for this run, in USD. The run stops before a charge would take its total past this amount, writes one notice row saying so, and keeps every row already charged. Leave it empty for no cap of your own; the maximum cost per run set in Apify is honored either way.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: no request is sent to LinkedIn, no cookie or account is used, results only count when the permalink names the source, coverage is bounded by the search index, and commenters/reactions/media were removed on 2026-10-12. It also discloses the APIFY_TOKEN requirement, credit consumption, degraded/degradation_reason flags, and that post_id is a stable activity URN.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core behavior, then layered with caveats, each of which carries real decision value (coverage limits, row_type, removed features, credits). It is long, but nearly every sentence prevents a specific failure mode; only minor tightening is possible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description fully describes the return shape (permalink, author, text excerpt, decoded publish date, row_type, post_id, degraded flags). Combined with the cost, auth, and coverage disclosures, an agent has everything needed to invoke and interpret this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (company_urls, profile_urls, posted_since, max_charge_usd) are already fully documented in the schema, including the charge-cap behavior. The description adds no parameter-level detail beyond that, which is the correct baseline when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — it returns search-indexed LinkedIn posts for supplied person profiles or company pages as flat rows — and names the exact fields returned. It also proactively corrects the misleading tool name by stating that commenters are no longer returned. An agent knows precisely what comes back without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete operating guidance: filter on row_type before loading a table, use posted_since to avoid charges, and expect posts to appear days or weeks after publishing with many never indexed. There are no sibling tools to route against, so explicit alternatives cannot be named, but the coverage caveats make the appropriate context clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev1.4.0
    • Changedcapture_linkedin_posts_and_commenters1 field changed
      • addedInput schema / properties / max_charge_usd
        Added value: +{
        +  "description": "Optional. The actor's own spend cap for this run, in USD. The run stops before a charge would take its total past this amount, writes one notice row saying so, and keeps every row already charged. Leave it empty for no cap of your own; the maximum cost per run set in Apify is honored either way.",
        +  "minimum": 0,
        +  "type": "number"
        +}
  2. 1 tool updatev1.3.0
    • Changedcapture_linkedin_posts_and_commenters8 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / collect_commenters
        Removed value: -{
        -  "description": "Return one row per person who commented, with name, profile URL, comment text and comment likes. Turn it off to collect posts only, in which case commenters_collected comes back null rather than 0, because the actor did not look. Default: true.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / collect_reactors
        Removed value: -{
        -  "description": "LinkedIn serves no reactor identities to a logged-out visitor, so this returns no reaction rows whatever you set. It exists so the limit is visible rather than silent, and it adds one notice row per run. Set it to false to suppress that row. Default: true.",
        -  "type": "boolean"
        -}
      • changedInput schema / properties / company_urls / description
        Previous value: -"LinkedIn company page URLs whose recent posts you want, for example https://www.linkedin.com/company/microsoft. Supply this, profile_urls, or both."New value: +"LinkedIn company page URLs, for example https://www.linkedin.com/company/microsoft. Supply this, profile_urls, or both."
      • removedInput schema / properties / max_engagers_per_post
        Removed value: -{
        -  "description": "Caps the engager rows charged per post. LinkedIn shows about ten comments to a logged-out visitor, so ten is the platform ceiling and raising this above ten does nothing. Set it to 0 to pay for posts only. Default: 10.",
        -  "maximum": 100,
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • changedInput schema / properties / posted_since / description
        Previous value: -"ISO date or timestamp, for example 2026-08-01. Posts published before this are skipped BEFORE anything is charged, so a scheduled run that finds nothing new costs the actor start and nothing else. Leave empty to take everything the page advertises."New value: +"ISO date or timestamp, for example 2026-08-01. Posts published before this are skipped BEFORE anything is charged. Leave empty to take everything the index holds."
      • changedInput schema / properties / profile_urls / description
        Previous value: -"LinkedIn person profile URLs whose recent posts you want, for example https://www.linkedin.com/in/williamhgates. Country subdomains such as uk.linkedin.com are fine. Supply this, company_urls, or both."New value: +"LinkedIn person profile URLs, for example https://www.linkedin.com/in/williamhgates. Country subdomains such as uk.linkedin.com are fine. Supply this, company_urls, or both."
      • removedInput schema / properties / use_residential_proxy
        Removed value: -{
        -  "description": "Off by default, which is what the pricing assumes and what was measured. Turn it on only if LinkedIn starts refusing the platform's datacenter addresses. Apify bills residential bandwidth on top of this actor's events. Default: false.",
        -  "type": "boolean"
        -}
  3. 1 tool updatev1.0.1
    • First observedcapture_linkedin_posts_and_commenters

TDQS

A4.3/5.0

Scored across 1 tool

Disambiguation5/5

There is only one tool, so there is no possibility of selecting the wrong one. Its purpose (capture indexed LinkedIn posts for given profiles/pages) is stated unambiguously.

Naming Consistency4/5

The single name uses a clear snake_case verb_noun form, which is internally consistent. However, it still advertises 'commenters' even though the description says commenter data was removed, making the name stale and slightly misleading.

Tool Count3/5

The server exposes exactly one tool for a very narrow, read-only capture operation, so the count is defensible but thin. An agent gets no separate means to list sources, filter row types, or fetch metadata without parsing the single flat output.

Completeness4/5

For a read-only 'capture posts from a search index' domain, one tool covers the whole lifecycle and returns stable post_id, row_type, and degradation flags. Gaps are minor: no dedicated source-validation or post-filtering operation, and the name's promise of commenters is no longer fulfilled.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables extraction of comprehensive LinkedIn profile data including experience, education, skills, and contact information through browser automation. Requires manual LinkedIn credentials input and uses anti-detection measures for reliable scraping.
    5
    -
  • A
    license
    C
    quality
    D
    maintenance
    Enables access to comprehensive LinkedIn data, including professional profile details, company information, and social engagement metrics. It supports searching for people, retrieving posts and comments, and fetching detailed experience, skills, and recommendations.
    52
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to discover and fetch LinkedIn posts with engagement metrics (reactions, comments, shares) and author details, returning structured JSON per post.
    -