LinkedIn MCP Pro Max
Integrates OpenAI's API for AI-powered content generation, used to create LinkedIn posts, resumes, and cover letters.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@LinkedIn MCP Pro Maxsearch for data scientist jobs at Google"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Quick Start
1. Prerequisites
Ensure you have uv installed:
curl -LsSf https://astral.sh/uv/install.sh | sh2. Installation & Setup
Method A: Automated Setup (Recommended)
chmod +x scripts/setup.sh
./scripts/setup.shThe script handles dependency syncing, .env bootstrapping, and stealth browser provisioning.
Method B: Manual Setup
uv sync
uv run python -m patchright install chromium
cp .env.example .envEdit .env with your LinkedIn credentials:
LINKEDIN_EMAIL="your-email@example.com"
LINKEDIN_PASSWORD="your-secure-password"
LINKEDIN_USERNAME="your-profile-slug"4. First-Run Authentication
uv run linkedin-mcp-pro-max --login5. Connect to Claude Desktop (or any MCP client)
Add to your claude_desktop_config.json:
{
"mcpServers": {
"linkedin-mcp-pro-max": {
"command": "/home/naimul/.local/bin/uv",
"args": [
"--directory",
"/home/naimul/linkedin-mcp-pro-max",
"run",
"linkedin-mcp-pro-max"
]
}
}
}Related MCP server: LinkedIn Profile MCP Server
The MCP Toolkit (14 Unified Tools)
Category | Tool | Actions | Description |
Profile |
|
| Manage deep profile data, AI analysis, and identity updates |
|
| Manage professional experience entries | |
|
| Manage education entries | |
|
| Manage skills on your profile | |
| - | Get detailed corporate metadata and insights | |
Jobs & Intel |
|
| Discover, analyze, and apply for job postings |
|
| Manage internal job application tracking | |
Content |
| - | Publish AI-generated posts autonomously |
|
| Engage with feed posts via URL | |
Documents |
| - | Generate a professional resume from your profile |
| - | Target your resume to match a specific Job ID | |
| - | Create a personalized contextual cover letter | |
| - | View all available document templates | |
System |
|
| Manage the MCP server lifecycle |
Architecture
Built on Clean Architecture with a one-way dependency rule and a Unified Component Registry that eliminates all manual wiring.
[tools/] → [services/] → [browser/actors/ + browser/scrapers/]
ctx.my_svc manager.my_actor / manager.my_scraperDirectory Structure
src/
├── app.py # Composition root — auto-wires from registry
├── helpers/
│ └── registry.py # Unified discovery engine (ServiceMeta, ActorMeta, ScraperMeta)
├── tools/ # MCP tool definitions (@mcp.tool) — auto-discovered
├── services/ # Business logic layer — auto-wired via SERVICE markers
├── browser/
│ ├── actors/ # Write operations (UI interaction) — auto-registered
│ ├── scrapers/ # Read operations (data extraction) — auto-registered
│ ├── manager.py # Orchestrator — auto-instantiates actors/scrapers
│ └── helpers/ # Low-level browser utilities (driver, sniffer, dom)
├── api/ # LinkedIn internal API client
├── db/ # Database repositories
├── schema/ # Pydantic domain models
├── config/ # Settings and environment
└── providers/ # AI provider wrappers (OpenAI, Claude)The Zero-Config Flow
At startup, helpers/registry.py scans services/, browser/actors/, and browser/scrapers/ automatically:
discover_all()
├── services/*.py → SERVICE = ServiceMeta(...) → injected into AppContext
├── browser/actors/* → ACTOR = ActorMeta(...) → instantiated in BrowserManager
└── browser/scrapers/ → SCRAPER = ScraperMeta(...) → instantiated in BrowserManagerNo manual registration. No editing app.py or manager.py.
Adding New Features
For the complete development pipeline, debugging guide, and working examples, see the Tool Development Guide.
A full feature (scraper + service + tool) requires exactly 3 new files. No existing file is modified.
1. Browser Scraper — src/browser/scrapers/my_feature.py
from helpers.registry import ScraperMeta
class MyFeatureScraper:
def __init__(self, page): ...
async def scrape(self): ...
SCRAPER = ScraperMeta(attr="my_feature_scraper", cls=MyFeatureScraper)2. Service — src/services/my_feature.py
from helpers.registry import ServiceMeta
class MyFeatureService:
def __init__(self, browser=None): ...
async def do_work(self): ...
SERVICE = ServiceMeta(attr="my_feature", cls=MyFeatureService, deps=["browser"], lazy=True)3. Tool — src/tools/my_feature.py
from app import mcp, get_ctx
@mcp.tool()
async def my_feature_tool(param: str) -> str:
"""Description the AI reads to decide when to use this tool."""
ctx = await get_ctx()
await ctx.initialize_browser()
result = await ctx.my_feature.do_work()
return json.dumps(result)app.py, manager.py, services/__init__.py, tools/__init__.py — never touched.
uv run linkedin-mcp-pro-max # Start MCP server
uv run linkedin-mcp-pro-max --login # Autonomous headless login
uv run linkedin-mcp-pro-max --status # Check authentication status
uv run linkedin-mcp-pro-max --logout # Clear session and cookiesDocumentation
Document | Description |
Full pipeline: creating tools, services, actors, scrapers. Debugging guide. | |
Service layer conventions and dependency rules | |
Actor conventions and browser interaction patterns | |
Pydantic model conventions |
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/mdnaimul22/linkedin-mcp-pro-max'
If you have feedback or need assistance with the MCP directory API, please join our Discord server