Skip to main content
Glama
iamvaibhav31

linkedin-mcp

by iamvaibhav31

LinkedIn MCP Server — Remote Edition (Claude + ChatGPT)

An MCP server exposing LinkedIn actions, reachable from both Claude and ChatGPT as a custom connector. Runs over HTTP (not stdio) because ChatGPT only supports remote, HTTPS-reachable MCP servers — it cannot launch a local script the way Claude Desktop can.

What this can and can't do

LinkedIn's public API does not expose any endpoint for a third-party app to write directly to a profile's About, Experience, or Projects sections — for any account type. That's a platform restriction, not something this code can work around without violating LinkedIn's User Agreement (browser automation/credential scraping), which this project does not do.

Tool

What it does

get_my_profile

Reads your name, email, photo via OpenID Connect

create_post

Publishes a text or link post to your feed

generate_resume_pdf

Builds a PDF from structured About/Experience/Projects data, formatted for LinkedIn's own Import Resume feature

generate_resume_pdf is the practical route to "updating" Experience/Education: LinkedIn auto-parses a resume PDF and pre-fills those sections for review. About and Projects aren't reliably auto-parsed — the PDF still includes them clearly labeled so you have polished text ready to paste in manually.

Related MCP server: linkedin-mcp-pro

Two tokens, don't mix them up

  1. LINKEDIN_ACCESS_TOKEN — LinkedIn's own OAuth token. This server uses it to call LinkedIn's API on your behalf. Obtained once via auth_setup.py.

  2. MCP_BEARER_TOKEN — a secret you generate (e.g. openssl rand -hex 32). Claude and ChatGPT send this as Authorization: Bearer <token> on every call. Without it, anyone who finds your server's URL could post to your LinkedIn or read your profile. Treat it like a password.

1. LinkedIn app setup

  1. Create an app: https://www.linkedin.com/developers/apps

  2. Auth tab → add redirect URL: http://localhost:8765/callback

  3. Products tab → request:

    • Sign In with LinkedIn using OpenID Connect (auto-approved)

    • Share on LinkedIn (auto-approved)

  4. Copy the Client ID / Secret from the Auth tab.

2. Local setup & one-time LinkedIn auth

python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
# fill in LINKEDIN_CLIENT_ID, LINKEDIN_CLIENT_SECRET, and set a random MCP_BEARER_TOKEN
python auth_setup.py   # opens browser, completes LinkedIn OAuth, saves LINKEDIN_ACCESS_TOKEN to .env

3. Deploy it somewhere public

Both Claude and ChatGPT need to reach this server over HTTPS — localhost won't work for either unless you tunnel it. Pick one:

Quick test (ngrok tunnel, temporary URL):

python server.py                    # starts on http://0.0.0.0:8000
ngrok http 8000                     # gives you a temporary https:// URL

Permanent (Docker, deploy to Render/Fly.io/Railway/any host that runs containers):

docker build -t linkedin-mcp .
docker run -p 8000:8000 --env-file .env linkedin-mcp

Point that platform's generated HTTPS domain at container port 8000, path /mcp.

A Procfile is also included for platforms that build directly from source (Railway, Heroku-style) without a Dockerfile.

Your MCP endpoint URL will be: https://<your-domain>/mcp

4. Connect it to Claude

Claude.ai / Claude Desktop → Settings → Connectors → Add custom connector:

  • URL: https://<your-domain>/mcp

  • Authorization: Bearer token → paste your MCP_BEARER_TOKEN

5. Connect it to ChatGPT

ChatGPT → Settings → Apps & Connectors → Advanced settings → enable Developer mode (requires Plus/Pro/Business/Enterprise) → Add custom connector:

  • URL: https://<your-domain>/mcp

  • Authentication: choose token/API key auth → paste your MCP_BEARER_TOKEN

  • In a new chat, open the + menu → Developer mode → toggle this connector on for that conversation (ChatGPT enables connectors per-conversation).

Using generate_resume_pdf

generate_resume_pdf(
    output_path="/tmp/resume.pdf",
    full_name="Vaibhav Sharma",
    headline="Frontend / Full-Stack Developer",
    email="you@example.com",
    phone="+91-XXXXXXXXXX",
    location="Bengaluru, India",
    about="Frontend/full-stack developer specializing in AI-powered conversational...",
    experience=[{
        "title": "Frontend Developer",
        "company": "Kapture CRM",
        "location": "Bengaluru, India",
        "start_date": "Jan 2024",
        "end_date": "Present",
        "bullets": [
            "Built and shipped the Vitos AI voice/chat agent builder UI end-to-end",
            "Normalized Redux state using createEntityAdapter across the Vitos state tree",
        ],
    }],
    projects=[{
        "name": "Shifra",
        "description": "Voice-controlled AI assistant built with xAI's Grok API.",
        "tech": ["React", "TypeScript", "Grok API", "Vercel"],
    }],
    skills=["React", "TypeScript", "Redux", "Node.js"],
)

Then: LinkedIn → Me → View Profile → Enhance profile → Import resume, review the auto-filled Experience/Education, and paste the About/Projects text manually. Since the file lands wherever the server runs, ask Claude/ChatGPT to send you the generated PDF or point output_path somewhere you can retrieve it (e.g. a synced folder), depending on how you've deployed the server.

Files

  • server.py — remote MCP server (streamable-http + bearer auth) + tool definitions

  • linkedin_client.py — LinkedIn REST API wrapper (userinfo, posts)

  • resume_builder.py — reportlab-based resume PDF generator

  • auth_setup.py — one-time OAuth2 flow to obtain a LinkedIn access token

  • Dockerfile / Procfile — deployment

  • .env.example — credential template

linkedIn-mcp

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    D
    maintenance
    An intelligent bridge between Claude and LinkedIn. This MCP server empowers Claude to act as your high-level career consultant, capable of auditing your profile, optimizing your identity, and managing your professional content with real-time API access.
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Self-hosted, ban-safe MCP server for LinkedIn that provides 22 tools for profiles, search, jobs, posts, connections, and messages. Integrates with any MCP-compatible client like Claude Desktop.
    58
    1
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    LinkedIn MCP server for Claude to create posts, read profile, and get analytics.
    24
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

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/iamvaibhav31/linkedIn-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server