Skip to main content
Glama
prakharagarwal-dev

LinkedIn MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LINKEDIN_MCP_HTTP_HOSTNoLoopback HTTP listener host. Default: 127.0.0.1
LINKEDIN_MCP_HTTP_PORTNoLoopback HTTP listener port. Default: 8000
LINKEDIN_MCP_TRANSPORTNostdio or streamable-http. Default: stdio
LINKEDIN_MCP_ACCOUNT_IDNoOne configured LinkedIn account. Default: personal
LINKEDIN_MCP_LIVE_ENABLEDNoMaster switch for LinkedIn browser access. Default: false
LINKEDIN_MCP_ALLOWED_HOSTSNoNavigation allowlist. Default: exact LinkedIn hosts
LINKEDIN_MCP_ALLOWED_SCOPESNoAuthorized named capabilities. Default: Jobs and People reads
LINKEDIN_MCP_QUEUE_CAPACITYNoMaximum waiting local capability calls. Default: 100
LINKEDIN_MCP_ALLOWED_EFFECTSNoread, prepare, and/or write. Default: read
LINKEDIN_MCP_ASSET_ROOT_PATHNoAllowed local files for posts/comments/messages. Default: per-user app data
LINKEDIN_MCP_ALLOWED_SURFACESNoAuthorized LinkedIn UI surfaces. Default: Jobs and People reads
LINKEDIN_MCP_BROWSER_HEADLESSNoCapability browser mode; login remains headed. Default: true
LINKEDIN_MCP_RUNTIME_LOCK_PATHNoSingle-account process lock. Default: per-user app data
LINKEDIN_MCP_BROWSER_CACHE_PATHNoManaged Playwright browser cache. Default: native Playwright cache
LINKEDIN_MCP_AUTO_LOGIN_ON_STARTNoValidate/recover login in the background. Default: true
LINKEDIN_MCP_BROWSER_AUTO_INSTALLNoInstall the matching Chromium revision when needed. Default: true
LINKEDIN_MCP_BROWSER_PROFILE_PATHNoPersistent LinkedIn Chromium profile. Default: per-user app data
LINKEDIN_MCP_LOGIN_TIMEOUT_SECONDSNoHuman login bound. Default: 900
LINKEDIN_MCP_BROWSER_TIMEOUT_SECONDSNoBrowser operation timeout. Default: 20
LINKEDIN_MCP_ACTION_DRAFT_TTL_SECONDSNoMaximum in-process unexecuted draft age. Default: 86400
LINKEDIN_MCP_PAGINATION_CURSOR_TTL_SECONDSNoLifetime of an idle continuation cursor. Default: 900
LINKEDIN_MCP_PAGINATION_MAX_ACTIVE_CURSORSNoMaximum process-local continuation states. Default: 64
LINKEDIN_MCP_BROWSER_INSTALL_TIMEOUT_SECONDSNoBrowser installation bound. Default: 600
LINKEDIN_MCP_MINIMUM_NAVIGATION_INTERVAL_SECONDSNoInternal pacing interval. Default: 2
LINKEDIN_MCP_PAGINATION_MAX_SEEN_ITEMS_PER_CURSORNoStable-identity memory bound per scan. Default: 5000

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
linkedin.server.statusA

Return non-secret server configuration and readiness metadata.

linkedin.capabilities.listA

List installed capabilities and whether runtime policy enables each one.

linkedin.session.statusA

Return non-secret browser-session state for the configured account.

linkedin.jobs.searchA

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.

linkedin.jobs.getA

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.

linkedin.people.searchA

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.

linkedin.people.getA

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.

linkedin.companies.searchA

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.

linkedin.companies.getA

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.

linkedin.posts.searchA

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.

linkedin.posts.getA

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.

linkedin.posts.comments.listA

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.

linkedin.posts.create.prepareA

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.

linkedin.posts.create.executeA

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.

linkedin.posts.comment.prepareA

Inspect one exact visible post and prepare an immutable top-level personal-member comment. Supports text, links, emoji, exact member/company mentions, one local hash-locked photo, or one exact visible GIF result. This tool never submits.

linkedin.posts.comment.executeA

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 top-level comment after the server verifies the preview, actor, target author, payload, local asset hash, expiry, and idempotency.

linkedin.posts.reaction.prepareA

Inspect the exact current reaction state on one visible post and prepare an immutable target state: none, like, celebrate, support, love, insightful, or funny. This tool never changes the reaction.

linkedin.posts.reaction.executeA

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.

linkedin.invitations.listA

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.

linkedin.connections.listA

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.

linkedin.connections.searchA

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.

linkedin.invitations.send.prepareA

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.

linkedin.invitations.send.executeA

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.

linkedin.invitations.accept.prepareA

Revalidate the exact member profile's paired visible incoming-request controls and create an immutable acceptance draft. This does not accept the request.

linkedin.invitations.accept.executeA

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.

linkedin.invitations.ignore.prepareA

Revalidate the exact member profile's current visible incoming connection request and create an immutable ignore draft. This does not ignore the request.

linkedin.invitations.ignore.executeA

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.

linkedin.messaging.searchA

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.

linkedin.messaging.conversation.getA

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.

linkedin.messaging.message.prepareA

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.

linkedin.messaging.message.executeA

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.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/prakharagarwal-dev/linkedin-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server