Skip to main content
Glama
Sabari2005

LinkedIn MCP Server

by Sabari2005

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DRY_RUNNoWhen true, mutating tools validate and report but never execute.false
HUMANIZENoWhen true, adds random delays and human-like typing.true
LOG_LEVELNoLogging level: trace, debug, info, warn, error, silent.info
CACHE_TTL_MSNoRead cache lifetime in milliseconds.300000
MCP_HTTP_HOSTNoBind address for HTTP transport. Non-loopback requires MCP_HTTP_TOKEN.127.0.0.1
MCP_HTTP_PATHNoEndpoint path for HTTP transport./mcp
MCP_HTTP_PORTNoPort for streamable HTTP transport.3000
LINKEDIN_LI_ATNoLinkedIn session cookie (li_at) string. Outranks other authentication methods.
MCP_HTTP_TOKENNoBearer token required for non-loopback HTTP bindings.
DEBUG_ARTIFACTSNoWhen true, saves screenshots and HTML on browser failures.true
BROWSER_HEADLESSNoWhen false, browser UI is visible for debugging.true
TRANSPORT_STRATEGYNoTransport selection strategy: auto, api, or browser.auto
LINKEDIN_AUTO_LOGINNoIf set to false, disables the automatic browser login prompt on first use.true
LINKEDIN_COOKIE_FILENoPath to a JSON cookies file exported with Cookie-Editor extension.
REQUIRE_CONFIRMATIONNoWhen true, destructive tools require explicit confirm: true parameter.true
LINKEDIN_BROWSER_PROFILENoPath to a dedicated Chrome profile directory. Overrides automatic profile location.
RATE_LIMIT_MESSAGES_PER_DAYNoDaily messaging quota.100
RATE_LIMIT_CONNECTIONS_PER_DAYNoDaily connection request quota.80
RATE_LIMIT_REQUESTS_PER_MINUTENoGlobal request pacing limit.30
RATE_LIMIT_APPLICATIONS_PER_DAYNoDaily job application quota.50

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

Tools

Functions exposed to the LLM to take actions

NameDescription
linkedin_add_awardB

Add an honour or award to the profile.

linkedin_add_certificationB

Add a licence or certification to the profile.

linkedin_add_educationA

Add an education entry to the profile. School names are matched against LinkedIn's directory.

linkedin_add_experienceA

Add a work experience entry to the profile. Company names are matched against LinkedIn's company directory. Set current=true for an ongoing role and omit the end date.

linkedin_add_languageB

Add a language to the profile with an optional proficiency level.

linkedin_add_projectA

Add a project to the profile — useful for portfolio work, open source and side projects.

linkedin_add_publicationB

Add a publication (paper, article, book) to the profile.

linkedin_add_skillA

Add a skill to the profile. LinkedIn matches skills against its own taxonomy and uses them for recruiter search, so prefer standard names ("Machine Learning" over "ML wizardry"). Max 50 skills.

linkedin_add_volunteer_experienceB

Add volunteer experience to the profile.

linkedin_analyse_job_fitA

Compare the user's profile against a job posting: match score, which required skills they have and lack, keyword coverage, and specific recommendations. Use this to decide whether a role is worth applying to, and to know what to emphasise if it is.

linkedin_analyse_profileA

Score profile completeness and return specific, actionable improvement suggestions. The score is computed by this server from which sections are present and substantive — it is not LinkedIn's own metric. Use this to answer "how can I improve my profile?".

linkedin_apply_to_jobA

Apply to a job through LinkedIn Easy Apply. Reads each step of the form, answers questions from the answers you supply, from previously remembered answers, or from safe defaults — and by default STOPS rather than guessing at a required question it cannot answer confidently. Check the unanswered field in the result and re-invoke with those answers supplied. This submits a real application to a real employer, so confirm intent with the user first.

linkedin_apply_to_jobs_bulkA

Apply to several Easy Apply jobs in sequence, with human-like pacing between them. Skips jobs already applied to, and aborts the batch on a session or quota failure rather than hammering LinkedIn. Applications where a required question could not be answered are reported as skipped with the specific questions listed — supply those answers and retry those jobs. This submits real applications, so get explicit user approval for the batch first.

linkedin_auth_export_cookiesA

Export the currently loaded cookies so they can be moved to another machine or backed up. WARNING: the output contains live session credentials — anyone holding them can access the user's LinkedIn account. Only surface this when the user explicitly asks for it.

linkedin_auth_import_cookiesA

Import LinkedIn cookies supplied directly as text. Accepts Cookie-Editor JSON, EditThisCookie JSON, a Playwright storageState object, Netscape cookies.txt, or a raw "li_at=…; JSESSIONID=…" header string. Use this when the user pastes cookies into the conversation rather than saving a file.

