linkedin-mcp-pro
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LI_AT | No | LinkedIn li_at cookie value | |
| JSESSIONID | No | LinkedIn JSESSIONID cookie value | |
| LI_AT_FILE | No | Path to file containing LinkedIn li_at cookie | |
| WARMUP_ENABLED | No | Enable warmup mode | true |
| JSESSIONID_FILE | No | Path to file containing LinkedIn JSESSIONID cookie | |
| DAILY_LIMIT_POSTS | No | Daily limit for posts | 2 |
| BUSINESS_HOURS_END | No | End hour for business hours (UTC) | 20 |
| BUSINESS_HOURS_START | No | Start hour for business hours (UTC) | 9 |
| DAILY_LIMIT_CONNECTION_REQUESTS | No | Daily limit for connection requests | 20 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_my_profileA | Get the authenticated user's LinkedIn profile (name, headline, summary, current position). |
| get_person_profileA | Get a LinkedIn member's profile by their public identifier (vanity name). |
| search_peopleB | Search for LinkedIn members by keyword, with optional location and company filters. |
| search_jobsC | Search for jobs by keyword, with optional location and experience filters. |
| get_job_detailsA | Get full details for a specific job posting by its ID. |
| search_companiesC | Search for LinkedIn company pages by keyword. |
| get_company_profileC | Get a LinkedIn company page profile. |
| get_company_employeesC | List employees at a company from the /people/ page. |
| get_feedC | Get recent posts from your home feed. |
| get_inboxC | List recent conversations from your LinkedIn messaging inbox. |
| get_conversationA | Read a specific messaging conversation by participant public ID or thread URN. |
| get_pending_invitationsA | List sent connection invitations awaiting response. |
| send_connection_requestA | Send a connection request to a LinkedIn member, with optional personalized note. Subject to daily quota (default 20), warm-up ramp, business hours, and jitter. Set dry_run=true to preview without sending. |
| create_postA | Publish a new LinkedIn post (text + optional local image/video file). Subject to daily quota (default 2), warm-up, business hours, jitter. Set dry_run=true to preview. |
| delete_postA | Permanently delete one of your own posts by URL or URN. |
| comment_on_postB | Post a comment on a LinkedIn post (by URL or URN). |
| react_to_postC | Add a reaction (like, celebrate, insightful, etc.) to a post. |
| send_messageC | Send a direct message to a LinkedIn member you're connected with. |
| accept_invitationC | Accept an incoming connection invitation. |
| decline_invitationB | Decline an incoming connection invitation. |
| withdraw_invitationB | Withdraw a sent (still pending) connection invitation. |
| list_templatesA | List all saved LinkedIn post templates (name, description, tags). Templates live in ~/.linkedin-mcp/templates/ by default; override with LINKEDIN_MCP_TEMPLATES_DIR. |
| get_templateA | Return one template's full YAML document (name, body, tags, default_vars). |
| render_templateA | Render a template's body with the given variables. Built-in variables {date}, {time}, {day_of_week}, {week_number}, {month}, {year} are auto-filled. With strict=true, missing variables raise an error instead of being left verbatim. |
| save_templateA | Create or overwrite a post template. Body may contain {variable} placeholders. Tags are searchable labels; default_vars are values filled in at render time unless overridden by the caller. |
| delete_templateC | Delete a saved template by name. |
| deadman_statusA | Read-only dead-man switch check: last_post_at, days_since, status, should_alert. No side effects, no Telegram call. |
| deadman_check_and_alertA | Force a dead-man check and send a Telegram alert if status=='alert' and the 24h cooldown has elapsed. Telegram is configured via LINKEDIN_MCP_TELEGRAM_BOT_TOKEN + LINKEDIN_MCP_TELEGRAM_CHAT_ID. |
| deadman_test_alertA | Send a one-off test Telegram message (bypasses the 24h cooldown) so the operator can verify bot token + chat id are wired up. |
| list_schedulesA | List all post schedules from ~/.linkedin-mcp/schedule.yaml. |
| add_scheduleA | Add a new post schedule. Provide one of: cron (5-field), at (ISO datetime), or days+time. Provide either template (name) or text (direct body). |
| remove_scheduleB | Remove a post schedule by name. |
| enable_scheduleB | Re-enable a disabled post schedule. |
| disable_scheduleA | Disable a post schedule (keeps it in the YAML, won't run). |
| run_due_nowA | Enqueue all currently-due schedules into the action queue. The scheduler worker drains them through SafetyGuard + create_post. |
| get_daily_statsA | Get today's quota usage for all action types (used / limit / zone). |
| get_audit_logB | Get the most recent audit log entries (every action, with status and details). |
| get_post_volumeA | Per-day count of post audits in the last |
| get_post_success_rateB | Roll-up of post outcomes in the last |
| get_quota_usageA | Today's per-action-type quota usage (raw counts from daily_quotas). Caps are not joined in — use |
| get_top_posting_hoursA | Distribution of post audits by hour-of-day (0..23, UTC) over the last |
| get_top_posting_daysA | Distribution of post audits by weekday name (Monday..Sunday) over the last |
| get_recent_postsB | Most recent |
| get_analytics_summaryA | One-call roll-up: success rate, today's quota, top hour, top weekday. Read-only — no LinkedIn calls. |
| get_safety_statusA | Get the current safety gate status: config, daily/hourly usage, active pauses, cooldowns. All Tier 3 features go through this gate. |
| set_safety_configB | Update safety config. Pass any subset of: enabled, dry_run, tz, whitelist, blacklist, business_hours_start, business_hours_end, cooldown_min, cooldown_max, like_daily, comment_daily, connect_daily, feed_watch_daily, account_age_days, warmup_days, warmup_multiplier, like_hourly, comment_hourly, connect_hourly, negative_response_threshold, shadowban_pause_hours. Lists (whitelist/blacklist) are replaced entirely. |
| clear_safety_pauseA | Manually clear any active pauses (negative feedback / shadow-ban). Use this after reviewing and addressing the cause. |
| poll_feedB | Run a single poll cycle against the feed. Returns what was added, denied, and the safety gate decision. |
| build_digestC | Build a digest of the last N hours of feed activity (top posts, mentions, keyword alerts, trending, warnings). |
| get_digest_markdownB | Return the digest as Markdown text (ready to send to Telegram or email). |
| auto_like_by_keywordB | Search posts by keyword and like them through the safety gate. Defaults to dry-run. Each like is gated by daily quota (default 30/day), hourly quota (5/hr), whitelist/blacklist match, and randomized cooldown. Returns detailed per-post decisions. |
| auto_comment_by_keywordA | Search posts by keyword and comment on them through the safety gate. VERY HIGH BAN RISK: defaults to 5/day, 1/hour, requires author in 1st-degree network, blocks spam phrases, requires personalized draft. ALWAYS start with dry_run=true. |
| auto_connect_by_criteriaA | Find people matching criteria and send connection requests through the safety gate. HIGH BAN RISK: defaults to 20/day, 3/hour, requires personalized note (no blank invites), blocks recruiters/agencies by default. ALWAYS start with dry_run=true. |
| voice_to_draftA | Transcribe an audio file (mp3/m4a/wav/ogg) via Whisper, clean filler words, and produce an AI-drafted LinkedIn post. Returns draft for human review — does NOT post automatically. Requires ffmpeg + faster-whisper on host. |
| llm_list_providersA | List all configured LLM providers with status (masked keys, last test result). |
| llm_add_keyC | Add or update an LLM API key. |
| llm_remove_keyC | Remove an LLM provider's stored key. |
| llm_test_keyB | Test if a provider's key works (1-token ping). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/horizonbymuneeb/linkedin-mcp-pro'
If you have feedback or need assistance with the MCP directory API, please join our Discord server