Files

135 lines
6.3 KiB
JSON

{
"id": "linkedin",
"name": "LinkedIn",
"type": "mcp_local",
"scope": "user",
"launch_command": "python3 server.py",
"transport": "stdio",
"requires": [
"PYTHON",
"ENV"
],
"dependencies": [
"mcp-server-linkedin==4.20.1"
],
"env": [
{
"name": "LINKEDIN_LI_AT",
"label": "LinkedIn session cookie (li_at)",
"description": "Sign in to LinkedIn in your browser, then open DevTools > Application > Cookies > https://www.linkedin.com and copy the VALUE of the li_at cookie. This is a full credential for your account: anyone holding it is signed in as you. Signing out of that browser invalidates it.",
"required": true,
"secret": true,
"example": "AQEDAT...."
},
{
"name": "LINKEDIN_USER_AGENT",
"label": "Browser user agent (recommended)",
"description": "The user agent of the browser you copied the cookie from — paste what navigator.userAgent prints in that browser's console. LinkedIn ties a session to the browser fingerprint it was issued to, so matching it makes the session far less likely to be challenged.",
"required": false,
"secret": false,
"example": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36"
},
{
"name": "LINKEDIN_JSESSIONID",
"label": "JSESSIONID cookie (optional)",
"description": "The JSESSIONID cookie from the same browser. Not required — supply it only if some actions are refused without it.",
"required": false,
"secret": true,
"example": "ajax:1234567890123456789"
},
{
"name": "LINKEDIN_TOOL_TIMEOUT",
"label": "Tool timeout (seconds)",
"description": "Max time one LinkedIn tool call may run before being aborted. Page scrapes are slower than API calls; raise this if searches time out. Default: 180.",
"required": false,
"secret": false,
"default": "180",
"example": "180"
},
{
"name": "LINKEDIN_LOG_LEVEL",
"label": "Log level",
"description": "Verbosity of the server's own diagnostics on stderr. Raise to DEBUG when troubleshooting a session that will not authenticate. Default: WARNING.",
"required": false,
"secret": false,
"default": "WARNING",
"example": "WARNING"
}
],
"verify": {
"command": "python3 verify.py",
"timeout_secs": 30
},
"setup_instructions": [
"Skald installs the dependencies automatically (pip install -r requirements.txt).",
"Sign in to LinkedIn in your normal browser.",
"Open DevTools (F12) > Application > Cookies > https://www.linkedin.com, find li_at and copy its value into the form. Copy the value only, without the 'li_at=' prefix.",
"Recommended: in the same browser's console run navigator.userAgent and paste the result into the user agent field, so the session is replayed under the fingerprint it was issued to.",
"Skald checks the cookie against LinkedIn before saving; an expired or mistyped cookie is rejected while the form is still open.",
"On the first tool call the connector downloads its own Chromium (~350 MB) into browsers/ and replays the session into a browser profile derived for this machine.",
"The cookie is invalidated when you sign out of the browser you copied it from, and expires on its own after some months — paste a fresh one when tools start failing to authenticate."
],
"docs": [
{
"lang": "en",
"description": "Read and act on LinkedIn through your own logged-in session: people and company profiles, job search and details, saved jobs, the feed, post search, and the full messaging inbox (read, search and send). Runs a real headless Chromium against linkedin.com rather than an API, so it sees exactly what you see, and authenticates from a session cookie you paste into the settings — no browser window ever opens on the server. Note that automating LinkedIn is against its Terms of Service and carries a real risk of account restriction; use an account you are willing to lose.",
"llm_short_description": "LinkedIn — search and read people, companies, jobs and posts, browse the feed, and read, search and send messages, all through the user's own LinkedIn session."
}
],
"tools": [
{ "name": "get_person_profile", "display_name": "Get Person Profile" },
{ "name": "get_my_profile", "display_name": "Get My Profile" },
{ "name": "search_people", "display_name": "Search People" },
{ "name": "get_sidebar_profiles", "display_name": "Get Suggested Profiles" },
{ "name": "connect_with_person", "display_name": "Send Connection Request" },
{ "name": "get_company_profile", "display_name": "Get Company Profile" },
{ "name": "search_companies", "display_name": "Search Companies" },
{ "name": "get_company_posts", "display_name": "Get Company Posts" },
{ "name": "get_company_employees", "display_name": "List Company Employees" },
{ "name": "search_jobs", "display_name": "Search Jobs" },
{ "name": "get_job_details", "display_name": "Get Job Details" },
{ "name": "get_saved_jobs", "display_name": "Get Saved Jobs" },
{ "name": "get_feed", "display_name": "Get Feed" },
{ "name": "search_posts", "display_name": "Search Posts" },
{ "name": "get_inbox", "display_name": "Get Inbox" },
{ "name": "get_conversation", "display_name": "Read Conversation" },
{ "name": "search_conversations", "display_name": "Search Messages" },
{ "name": "send_message", "display_name": "Send Message" },
{ "name": "close_session", "display_name": "Close Browser Session" }
],
"mcp_config": {
"command": "python3",
"args": [
"server.py"
],
"transport": "stdio",
"env": {
"LINKEDIN_LI_AT": "{SECRET:LINKEDIN_LI_AT}",
"LINKEDIN_JSESSIONID": "{SECRET:LINKEDIN_JSESSIONID}",
"LINKEDIN_USER_AGENT": "{ENV:LINKEDIN_USER_AGENT}",
"TOOL_TIMEOUT": "{ENV:LINKEDIN_TOOL_TIMEOUT}",
"LOG_LEVEL": "{ENV:LINKEDIN_LOG_LEVEL}"
}
},
"auth": {
"type": "api_key",
"delivery": "env",
"param": "LINKEDIN_LI_AT"
},
"homepage": "https://github.com/stickerdaniel/linkedin-mcp-server",
"icon_small": "icon_sm.png",
"icon_large": "icon_lg.png",
"tags": [
"linkedin",
"mcp",
"local",
"social",
"jobs",
"messaging",
"browser"
],
"version": 1,
"version_string": "1.0.0",
"version_release_date": "2026-08-07"
}