Skip to main content
Glama
LinkedIn MCP Server

LinkedIn MCP Server

LinkedIn MCP Server

A comprehensive, containerized Model Context Protocol (MCP) server for LinkedIn. This professional-grade server allows large language models and agents to interact with LinkedIn's official REST API seamlessly. It provides granular tools to manage user profiles, handle network connections, author posts, and oversee organizations.

πŸš€ Key Features

The project leverages a highly modular architecture, making it easy to extend and maintain:

  • πŸ‘€ Profile Management (src/tools/profile)

    • Retrieve authenticated user profile information (get_my_profile).

  • πŸ“ Content Creation (src/tools/content)

    • Share simple text updates to the user's feed (create_text_post).

    • Share rich articles with URL and descriptive commentary (create_article_post).

  • πŸ”— Network Management (src/tools/network)

    • View and list 1st-degree connections (get_connections) (requires r_network permission).

  • 🏒 Organization Management (src/tools/organization)

    • List the company pages and organizations you administer (get_organizations).

Related MCP server: LinkedIn MCP Server

πŸ“‹ Prerequisites

To run this server, you will need:

  1. LinkedIn Developer Account: An application registered in the LinkedIn Developer Portal.

  2. Access Token: An OAuth 2.0 Access Token with necessary scopes (e.g., w_member_social, r_liteprofile, r_organization_admin).

  3. Docker (Optional but recommended for robust execution).

  4. Node.js v20+ (Required if running natively without Docker).


πŸ› οΈ Installation & Setup

Containerization ensures the MCP server runs consistently regardless of your environment.

  1. Build the Docker image:

    docker build -t linkedin-mcp-server .
  2. Configure your MCP client (e.g., mcp.json for Claude Desktop):

    {
      "mcpServers": {
        "linkedin": {
          "command": "docker",
          "args": [
            "run",
            "-i",
            "--rm",
            "-e",
            "LINKEDIN_ACCESS_TOKEN=your_linkedin_access_token_here",
            "linkedin-mcp-server"
          ]
        }
      }
    }

Option B: Running Locally

  1. Install dependencies:

    npm install
  2. Build the TypeScript code:

    npm run build
  3. Configure your MCP client:

    {
      "mcpServers": {
        "linkedin": {
          "command": "node",
          "args": ["/absolute/path/to/Linekedin_MCP_server/build/index.js"],
          "env": {
            "LINKEDIN_ACCESS_TOKEN": "your_linkedin_access_token_here"
          }
        }
      }
    }

πŸ” Available Tools Reference

  • get_my_profile: Fetches the currently authenticated user's profile details.

  • create_text_post: Posts a plain-text status update on the LinkedIn feed.

  • create_article_post: Shares a URL to an article with a customized title and description.

  • get_connections: Retrieves 1st-degree connections.

  • get_organizations: Gets a list of LinkedIn pages/organizations that the authenticated user manages.


πŸ›‘οΈ Troubleshooting

  • 401 Unauthorized: Ensure your LINKEDIN_ACCESS_TOKEN is correct, well-formed, and has not expired.

  • 403 Forbidden: Your LinkedIn App lacks the necessary permissions for the endpoint. Check your app's authorized "Products" in the LinkedIn Developer Portal and ensure your token includes the right scopes.

πŸ“ Architecture

The project is split cleanly into isolated modules:

  • src/index.ts: The MCP Server entry point.

  • src/linkedin-client.ts: The robust API wrapper using axios.

  • src/tools/*: Directory containing individually exported toolsets.

Available Tools

5 tools
create_article_postB

Share an article with a URL and description.

Inputs: text (required), articleUrl (required), articleTitle (required), articleDescription.

create_text_postC

Share a simple text update on the user's feed.

Inputs: text (required).

get_connectionsA

List the user's 1st-degree connections (requires r_network permission).

Inputs: limit.

get_my_profileB

Retrieve the authenticated user's LinkedIn profile information.

Inputs: no named parameters.

get_organizationsA

List organizations the user administers.

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 5 tools

    Disambiguation5/5

    Each tool has a clear and distinct purpose: two for posting (article vs text), three for retrieval (connections, profile, organizations). No overlap or ambiguity.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern (create_*, get_*), making the API predictable and easy to navigate.

    Tool Count4/5

    5 tools is slightly lean for a social network API, but covers essential profile and posting operations. The set feels focused rather than incomplete.

    Completeness3/5

    Core operations are present (post, retrieve profile/connections/organizations), but notable gaps exist such as updating or deleting posts, commenting, or searching.

    Related MCP Connectors

    Related MCP Servers