Skip to main content
Glama
aarnav-hariramani

LinkedIn MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LINKEDIN_HOSTNoLoopback HTTP bind address127.0.0.1
LINKEDIN_PATHNoHTTP endpoint path/mcp
LINKEDIN_PORTNoHTTP port8000
LINKEDIN_SLOW_MONoBrowser action delay in milliseconds0
LINKEDIN_TIMEOUTNoBrowser timeout in milliseconds10000
LINKEDIN_HEADLESSNoRun without a visible browsertrue
LINKEDIN_LOG_LEVELNoLog level: DEBUG, INFO, WARNING, or ERRORWARNING
LINKEDIN_TRANSPORTNoTransport mode: stdio or streamable-httpstdio
LINKEDIN_USER_AGENTNoOptional browser user agent
LINKEDIN_CHROME_PATHNoOptional Chromium executable
LINKEDIN_USER_DATA_DIRNoPersistent browser profile directory~/.linkedin-mcp-server/browser-data
LINKEDIN_VIEWPORT_WIDTHNoBrowser viewport width1280
LINKEDIN_VIEWPORT_HEIGHTNoBrowser viewport height720

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": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_person_profileA

Get a specific person's LinkedIn profile.

Args: linkedin_username: LinkedIn username (e.g., 'satyanadella', 'jeffweiner08') sections: Comma-separated list of extra sections to scrape. The main profile page is always included. Available sections: experience, education, interests, honors, languages, contact_info, posts Default (None) scrapes only the main profile page.

search_peopleB

Search for people on LinkedIn.

Args: keywords: Search keywords (e.g., 'product manager', 'ML engineer at Meta') location: Optional location filter (e.g., 'London', 'Berlin')

send_connection_requestA

Preview or send a LinkedIn connection request without a note. The default confirm=false performs no write and reports whether the profile is ready, already connected, or already pending. Set confirm=true only after verifying the exact profile. This tool never adds a note.

Args: linkedin_username: Exact LinkedIn profile username/slug. confirm: Must be true to actually send the invitation.

get_company_profileA

Get a specific company's LinkedIn profile.

Args: company_name: LinkedIn company name (e.g., 'google', 'stripe', 'openai') sections: Comma-separated list of extra sections to scrape. The about page is always included. Available sections: posts, jobs Default (None) scrapes only the about page.

get_company_postsB

Get recent posts from a company's LinkedIn feed.

Args: company_name: LinkedIn company name (e.g., 'google', 'stripe', 'openai')

get_job_detailsB

Get job details for a specific job posting on LinkedIn.

Args: job_id: LinkedIn job ID (e.g., '3912045678', '4108763210')

search_jobsA

Search for jobs on LinkedIn.

Returns job_ids that can be passed to get_job_details for full info.

Args: keywords: Search keywords (e.g., 'backend developer', 'devops engineer') location: Optional location filter (e.g., 'Austin', 'Singapore') max_pages: Maximum number of result pages to load (1-10, default 3) date_posted: Filter by posting date (past_hour, past_24_hours, past_week, past_month) job_type: Filter by job type, comma-separated (full_time, part_time, contract, temporary, volunteer, internship, other) experience_level: Filter by experience level, comma-separated (internship, entry, associate, mid_senior, director, executive) work_type: Filter by work type, comma-separated (on_site, remote, hybrid) easy_apply: Only show Easy Apply jobs (default false) sort_by: Sort results (date, relevance)

close_browserA

Close the browser instance and release resources. Credentials are preserved.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 8 tools

Disambiguation4/5

Each tool targets a distinct resource (people, companies, jobs, browser lifecycle), and search vs. detail operations are clearly separated. Minor overlap exists where get_company_profile can fetch posts via sections, duplicating get_company_posts.

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern: search_*, get_*, send_*, close_*. The naming is predictable and makes the resource and action immediately clear.

Tool Count5/5

Eight tools is a well-scoped set for a LinkedIn API covering people, companies, jobs, and connection actions. Each tool serves a distinct purpose without bloat.

Completeness4/5

The main workflows are covered: search people, view profiles, send connection requests, search jobs, get job details, and view company info/posts. Minor gaps exist, such as no company search, no connection request with a note, and no direct 'view my profile' tool.

Maintenance

ActivityMaintained
ResponsivenessNo issues