linkedin_auth_reloadA

Reload cookies from the configured source (file or environment) and re-validate the session. Use this after the user has exported a fresh cookie file to recover from an expired session without restarting the server.

linkedin_auth_statusA

Check whether the LinkedIn session is currently valid, and report which cookies are loaded, from where, and who the session belongs to. Call this first if any other tool returns an AUTH_EXPIRED or AUTH_MISSING error, and before starting a long workflow.

linkedin_comment_on_postA

Add a comment to a post. Max 1,250 characters. The comment is public and attributed to the signed-in user, so confirm the wording with them first.

linkedin_compose_outreachA

Draft a personalised outreach message grounded in the user's real profile — no invented credentials. Returns the draft plus notes about what was missing. Rewrite it for voice before sending; this gives you an accurate factual base, not finished prose.

linkedin_create_postA

Publish a post to the LinkedIn feed. Supports plain text, images (up to 20), a video, a document (PDF/PPT — this is how carousels are made), or a poll. Only one media type per post. Max 3,000 characters. This publishes immediately and is visible to the network, so confirm the text with the user first.

linkedin_delete_draftA

Delete a local post draft. This only affects this server's store, not LinkedIn.

linkedin_delete_notificationA

Delete a single notification, matched by a distinctive substring of its text.

linkedin_delete_postA

Permanently delete one of your own posts, along with its reactions and comments. This cannot be undone.

linkedin_delete_profile_sectionA

Permanently delete a profile entry. Addressed by zero-based index within the section — call linkedin_get_profile first to confirm you have the right one. This cannot be undone.

linkedin_edit_postA

Replace the text of an existing post. LinkedIn does not allow editing every post type — polls and some reposts are immutable, and the tool reports that clearly rather than failing silently.

linkedin_edit_profile_sectionA

Edit an existing profile entry in place. Entries are addressed by their zero-based index within the section, so call linkedin_get_profile first to see the current order. Only the fields you supply are changed.

linkedin_export_companiesA

Search companies and export the results to JSON, CSV or Markdown.

linkedin_export_connectionsA

Export connections to JSON, CSV or Markdown. For a genuinely complete archive (with emails and connection dates) prefer linkedin_request_data_export, which uses LinkedIn's official export.

linkedin_export_conversationsA

Export conversations — optionally including full message history — to JSON, CSV or Markdown.

linkedin_export_jobsA

Run a job search and export the results to JSON, CSV or Markdown — useful for building a pipeline spreadsheet or feeding another tool. Accepts the same filters as linkedin_search_jobs.

linkedin_export_postsA

Export posts (with engagement metrics) to a JSON, CSV or Markdown file — useful for analysing which content performed best.

linkedin_export_profileA

Export a full profile to a structured file (JSON, CSV or Markdown) for downstream use — archiving, feeding another tool, or handing to a resume builder.

linkedin_export_search_resultsB

Run any search and export the results to JSON, CSV or Markdown.

linkedin_find_recruitersA

Find recruiters relevant to a role or company. Each match carries a recruiterScore (0-100) and the signals behind it, so you can judge confidence rather than trusting a silent filter. LinkedIn has no "recruiter" entity type — this infers it from headline patterns.

linkedin_followA

Follow or unfollow a person. Following shows their posts in your feed without requiring a connection — useful for people who do not accept invitations.

linkedin_follow_companyA

Follow or unfollow a company page.

linkedin_forget_answerA

Delete a remembered screening-question answer, e.g. after it turns out to be wrong.

linkedin_generate_cover_letterA

Draft a cover letter grounded in the user's real profile and a specific job posting. Draws evidence from actual experience descriptions rather than inventing achievements. Reports gaps so you know what to strengthen. Rewrite the output for voice before it is sent.

linkedin_generate_resumeA

Build a structured resume from the user's actual LinkedIn profile, optionally tailored to a specific job (which reorders skills to surface relevant ones first). Every line comes from real profile data — nothing is invented. The gaps field lists what could not be sourced, which is exactly what you should ask the user about or rewrite yourself before sending it anywhere.

linkedin_get_application_historyA

List applications submitted through this server, including the answers given and any failures. For LinkedIn's own authoritative record, use linkedin_get_applied_jobs instead.

linkedin_get_applied_jobsA

Read LinkedIn's own record of jobs the user has applied to. This is authoritative, unlike linkedin_get_application_history which reflects only applications made through this server.

linkedin_get_companyA

Read a company page: description, industry, size, headquarters, founding year, specialties, follower count and website. The returned companyId is what job and people searches use for company filtering.

linkedin_get_company_employeesA

List people who work at a company, optionally filtered by job title. Useful for finding warm introductions, hiring managers, or peers in a target team.

linkedin_get_company_jobsB

