LinkedIn MCP Server
OCI · GHCR.IO/PRAKHARAGARWAL-DEV/LINKEDIN-MCP-SERVER:0.16.0
Find LinkedIn jobs and people, research companies, manage network, posts, and messages with MCP.
Available components
Last scanned (19 hours ago)
Scores higher than 97% of OCI servers
Category CRM and Sales
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security0
- No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
- Known CVEs could not be checked: this image's dependency list comes from an SBOM its publisher attached, which nothing verifies, so we will not report it as a clean result. View diagnostics → Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: this image's dependency list comes from an SBOM its publisher attached. It names packages and versions but not whether each is deprecated, still maintained or linked to its source, so there is nothing we can fairly grade.Unverified
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to prakharagarwal-dev/linkedin-mcp-server). View diagnostics → Pass
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 73 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability67
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 3830 tokens (~123/item across 31 items; 31 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management63
- Stability observed for 19 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage76
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 17% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 8 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 32 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 16 Oct 26 +9
- Stability: unverified → 0.60 ▲ functional
- 28 Sept 26 +28
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- MCP protocol: unverified → pass ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- First check of Destructive annotations: 100 functional
- Schema quality: fair → good functional
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Sept 26 +10
- Provenance: fail → pass ▲ security
- The attested source repository moved: prakharagarwal-dev/linkedin-mcp-server security
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 11 Aug 26 0
- Stability: Stability not yet verified: this package installed, but its server did not start, so we have no schema to compare. security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: Schema quality not yet verified: this package installed, but its server did not start, so we have no schema to assess. functional
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 8 Aug 26 0
- Security disclosure: fail → pass ▲ functional
- 5 Aug 26 0
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- First check of Schema quality: fail functional
- First check of Schema quality: fair functional
- First check of Schema quality: fail functional
- First check of Tool coverage: 17 functional
- First check of Tool coverage: 100 functional
- 4 Aug 26 0
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 17 Oct 2026 · Analysed oci/ghcr.io/prakharagarwal-dev/linkedin-mcp-server:0.16.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | oci |
| Reason | Verified |
| Discovered via | OCI referrers API |
| Source repo | prakharagarwal-dev/linkedin-mcp-server |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/prakharagarwal-dev/linkedin-mcp-server/.github/workflows/publish.yml@refs/tags/v0.16.0 |
| Rekor log index | 2340518763 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha256:270d766b7aaf9b85a8014b08cb3dd92bebf7a21b99b85b8aa299f569bd176b9d |
Background: How many MCP packages publish verified provenance →
Vulnerabilities 46 ungraded findings
From the publisher's SBOM, not graded. These advisories match packages listed in the SBOM the publisher attached to this image. A publisher naming a vulnerable package in their own image is credible, so we show them. Nothing verifies that SBOM, though, so the Known CVEs signal does not grade the image from it.
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-g6cj-pr64-35w5 | CVE-2026-69247 | high | yes | |
| GHSA-jwv3-5hgf-82ww | CVE-2026-69249 | high | yes | |
| GHSA-m2h6-j472-rp4c | CVE-2026-69248 | medium | yes | |
| PYSEC-2026-3552 | CVE-2026-69247 | none | yes | |
| PYSEC-2026-3553 | CVE-2026-69249 | none | yes | |
| PYSEC-2026-3554 | CVE-2026-69248 | none | yes | |
| GHSA-84m7-p3x7-pcfv | CVE-2026-59951 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-qwm4-qh6w-59xr | CVE-2026-13346 | medium | yes | |
| PYSEC-2026-3721 | CVE-2026-13346 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N | yes |
| GHSA-2gx3-rcp4-g85q | CVE-2026-101917 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L | yes |
| GHSA-42vr-xj54-vc7v | CVE-2026-101918 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L | yes |
| GHSA-8wjv-2p76-3863 | CVE-2026-102265 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L | yes |
| GHSA-9j54-fg26-wv3r | CVE-2026-102266 | high | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N | yes |
| GHSA-9v7f-9g4p-ffgj | CVE-2026-102267 | high | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N | yes |
| GHSA-ffc3-869f-jxw9 | CVE-2026-102268 | critical | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N | yes |
| GHSA-gvp8-978c-rx2q | CVE-2026-103001 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:N | no |
| GHSA-hxm8-2xgr-2p9m | CVE-2026-102269 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N | yes |
| GHSA-jwrc-g2q2-pq5p | CVE-2026-102270 | medium | CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-p4g4-x82p-q773 | CVE-2026-102271 | high | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N | yes |
| GHSA-r6x4-923q-g947 | CVE-2026-102272 | high | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N | yes |
| GHSA-w2cx-738m-mc7w | CVE-2026-102273 | high | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N | yes |
| GHSA-w6j9-cwv2-h6wq | CVE-2026-102274 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-x33g-cr3x-6449 | CVE-2026-102275 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:N | yes |
| PYSEC-2026-4140 | CVE-2026-101917 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L | yes |
| PYSEC-2026-4141 | CVE-2026-101918 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L | yes |
| PYSEC-2026-4142 | CVE-2026-102265 | medium | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L | yes |
| PYSEC-2026-4143 | CVE-2026-102266 | high | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N | yes |
| PYSEC-2026-4144 | CVE-2026-102267 | high | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N | yes |
| PYSEC-2026-4145 | CVE-2026-102268 | critical | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N | yes |
| PYSEC-2026-4146 | CVE-2026-103001 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:N | no |
| PYSEC-2026-4147 | CVE-2026-102269 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N | yes |
| PYSEC-2026-4148 | CVE-2026-102270 | medium | CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H | yes |
| PYSEC-2026-4149 | CVE-2026-102271 | high | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N | yes |
| PYSEC-2026-4150 | CVE-2026-102272 | high | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N | yes |
| PYSEC-2026-4151 | CVE-2026-102273 | high | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N | yes |
| PYSEC-2026-4152 | CVE-2026-102274 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| PYSEC-2026-4183 | CVE-2026-102275 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N | yes |
| GHSA-4gg8-gxpx-9rph | medium | yes | ||
| GHSA-94p9-xgh2-xp45 | CVE-2026-102930 | high | yes | |
| GHSA-9h9j-4vrj-gf7g | CVE-2026-102938 | medium | yes | |
| GHSA-p58f-9548-mpm2 | CVE-2026-102925 | high | CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H | yes |
| GHSA-x78j-v8h9-3j2q | CVE-2026-102937 | high | yes | |
| PYSEC-2026-4011 | CVE-2026-102930 | none | yes | |
| PYSEC-2026-4012 | CVE-2026-102938 | none | yes | |
| PYSEC-2026-4013 | CVE-2026-102925 | high | CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H | yes |
| PYSEC-2026-4014 | CVE-2026-102937 | none | yes |
Background: What a vulnerability scan can and cannot prove →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
linkedin.capabilities.list List LinkedIn Capabilities ~21
List installed capabilities and whether runtime policy enables each one.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| capabilities | array | yes | – |
No examples provided.
linkedin.companies.get Read LinkedIn Company Overview and About ~104
Read an exact visible LinkedIn Company by public slug. Always captures exactly the Company overview and About page, including identity, tagline, description, website, industry, company-size range, associated-member and follower counts, headquarters, organization type, founding year, specialties, and exact field evidence.
| Name | Type | Req | Description |
|---|---|---|---|
| company_slug | string | yes | Public LinkedIn company slug from /company/{company_slug}/. |
| context_id | string | yes | – |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| company | – | yes | – |
| context_id | string | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.companies.search Search LinkedIn Companies ~126
Search visible LinkedIn Company results using LinkedIn's complete current Company-search filter surface: keywords, headquarters location, industry, company-size range, visible job listings, and first-degree connection presence. Exact names are resolved only through visible filter controls; callers may alternatively provide stable facet IDs. Returns one cursor page.
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| cursor | – | – | – |
| filters | – | – | – |
| max_results | – | – | – |
| page_size | integer | – | Number of unique items to return in this page. |
| query | – | – | – |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| companies | array | yes | – |
| context_id | string | yes | – |
| coverage | – | yes | – |
| pagination | – | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.connections.list List LinkedIn Connections ~88
List one cursor page of the configured account's visible first-degree connection inventory in LinkedIn's selected visible sort order. This tool does not search.
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| cursor | – | – | – |
| max_results | – | – | – |
| page_size | integer | – | Number of unique items to return in this page. |
| request_id | string | yes | – |
| sort_by | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| connections | array | yes | – |
| context_id | string | yes | – |
| coverage | – | yes | – |
| pagination | – | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.connections.search Search LinkedIn Connections ~163
Search only the configured account's established first-degree connections through LinkedIn's current People surface. The server always enforces first degree. Supports the remaining current visible People filters: any/specific-title hiring, locations, current/past companies, connections-of, followers-of, schools, industries, profile languages, service categories, and first-name, last-name, title, company, and school keywords. Use linkedin.people.search for broader second-, third-plus-, or mixed-degree discovery.
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| cursor | – | – | – |
| filters | – | – | – |
| max_results | – | – | – |
| page_size | integer | – | Number of unique items to return in this page. |
| query | – | – | – |
| request_id | string | yes | – |
| title_keywords | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| coverage | – | yes | – |
| pagination | – | yes | – |
| people | array | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.invitations.accept.execute Accept Prepared LinkedIn Connection Invitation ~166
Account-changing action. Invoke only when the MCP client's configured approval policy authorizes this exact execute tool. Interactive confirmation is the safe default; an explicit durable per-tool approval may authorize unattended execution. Accept exactly one immutable incoming-request draft after the server verifies the preview, payload hash, draft expiry, idempotency, exact profile identity, and current request controls; then verify those controls are absent and the exact profile visibly shows a first-degree connection.
| Name | Type | Req | Description |
|---|---|---|---|
| action_id | string | yes | Immutable action ID returned by the matching prepare tool. |
| approval_preview | – | yes | – |
| context_id | string | yes | – |
| idempotency_key | string | yes | – |
| payload_hash | string | yes | Exact payload hash returned by the matching prepare tool. |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| result | – | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.invitations.accept.prepare Prepare LinkedIn Connection Acceptance ~62
Revalidate the exact member profile's paired visible incoming-request controls and create an immutable acceptance draft. This does not accept the request.
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| profile_slug | string | yes | – |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| approval_preview | – | yes | – |
| context_id | string | yes | – |
| draft | – | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.invitations.ignore.execute Ignore Prepared LinkedIn Connection Request ~162
Account-changing action. Invoke only when the MCP client's configured approval policy authorizes this exact execute tool. Interactive confirmation is the safe default; an explicit durable per-tool approval may authorize unattended execution. Ignore exactly one immutable incoming-request draft after the server verifies the preview, payload hash, draft expiry, idempotency, exact profile identity, and current request controls; then verify those controls are absent on a fresh exact-profile read.
| Name | Type | Req | Description |
|---|---|---|---|
| action_id | string | yes | Immutable action ID returned by the matching prepare tool. |
| approval_preview | – | yes | – |
| context_id | string | yes | – |
| idempotency_key | string | yes | – |
| payload_hash | string | yes | Exact payload hash returned by the matching prepare tool. |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| result | – | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.invitations.ignore.prepare Prepare Ignoring a LinkedIn Connection Request ~62
Revalidate the exact member profile's current visible incoming connection request and create an immutable ignore draft. This does not ignore the request.
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| profile_slug | string | yes | – |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| approval_preview | – | yes | – |
| context_id | string | yes | – |
| draft | – | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.invitations.list List LinkedIn Invitations ~135
Read one live cursor page from the current received or sent invitation inventory, including the deduplicated union of LinkedIn's current Focused, Other, Verified, Mutual Connections, Your Company, and Your School received views when invitation_filter is all. Continuations rescan a bounded live prefix, suppress stable identities already returned, and claim completion only after the selected visible counts reconcile.
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| cursor | – | – | – |
| direction | – | – | – |
| invitation_filter | – | – | – |
| page_size | integer | – | Number of unique items to return in this page. |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| coverage | – | yes | – |
| invitations | array | yes | – |
| pagination | – | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.invitations.send.execute Send Prepared LinkedIn Connection Invitation ~186
Account-changing action. Invoke only when the MCP client's configured approval policy authorizes this exact execute tool. Interactive confirmation is the safe default; an explicit durable per-tool approval may authorize unattended execution. Send exactly one immutable invitation draft after the server verifies the exact preview, payload hash, draft expiry, idempotency key, target identity, and actionable Send control. After the click, one fresh exact-profile read is the complete postcondition: Pending is verified success and Connect is verified LinkedIn failure. An unreadable or ambiguous fresh profile remains uncertain.
| Name | Type | Req | Description |
|---|---|---|---|
| action_id | string | yes | Immutable action ID returned by the matching prepare tool. |
| approval_preview | – | yes | – |
| context_id | string | yes | – |
| idempotency_key | string | yes | – |
| payload_hash | string | yes | Exact payload hash returned by the matching prepare tool. |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| result | – | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.invitations.send.prepare Prepare LinkedIn Connection Invitation ~80
Inspect one exact visible profile and create an immutable invitation draft. This does not send the invitation. An optional personalized note is limited to 200 characters and returned with the exact client-approval preview.
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| note | – | – | – |
| profile_slug | string | yes | – |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| approval_preview | – | yes | – |
| context_id | string | yes | – |
| draft | – | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.jobs.get Read LinkedIn Job ~65
Read one current visible LinkedIn job by numeric ID, including its primary header metadata, application method, hiring-team identities, and fully expanded About the job description.
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| job_id | string | yes | – |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| job | – | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.jobs.search Search LinkedIn Jobs ~170
Search current visible LinkedIn Jobs pages with optional keywords and typed location, Date posted, sorting, distance, workplace, experience, job type, company, industry, function, title, benefit, commitment, Easy Apply, verification, applicant-count, network, and Fair Chance filters. Hydrates LinkedIn's virtualized result cards and returns one deduplicated cursor page.
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| cursor | – | – | – |
| filters | – | – | – |
| freshness_hours | – | – | Date posted: 24, 168 (past week), 720 (past month), or null for Any time. |
| location | – | – | – |
| max_results | – | – | – |
| page_size | integer | – | Number of unique items to return in this page. |
| query | – | – | – |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| coverage | – | yes | – |
| jobs | array | yes | – |
| pagination | – | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.messaging.conversation.get Read LinkedIn Conversation ~119
Traverse LinkedIn's reverse-virtualized visible history and read both incoming and outgoing messages, attachments, replies, edits, and reaction summaries by exact profile slug, visible conversation ID, or a conversation_ref returned by messaging.search. Returns explicit history completeness and truncation evidence. Opening a conversation may cause LinkedIn to mark it seen.
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| conversation_id | – | – | – |
| conversation_ref | – | – | – |
| max_messages | integer | – | – |
| profile_slug | – | – | – |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| conversation | – | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.messaging.message.execute Send Prepared LinkedIn Message ~166
Account-changing action. Invoke only when the MCP client's configured approval policy authorizes this exact execute tool. Interactive confirmation is the safe default; an explicit durable per-tool approval may authorize unattended execution. Send exactly one immutable text/file message or immediate-send GIF, optionally as an exact visible reply, after the server verifies the preview, payload and asset hashes, draft expiry, recipient, idempotency, and exact visible outgoing postcondition in the same conversation surface.
| Name | Type | Req | Description |
|---|---|---|---|
| action_id | string | yes | Immutable action ID returned by the matching prepare tool. |
| approval_preview | – | yes | – |
| context_id | string | yes | – |
| idempotency_key | string | yes | – |
| payload_hash | string | yes | Exact payload hash returned by the matching prepare tool. |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| result | – | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.messaging.message.prepare Prepare LinkedIn Message ~165
Open one visible one-to-one standard conversation, using the exact profile's Message button for profile targets and accepting its recipient-bound compact pane or following its exact visible Messaging href in the same operation page, then create an immutable message draft containing exact text/emoji, hash-locked current desktop file attachments, one exact KLIPY GIF title, and optionally an exact reply-to message_ref. This does not send the message. Group chats, message requests, and paid InMail are excluded.
| Name | Type | Req | Description |
|---|---|---|---|
| attachments | array | – | – |
| context_id | string | yes | – |
| conversation_id | – | – | – |
| conversation_ref | – | – | – |
| gif | – | – | – |
| message | – | – | – |
| profile_slug | – | – | – |
| reply_to_message_ref | – | – | – |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| approval_preview | – | yes | – |
| context_id | string | yes | – |
| draft | – | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.messaging.search Search LinkedIn Messages ~126
Search the current desktop inbox by recipient or message keywords, optionally within Focused, Other, Archived, or Spam and exactly one of Jobs, Unread, Connections, InMail, or Starred. At least one search criterion is required. Results are cursor-paginated current conversation cards.
| Name | Type | Req | Description |
|---|---|---|---|
| category | – | – | – |
| context_id | string | yes | – |
| cursor | – | – | – |
| filter | – | – | – |
| max_results | – | – | – |
| page_size | integer | – | Number of unique items to return in this page. |
| query | – | – | – |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| conversations | array | yes | – |
| coverage | – | yes | – |
| pagination | – | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.people.get Read LinkedIn Member Profile ~124
Read a visible LinkedIn member profile directly by validated public profile slug. Returns typed introduction, About, experience, education, every visible profile section owned by the member, full retained text, field evidence, and bounded section-page coverage.
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| profile_slug | string | yes | Public LinkedIn profile slug from linkedin.com/in/{profile_slug}. |
| request_id | string | yes | – |
| sections | array | – | Visible profile sections to return. Use ['all'] for the complete server-bounded read; the canonical overview is always captured for identity. |
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| person | – | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.people.search Search LinkedIn People ~147
Search visible LinkedIn People results using natural-language or Boolean keywords, connection degree, any/specific-title hiring, location, current/past company, connections-of, followers-of, school, industry, profile-language, service-category, and exact first-name, last-name, title, company, and school keyword filters. Returns one cursor page; name-to-ID resolution and traversal safety bounds remain private.
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| cursor | – | – | – |
| filters | – | – | – |
| max_results | – | – | – |
| page_size | integer | – | Number of unique items to return in this page. |
| query | – | – | – |
| request_id | string | yes | – |
| title_keywords | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| coverage | – | yes | – |
| pagination | – | yes | – |
| people | array | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.posts.comment.execute Publish Prepared LinkedIn Comment or Reply ~151
Account-changing action. Invoke only when the MCP client's configured approval policy authorizes this exact execute tool. Interactive confirmation is the safe default; an explicit durable per-tool approval may authorize unattended execution. Submit exactly one immutable personal-member comment or reply after the server verifies the preview, actor, target author, exact parent, payload, local asset hash, expiry, and idempotency.
| Name | Type | Req | Description |
|---|---|---|---|
| action_id | string | yes | Immutable action ID returned by the matching prepare tool. |
| approval_preview | – | yes | – |
| context_id | string | yes | – |
| idempotency_key | string | yes | – |
| payload_hash | string | yes | Exact payload hash returned by the matching prepare tool. |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| result | – | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.posts.comment.prepare Prepare LinkedIn Comment or Reply ~107
Inspect one exact visible post or parent comment and prepare an immutable personal-member comment or reply. Supports text, links, emoji, exact member/company mentions, one local hash-locked photo, or one exact visible GIF result. This tool never submits.
| Name | Type | Req | Description |
|---|---|---|---|
| attachment | – | – | – |
| context_id | string | yes | – |
| mentions | array | – | – |
| parent_comment_ref | – | – | – |
| post_ref | string | yes | – |
| request_id | string | yes | – |
| text | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| approval_preview | – | yes | – |
| context_id | string | yes | – |
| draft | – | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.posts.comments.list Read LinkedIn Post Discussion ~122
Read one cursor page of visible top-level comments and bounded nested replies, with relevant/recent ordering, stable comment references, exact author identities, visible text, timestamps, reaction/reply counts, and truncation coverage.
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| cursor | – | – | – |
| max_comments | – | – | – |
| max_replies_per_comment | integer | – | – |
| page_size | integer | – | Number of unique items to return in this page. |
| post_ref | string | yes | – |
| request_id | string | yes | – |
| sort_by | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| coverage | – | yes | – |
| pagination | – | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
| threads | array | yes | – |
No examples provided.
linkedin.posts.create.execute Publish or Schedule Prepared Personal LinkedIn Post ~159
Account-changing action. Invoke only when the MCP client's configured approval policy authorizes this exact execute tool. Interactive confirmation is the safe default; an explicit durable per-tool approval may authorize unattended execution. Publish or schedule exactly one immutable personal-post draft after the server verifies the exact preview, payload and asset hashes, actor, expiry, options, and global idempotency key. An interrupted final action is never retried automatically.
| Name | Type | Req | Description |
|---|---|---|---|
| action_id | string | yes | Immutable action ID returned by the matching prepare tool. |
| approval_preview | – | yes | – |
| context_id | string | yes | – |
| idempotency_key | string | yes | – |
| payload_hash | string | yes | Exact payload hash returned by the matching prepare tool. |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| result | – | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.posts.create.prepare Prepare Personal LinkedIn Post ~187
Inspect the active personal member composer and prepare one immutable post. Supports typed text/link, up to 20 edited photos with alt text and member/company tags, video with thumbnail/captions, document, poll, celebration, event, existing-job hiring, and expert-request content. Exact audience/group, comment control, brand partnership, eligible collaborators, mentions, local asset hashes, and optional schedule are captured. The content discriminator is mode, not kind. This tool never publishes and never publishes as a company Page.
| Name | Type | Req | Description |
|---|---|---|---|
| audience | – | – | – |
| brand_partnership | boolean | – | – |
| collaborators | array | – | – |
| comment_control | – | – | – |
| content | – | yes | Typed post content discriminated by the required mode field; use mode, not kind. |
| context_id | string | yes | – |
| group_target | – | – | – |
| request_id | string | yes | – |
| scheduled_at | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| approval_preview | – | yes | – |
| context_id | string | yes | – |
| draft | – | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.posts.get Read LinkedIn Post ~124
Read one exact visible LinkedIn post by stable activity, share, or ugc-post reference. Returns typed author/header data, fully expanded text, scoped links, mentions and hashtags, current image/video/document/link-card/poll details, viewer reaction and engagement counts, visibility, timestamps, immutable field evidence, and bounded completeness coverage. Reposts retain the wrapper and read the visibly linked original as one additional bounded page.
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| post_ref | string | yes | Stable post reference returned by LinkedIn post search. |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| post | – | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.posts.reaction.execute Apply Prepared LinkedIn Post or Comment Reaction ~152
Account-changing action. Invoke only when the MCP client's configured approval policy authorizes this exact execute tool. Interactive confirmation is the safe default; an explicit durable per-tool approval may authorize unattended execution. Set, change, remove, or safely no-op one prepared exact reaction state after the server verifies the preview, actor, target author, prior state, expiry, and idempotency.
| Name | Type | Req | Description |
|---|---|---|---|
| action_id | string | yes | Immutable action ID returned by the matching prepare tool. |
| approval_preview | – | yes | – |
| context_id | string | yes | – |
| idempotency_key | string | yes | – |
| payload_hash | string | yes | Exact payload hash returned by the matching prepare tool. |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| result | – | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.posts.reaction.prepare Prepare LinkedIn Post or Comment Reaction ~89
Inspect the exact current reaction state on one visible post or comment and prepare an immutable target state: none, like, celebrate, support, love, insightful, or funny. This tool never changes the reaction.
| Name | Type | Req | Description |
|---|---|---|---|
| comment_ref | – | – | – |
| context_id | string | yes | – |
| desired_reaction | – | yes | – |
| post_ref | string | yes | – |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| approval_preview | – | yes | – |
| context_id | string | yes | – |
| draft | – | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.posts.search Search LinkedIn Posts ~142
Search visible LinkedIn content using keywords plus sort, date, content type, From-member/company, posted-by relationship, mentioning-member/company, author-industry/company, and Author Keywords filters. Content type follows LinkedIn's current single-choice Videos, Images, Job posts, Live videos, or Documents control. Names resolve only through exact visible choices. Returns one cursor page while browser traversal remains privately bounded.
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| cursor | – | – | – |
| filters | – | – | – |
| max_results | – | – | – |
| page_size | integer | – | Number of unique items to return in this page. |
| query | – | – | – |
| request_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | yes | – |
| coverage | – | yes | – |
| pagination | – | yes | – |
| posts | array | yes | – |
| replayed | boolean | – | – |
| request_id | string | yes | – |
| sources | array | yes | – |
| status | string | – | – |
No examples provided.
linkedin.server.status LinkedIn MCP Server Status ~18
Return non-secret server configuration and readiness metadata.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| accepting_calls | boolean | – | – |
| active_browser_operation | boolean | – | – |
| active_capability | – | – | – |
| connected_clients | integer | – | – |
| name | string | – | – |
| operation_state | string | – | – |
| queue_depth | integer | – | – |
| queued_clients | integer | – | – |
| runtime_model | string | – | – |
| transport | string | yes | – |
| version | string | yes | – |
No examples provided.
linkedin.session.status LinkedIn Session Status ~20
Return non-secret browser-session state for the configured account.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | – |
| authentication_state | – | yes | – |
| automatic_login_enabled | boolean | yes | – |
| browser_setup_state | – | yes | – |
| browser_started | boolean | yes | – |
| login_browser_open | boolean | yes | – |
| pause_reason | – | – | – |
| paused | boolean | yes | – |
| profile_present | boolean | yes | – |
| status_message | – | – | – |
No examples provided.
How do I install the LinkedIn MCP Server server?
LinkedIn MCP Server runs locally as a container image, launched with docker run --rm -i ghcr.io/prakharagarwal-dev/linkedin-mcp-server:0.16.0. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.
oci · ghcr.io/prakharagarwal-dev/linkedin-mcp-server:0.16.0
claude mcp add prakharagarwal-dev-linkedin-mcp-server -- docker run --rm -i ghcr.io/prakharagarwal-dev/linkedin-mcp-server:0.16.0
What is the LinkedIn MCP Server server?
LinkedIn MCP Server is listed in the public MCP registry as io.github.prakharagarwal-dev/linkedin-mcp-server. Find LinkedIn jobs and people, research companies, manage network, posts, and messages with MCP. This page covers its container image (ghcr.io/prakharagarwal-dev/linkedin-mcp-server:0.16.0).
Is the LinkedIn MCP Server server safe to use?
LinkedIn MCP Server scores 57 out of 100 on VerifyMCP. The SBOM its publisher attached lists packages with 46 known advisories as of 17 October 2026. We do not grade that SBOM, as nothing verifies it. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the LinkedIn MCP Server server expose?
LinkedIn MCP Server exposes 31 tools: linkedin.server.status, linkedin.capabilities.list, linkedin.session.status, linkedin.jobs.search, linkedin.jobs.get, and 26 more. Their descriptions and schemas cost roughly 3,708 tokens of context every time the server is loaded.
Is the LinkedIn MCP Server server still maintained?
LinkedIn MCP Server is still listed as active in the MCP registry. We last reached this channel on 17 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the LinkedIn MCP Server server under?
LinkedIn MCP Server declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.