Skip to main content
Glama
dzigi00

LinkedIn Automation MCP Server

by dzigi00
README.md
# LinkedIn Claude Automation

Full LinkedIn growth automation using Claude Code and a custom LinkedIn MCP server. Runs daily via Windows Task Scheduler with zero manual interaction required.

## What it does

Every day at 2pm automatically:
- Checks your LinkedIn inbox and replies to messages in In English (Serbian also supported) with high-quality, human-feeling responses
- Relevant, high-quality and human-feeling posts
- Sends 7 to 8 personalized connection requests
- Tracks your connection count growth daily
- Prints a full session report

On Monday, Wednesday, and Friday it also:
- Asks you for a post idea (60 second window)
- Auto-generates and publishes a post in your voice if you don't respond

## How it works

This project extends the [linkedin-scraper-mcp](https://github.com/stickerdaniel/linkedin-mcp-server) package by adding two missing tools:
- `create_post` - publishes a post to your LinkedIn profile
- `comment_on_post` - leaves a comment on any LinkedIn post

These tools use browser automation (Patchright/Chromium) to interact with LinkedIn's UI directly.

Claude Code reads a prompt file (`linkedin_daily.md`) that contains detailed instructions for the daily automation. Windows Task Scheduler fires the bat file at 2pm every day.

## Requirements

- Windows PC (always on during automation time)
- [Claude Code](https://claude.ai/code) installed
- [UV](https://astral.sh/uv) installed
- Claude Pro or API access

## Setup

### 1. Install UV

```powershell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
```

### 2. Clone and install the custom MCP

```powershell
git clone https://github.com/dzigi00/linkedin-claude-automation C:\Users\<you>\linkedin-mcp-custom
cd C:\Users\<you>\linkedin-mcp-custom
uv sync
```

### 3. Login to LinkedIn

```powershell
uv run -m linkedin_mcp_server --login
```

A browser opens. Log in to your LinkedIn account. Session is saved automatically.

### 4. Register the MCP with Claude Code

```powershell
claude mcp add linkedin -s user -- "C:\Users\<you>\.local\bin\uv.exe" "--directory" "C:\Users\<you>\linkedin-mcp-custom" "run" "-m" "linkedin_mcp_server" "--transport" "stdio"
```

### 5. Copy the automation files

Copy `linkedin_daily.md` and `run_linkedin.bat` to `C:\Users\<you>\`

Edit `linkedin_daily.md` to match your profile, niche, and content topics.

Edit `run_linkedin.bat` to replace the path with your actual username.

### 6. Schedule with Windows Task Scheduler

- Open Task Scheduler
- Create Basic Task
- Name: LinkedIn Daily
- Trigger: Daily at 2:00 PM
- Action: Start a program
- Program: `C:\Users\<you>\run_linkedin.bat`
- Start in: `C:\Users\<you>`

### 7. Customize for your profile

Before running the automation, open `linkedin_daily.md` and update these sections to match your own profile:

- **Your story** - replace the mechanic to funnel builder background with your own journey
- **Content pillars** - replace the listed topics with your own niche and expertise
- **Target audience** - update the countries, job titles, and industries you want to connect with
- **Brands and clients** - replace AICom, EcomDegree, Publishing.com with your own work history
- **Location exclusions** - update or remove the North Macedonia exclusion based on your situation
- **Voice and tone** - the casual, direct style works for most people but adjust if needed

The `linkedin_daily.md` file is the brain of the automation. Everything Claude does daily is driven by the instructions in that file. Spend 10 minutes personalizing it before your first run.

### 8. Fix: Auto-trust the working directory

By default Claude Code asks "Do you trust this folder?" every first run. To skip this permanently, run this once in PowerShell:

```powershell
$json = Get-Content "C:\Users\<you>\.claude.json" -Raw | ConvertFrom-Json
$json.projects."C:\Users\<you>".hasTrustDialogAccepted = $true
$json | ConvertTo-Json -Depth 100 | Set-Content "C:\Users\<you>\.claude.json" -Encoding utf8
```

Replace `<you>` with your actual Windows username.

## Files

- `linkedin_mcp_server/tools/posting.py` - custom create_post and comment_on_post tools
- `linkedin_daily.md` - daily automation prompt instructions
- `run_linkedin.bat` - Windows Task Scheduler script

## Credit

Built on top of [stickerdaniel/linkedin-mcp-server](https://github.com/stickerdaniel/linkedin-mcp-server). This project adds write capabilities (posting and commenting) that the original package does not include.

## License

MIT

TDQS

A3.7/5.0

Scored across 17 tools

Disambiguation5/5

Each tool targets a distinct resource and action: profiles, searches, messaging, feed, session, etc. Even the messaging-related tools (search_conversations, get_inbox, get_conversation, send_message) have clear, non-overlapping purposes. No two tools appear to do the same thing.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (get_person_profile, search_jobs, send_message, close_session). The naming is predictable and easy to infer the function of each tool. Minor variations like 'connect_with_person' still fit the overall pattern.

Tool Count4/5

With 17 tools, the server is slightly above the ideal typical range of 3-15 but not excessive. Each tool covers a distinct aspect of LinkedIn automation, so the count is justified for the scope. It feels on the heavier side but still manageable.

Completeness4/5

The tools cover the primary LinkedIn automation domains: profiles (get, search), companies (search, profile, posts, employees), jobs (search, details), messaging (search, inbox, read, send), connections (send/accept), feed, and session management. Minor gaps exist such as no explicit 'reject connection' or 'create post', but these are not core for most automation workflows. Overall, the surface is well-rounded.

Maintenance

ActivityInactive
ResponsivenessNo issues