List open jobs posted by a specific company.

linkedin_get_connectionsA

List the signed-in user's 1st-degree connections with names, headlines and profile links. Large networks take a while to page through, so set a realistic limit.

linkedin_get_contact_infoA

Read a profile's contact information: email, phone, websites, Twitter and birthday. LinkedIn only reveals most of these for 1st-degree connections, so expect sparse results otherwise.

linkedin_get_conversation_historyA

Read the full message history of one conversation, oldest to newest. Use this to get context before composing a reply.

linkedin_get_conversationsA

List message conversations with participants, the last message and unread status. Use this to triage the inbox before reading or replying to specific threads.

linkedin_get_followersB

List people who follow the signed-in user without necessarily being connected.

linkedin_get_followingA

List the people the signed-in user follows.

linkedin_get_hiring_teamA

Find recruiters and hiring contacts at a company, identified by title patterns. Use the results to address a cover letter to a real person or to send targeted outreach.

linkedin_get_invitationsA

List pending connection invitations — either received (awaiting your response) or sent (awaiting theirs). Returns sender names and any personalised message.

linkedin_get_jobA

Read a job posting in full: complete description, required skills (extracted from the text), salary, applicant count, employment type, experience level and the hiring team where LinkedIn shows it. Use this before applying or tailoring a resume.

linkedin_get_network_statsA

Summarise network size: connection count, follower count and pending invitation counts.

linkedin_get_notificationsA

Read LinkedIn notifications — reactions, comments, invitations, job alerts and profile views. Use unreadOnly to triage only what is new.

linkedin_get_postA

Read a single post in detail by URN, activity id or URL.

linkedin_get_post_commentsA

Read the comments on a post, in order. The returned index of each comment is what linkedin_reply_to_comment expects.

linkedin_get_postsA

Read recent posts from a profile's activity or from the home feed, including text, author, engagement metrics and post type. Use this to review what someone posts about before engaging, or to audit your own posting history.

linkedin_get_profileA

Read a complete LinkedIn profile: headline, about, experience, education, skills, certifications, projects, publications, awards, volunteering and languages. Use this before writing any profile update (so edits are grounded in what is actually there) and before tailoring a resume.

linkedin_get_profile_analyticsA

Read profile analytics: profile views, post impressions, search appearances and follower count. LinkedIn restricts several of these for non-Premium accounts, and anything unavailable is reported explicitly rather than guessed.

linkedin_get_remembered_answersA

List screening-question answers this server has remembered from previous applications, so they can be reviewed or corrected before the next batch.

linkedin_get_saved_jobsA

List the jobs the user has saved on LinkedIn.

linkedin_get_settingsA

Read LinkedIn account settings for a category (account, privacy, visibility, notifications, communications, data-privacy). Returns each setting with its current value and a direct link, since most settings must be changed manually.

linkedin_list_draftsA

List locally saved post drafts that have not yet been published.

linkedin_list_filesA

List files this server has produced or can use: previous exports and available resume/cover-letter documents. Use this to find a resume path before applying to a job, or to locate an earlier export.

linkedin_list_resumesA

List resume and cover-letter files available in the configured resume directory, with paths ready to pass to linkedin_apply_to_job.

linkedin_list_toolsA

List every tool this server exposes, grouped by category, with flags showing which are read-only, which mutate LinkedIn, and which are destructive. Useful for orienting before planning a multi-step workflow.

linkedin_manage_conversationB

Archive, unarchive, mark read/unread, or delete a conversation. Deletion is irreversible and removes the thread from your inbox only (the other party keeps their copy).

linkedin_mark_notifications_readA

Mark notifications as read. LinkedIn has no bulk API for this — the server loads and scrolls the notifications page, which is how LinkedIn itself clears the unread badge.

linkedin_message_recruitersA

Find recruiters hiring for a role and message each one, personalising from the user's profile unless a fixed message is supplied. Paces sends and stops on quota or session failures. This contacts real people on the user's behalf — always confirm the recipient list and message wording with them before invoking it.

linkedin_publish_draftA

Publish a previously saved local draft to LinkedIn. Attaches any media recorded with the draft. The draft is marked published on success.

linkedin_react_to_postA

React to a post. Defaults to a Like; celebrate/support/love/insightful/funny are also available. Calling this on an already-liked post is a no-op rather than an error.

linkedin_remove_connectionA

Remove an existing 1st-degree connection. They are not notified, but re-connecting requires a fresh invitation. This cannot be undone directly.

linkedin_remove_skillA

Remove a skill from the profile, along with any endorsements it has accumulated.

linkedin_reply_to_commentA

Reply to a specific comment on a post. Comments are addressed by zero-based index — call linkedin_get_post_comments first to see the order.

