JUHE API Marketplace
francisco-perez-sorrosal avatar
MCP Server

LinkedIn MCP Server

Enables Claude to access and analyze LinkedIn profile data through the Model Context Protocol, allowing users to query their LinkedIn information directly within Claude Desktop.

0
GitHub Stars
8/23/2025
Last Updated
MCP Server Configuration
1{
2 "name": "linkedin_francisco_perez_sorrosal",
3 "command": "uv",
4 "args": [
5 "run",
6 "--with",
7 "mcp[cli]",
8 "--with",
9 "pymupdf4llm",
10 "mcp",
11 "run",
12 "src/linkedin_mcp_server/main.py",
13 "--transport",
14 "streamable-http"
15 ]
16}
JSON16 lines

README Documentation

LinkedIn MCP Server with Anthropic Integration

A Python-based MCP (Model Context Protocol) server that gets stuff from your LinkedIn profile and integrates with the Anthropic API for potential analysis tasks. This project follows the src layout for Python packaging.

TL;DR Install for Claude Desktop Access to the LinkedIn profile

# 1.a) Install the mcp server access in Claude Desktop
./install_claude_desktop_mcp.sh

# 1.b) or manually integrate this JSON snippet to the `mcpServers` section of your `claude_desktop_config.json` (e.g. `~/Library/Application\ Support/Claude/claude_desktop_config.json`)

{
  "linkedin_francisco_perez_sorrosal": {
    "command": "npx",
    "args": ["mcp-remote", "http://localhost:10000/mcp"]
  }
}

# 2) Restart Claude and check that the 'Add from linkedin_francisco_perez_sorrosal` option is available in the mcp servers list

# 3) Query the LinkedIn profile served from the mcp server in Claude Desktop!

e.g. TODO

Features

  • Serves your LinkedIn profile from the project root
  • Built with FastAPI for high performance and with Pixi for dependency management and task running
  • Source code organized in the src/ directory
  • Includes configurations for:
    • Docker (optional, for containerization)
    • Linting (Ruff, Black, iSort)
    • Formatting
    • Type checking (MyPy)

Prerequisites

  • Python 3.11+
  • Pixi (for dependency management and task execution)
  • Docker (optional, for containerization)
  • Access to your LinkedIn profile

Project Structure

.
├── .dockerignore
├── .gitignore
├── Dockerfile
├── pyproject.toml    # Python project metadata and dependencies (PEP 621)
├── README.md
├── src/
│   └── linkedin_mcp_server/
│       ├── __init__.py
│       └── main.py     # FastAPI application logic
├── tests/             # Test files (e.g., tests_main.py)

Setup and Installation

  1. Clone the repository (if applicable) or ensure you are in the project root directory.

  2. Install dependencies using Pixi:

This command will create a virtual environment and install all necessary dependencies:

pixi install

Running the Server

Pixi tasks are defined in pyproject.toml:

mcps (MCP Server)

pixi run mcps --transport stdio

Development Mode (with auto-reload)

# Using pixi directly
pixi run mcps --transport stdio  # or sse, streamable-http

# Alternatively, using uv directly
uv run --with "mcp[cli]" mcp run src/linkedin_mcp_server/main.py --transport streamable-http

# Go to http://127.0.0.1:10000/mcp

The server will start at http://localhost:10000. It will automatically reload if you make changes to files in the src/ directory.

MCP Inspection Mode

# Using pixi
DANGEROUSLY_OMIT_AUTH=true  npx @modelcontextprotocol/inspector pixi run mcps --transport stdio

# Direct execution
DANGEROUSLY_OMIT_AUTH=true npx @modelcontextprotocol/inspector pixi run python src/linkedin_mcp_server/main.py --transport streamable-http

This starts the inspector for the MCP Server.

Web scrapper

pixi run python src/linkedin_mcp_server/web_scrapper.py   

Development Tasks

Run Tests

pixi run test

Lint and Check Formatting

pixi run lint

Apply Formatting and Fix Lint Issues

pixi run format

Build the Package

Creates sdist and wheel in dist/:

pixi run build

Docker Support (Optional)

Build the Docker Image

docker build -t linkedin-mcp-server .

Run the Docker Container

TODO: Rewrite this if necessary. Docker support not yet done.

MCP Server Configuration

Local Configuration for Claude Desktop

{
  "linkedin_francisco_perez_sorrosal": {
    "command": "uv",
    "args": [
      "run",
      "--with", "mcp[cli]",
      "--with", "pymupdf4llm",
      "mcp", "run",
      "src/linkedin_mcp_server/main.py",
      "--transport", "streamable-http"
    ]
  }
}

Remote Configuration for Claude Desktop

For connecting to a remote MCP server:

{
  "linkedin_francisco_perez_sorrosal": {
    "command": "npx",
    "args": ["mcp-remote", "http://localhost:10000/mcp"]
  }
}

Note: Update the host and port as needed for your deployment.

Currently I'm using render.com to host the MCP server. The configuration is in the config/claude.json file.

Render requires requirements.txt to be present in the root directory. You can generate it using:

uv pip compile pyproject.toml > requirements.txt

Also requires runtime.txt to be present in the root directory with the Python version specified:

python-3.11.11

Remember also to set the environment variables in the render.com dashboard:

TRANSPORT=sse
PORT=1000

Then you can query in Claude Desktop using the linkedin_mcp_fps MCP server to get info from job ids. Combined with the functionality provided by the MCP Server serving my CV you can ask things like this:

Get a list of new jobs from linkedin (2 pages) for a research engineer position in ml/ai in San Francisco, take the last job id from that list, retrieve its metadata, show its content formatted properly, and finally adapt Francisco's CV to the job's description retrieved.

or simply:

Adapt Francisco's CV to the latest job retrieved

# or

Adapt Francisco's CV to the first two retrieved job ids

or, as a recruiter, get your posted LinkedIn job id and write:

Adapt Francisco's CV to this job id 4122691570

License

This project is licensed under the MIT License. See pyproject.toml (See LICENSE file) for details.

Quick Install

Quick Actions

Key Features

Model Context Protocol
Secure Communication
Real-time Updates
Open Source