Skip to main content
Glama
SimbioLabs

linkedit-mcp

by SimbioLabs
README.md
# linkedit-mcp

A [Model Context Protocol](https://modelcontextprotocol.io) server that lets AI assistants read and edit your LinkedIn profile — headline, about section, work experience, education, and skills.

Built by [SimbioLabs](https://github.com/SimbioLabs).

---

## Tools

| Tool | Description |
|---|---|
| `authenticate` | Start OAuth 2.0 flow — opens LinkedIn in your browser |
| `logout` | Clear stored session tokens |
| `get_profile` | Read name, headline, about, email, and vanity URL |
| `update_headline` | Update your LinkedIn headline (max 220 chars) |
| `update_about` | Update your About / summary section (max 2600 chars) |
| `get_experience` | List all work experience entries |
| `add_experience` | Add a new position |
| `update_experience` | Edit an existing position |
| `delete_experience` | Remove a position |
| `get_education` | List all education entries |
| `add_education` | Add a new education entry |
| `update_education` | Edit an existing education entry |
| `delete_education` | Remove an education entry |
| `get_skills` | List all skills |
| `add_skill` | Add a skill |
| `remove_skill` | Remove a skill |

---

## Setup

### 1. Create a LinkedIn Developer App

1. Go to [LinkedIn Developer Portal](https://www.linkedin.com/developers/apps) and create a new app.
2. Under **Auth**, add `http://localhost:3000/callback` as an OAuth 2.0 redirect URL.
3. Under **Products**, request access to **Sign In with LinkedIn using OpenID Connect** (provides `r_liteprofile`, `r_emailaddress`).
4. Copy your **Client ID** and **Client Secret**.

> **Note on profile write access:** The `update_headline`, `update_about`, `add_experience`, `add_education`, and skill tools use LinkedIn's profile write API, which requires your app to have the **LinkedIn Partner Program** permissions (`w_member_social` is open, but full profile write requires partner approval). Check [LinkedIn API access levels](https://learn.microsoft.com/en-us/linkedin/shared/authentication/getting-access) for details.

### 2. Configure environment

```bash
cp .env.example .env
```

Edit `.env` with your credentials:

```env
LINKEDIN_CLIENT_ID=your_client_id_here
LINKEDIN_CLIENT_SECRET=your_client_secret_here
LINKEDIN_REDIRECT_URI=http://localhost:3000/callback
```

### 3. Install and build

```bash
npm install
npm run build
```

### 4. Add to Cursor / Claude Desktop

In your MCP config (e.g. `~/.cursor/mcp.json` or `claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "linkedit": {
      "command": "node",
      "args": ["/absolute/path/to/linkedit-mcp/dist/index.js"],
      "env": {
        "LINKEDIN_CLIENT_ID": "your_client_id",
        "LINKEDIN_CLIENT_SECRET": "your_client_secret",
        "LINKEDIN_REDIRECT_URI": "http://localhost:3000/callback"
      }
    }
  }
}
```

### 5. Authenticate

In your AI assistant, run:

```
authenticate
```

A browser window will open. Approve the LinkedIn permissions, then return to your assistant — you're ready.

---

## Example usage

```
Update my LinkedIn headline to "Founder @ SimbioLabs | Building AI-native products"
```

```
Add a new job: Software Engineer at Acme Corp, Jan 2022 to Mar 2024, describe it as leading backend infrastructure for a B2B SaaS platform
```

```
Add my MBA from Stanford Graduate School of Business, 2019–2021
```

---

## Token storage

Tokens are stored locally at `~/.linkedit-mcp/tokens.json`. They are never sent anywhere other than LinkedIn's OAuth endpoints. Use `logout` to clear them at any time.

---

## Development

```bash
npm run dev   # watch mode
npm start     # run compiled server
```

---

## License

MIT — [SimbioLabs](https://github.com/SimbioLabs)

TDQS

A3.6/5.0

Scored across 10 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: authentication, profile/skills retrieval, experience CRD, and specific profile updates. No two tools overlap in function.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern with underscores (e.g., add_experience). Two tools (authenticate, logout) are single verbs, but this deviation is minor and does not cause confusion.

Tool Count5/5

With 10 tools, the server is well-scoped for managing a LinkedIn profile. Each tool serves a necessary function without redundancy.

Completeness2/5

Significant gaps exist: there is no update_experience tool (only add and delete) and no add_skill tool (only remove). These omissions limit the ability to fully manage the profile.

Maintenance

ActivityInactive
ResponsivenessNo issues