linkedin_reply_to_conversationA

Send a message into an existing conversation thread by its id.

linkedin_repostA

Repost (reshare) someone else's post. Without thoughts it reposts instantly; with thoughts it creates a new post quoting the original.

linkedin_request_data_exportA

Trigger LinkedIn's official data export. This is the only way to obtain a genuinely complete archive — connections with emails, full message history, activity logs — which scraping cannot match. LinkedIn emails a download link within minutes to 24 hours.

linkedin_resolve_locationA

Resolve a place name to LinkedIn's internal geo id/URN. Most callers do not need this — the search tools resolve locations automatically — but it is useful for building precise filters by hand.

linkedin_respond_to_invitationA

Accept or ignore a received connection invitation. Identify the sender by name or public identifier — the invitation list reorders between calls, so indexes are not used.

linkedin_save_draftA

Save post text as a local draft without publishing it. LinkedIn exposes no draft API, so drafts live in this server's local store — they are not visible in the LinkedIn UI. Use this to prepare content for review before publishing.

linkedin_save_jobA

Save a job to the user's saved list, or remove it from the list.

linkedin_save_postA

Bookmark a post to the user's saved items for later reading.

linkedin_searchA

Universal LinkedIn search across any vertical: people, jobs, companies, posts, events, groups, schools or everything at once. Use the dedicated tools (linkedin_search_jobs, linkedin_search_people, linkedin_search_companies) when you need vertical-specific filters; use this for posts, events, groups and schools, or for a broad sweep.

linkedin_search_companiesA

Search for companies by name or keyword. Use this to resolve a company name into the numeric companyId that linkedin_search_jobs and linkedin_search_people need for company filters.

linkedin_search_conversationsA

Search the message inbox by keyword or participant name.

linkedin_search_jobsA

Search LinkedIn jobs using the full filter set: keywords, location, remote/hybrid/onsite, experience level, employment type, date posted, salary band, company, industry, Easy Apply only, and more. Handles pagination automatically. This is the entry point for every job workflow — the returned jobIds feed linkedin_get_job, linkedin_save_job and linkedin_apply_to_job.

linkedin_search_peopleA

Search for people, with filters for connection degree, current/past company, school, industry, location and job title. Returns names, headlines, locations and profile identifiers. Use the identifiers with linkedin_get_profile, linkedin_send_connection_request or linkedin_send_message.

linkedin_send_connection_requestA

Send a connection request, optionally with a personalised note (max 300 characters). Notes dramatically improve acceptance rates but free accounts are limited to about 5 per month. LinkedIn also caps invitations at roughly 100/week — this server enforces a conservative daily limit to keep the account safe.

linkedin_send_messageA

Send a direct message to a person, starting a new conversation or continuing an existing one. Messaging people outside your network generally requires Premium InMail — the tool says so explicitly when that is the blocker. Max 8,000 characters.

linkedin_set_open_to_workA

Turn the "Open To Work" signal on or off. When enabling, you can specify target job titles and locations, and whether the badge is visible to everyone or only to recruiters.

linkedin_system_resetA

Clear the in-memory cache and/or restart the browser. Use this when reads seem stale after an out-of-band change, or when browser automation starts failing repeatedly.

linkedin_system_statusA

Report server health: configuration in effect, browser state, cache statistics, rate-limit quota consumption and local storage counts. Use this to diagnose slowness, unexpected refusals, or to confirm whether DRY_RUN is active before performing writes.

linkedin_update_aboutA

Replace the About (summary) section on the signed-in user's profile. Max 2,600 characters. Read the existing profile first so the rewrite keeps real facts intact.

linkedin_update_headlineA

Replace the headline on the signed-in user's profile. The headline is the single most visible field in search results, so prefer a specific role + specialism over a bare job title. Max 220 characters.

linkedin_update_locationA

Update the profile location. LinkedIn requires a location from its own list, so the value is matched against its typeahead — use a recognisable city or region name.

linkedin_update_settingA

Change one of the few settings that can be automated safely: profile-viewing-mode (how you appear when viewing others) and open-to-work-visibility. Everything else must be changed manually — LinkedIn's settings UI has no stable hooks and a mis-click has real privacy consequences.

linkedin_upload_bannerA

Upload or replace the profile background banner. LinkedIn recommends 1584x396 pixels; JPG/PNG/GIF up to 8MB.

linkedin_upload_profile_photoA

Upload or replace the profile photo. Accepts JPG, PNG or GIF up to 8MB. LinkedIn recommends a square image of at least 400x400.

linkedin_withdraw_applicationA

Withdraw a submitted job application. LinkedIn only allows this for some postings and within a limited window, so a clear "not possible" answer is a normal outcome.

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/Sabari2005/linkedin-mcp-server'

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