Unipile LinkedIn MCP Server
A fully-featured Model Context Protocol (MCP) server for the Unipile LinkedIn API. Enables AI assistants to interact with LinkedIn for search, messaging, connections, and Sales Navigator features.
Features
- LinkedIn Search - People, companies, and posts search with Classic and Sales Navigator filters
- Profile Management - View profiles, company pages, and your own profile
- Connections - Send/accept/decline invitations, list connections
- Messaging - List chats, send messages, start conversations
- InMail - Send InMail to non-connections (Premium/Sales Navigator)
- Sales Navigator - Advanced filters like tenure, seniority, company headcount
Installation
Using uvx (recommended)
uvx unipile-linkedin-mcp
Using pip
pip install unipile-linkedin-mcp
Configuration
Environment Variables
Set these environment variables before running:
export UNIPILE_API_KEY="your-api-key"
export UNIPILE_BASE_URL="https://api13.unipile.com:14376/api/v1"
export UNIPILE_ACCOUNT_ID="your-account-id"
Or create a .env file in your working directory.
Claude Desktop Configuration
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"unipile-linkedin": {
"command": "uvx",
"args": ["unipile-linkedin-mcp"],
"env": {
"UNIPILE_API_KEY": "your-api-key",
"UNIPILE_BASE_URL": "https://api13.unipile.com:14376/api/v1",
"UNIPILE_ACCOUNT_ID": "your-account-id"
}
}
}
}
Available Tools (22 total)
Search
| Tool | Description |
|---|---|
search_people |
Search people with Classic LinkedIn filters |
search_people_sales_nav |
Search with Sales Navigator advanced filters |
search_companies |
Search for companies |
search_posts |
Search LinkedIn posts/content |
get_search_params |
Get valid filter IDs (locations, industries, etc.) |
Profiles
| Tool | Description |
|---|---|
list_accounts |
List all connected LinkedIn accounts |
get_my_profile |
Get authenticated user's profile |
get_profile |
Get any user's full profile |
get_company_profile |
Get company page details |
Connections
| Tool | Description |
|---|---|
send_invitation |
Send connection request (max 300 char message) |
list_invitations_sent |
View pending outbound invites |
list_invitations_received |
View inbound connection requests |
accept_invitation |
Accept a connection request |
decline_invitation |
Decline a connection request |
cancel_invitation |
Withdraw a sent invitation |
list_relations |
List 1st degree connections |
Messaging
| Tool | Description |
|---|---|
list_chats |
List message conversations |
get_chat_messages |
Get messages from a chat |
send_message |
Send message in existing chat |
start_chat |
Start new conversation with connections |
InMail (Premium)
| Tool | Description |
|---|---|
send_inmail |
Send InMail to non-connections |
get_inmail_credits |
Check remaining InMail credits |
Usage Examples
Search for People
# Classic LinkedIn search
search_people(keywords="software engineer", location=["103644278"], limit=10)
# Sales Navigator search with advanced filters
search_people_sales_nav(
keywords="CTO",
company_headcount=[{"min": 51, "max": 200}],
changed_jobs=True,
seniority_level=["Director", "VP"]
)
Get Search Parameter IDs
# Find location IDs
get_search_params(param_type="LOCATION", query="San Francisco")
# Find industry IDs
get_search_params(param_type="INDUSTRY", query="Software")
Send a Connection Request
send_invitation(
provider_id="ACoAAB...",
message="Hi! I'd love to connect."
)
Start a Conversation
# With 1st degree connection
start_chat(
attendees_ids=["ACoAAB..."],
text="Hello! Great connecting with you."
)
# InMail to non-connection (requires credits)
send_inmail(
attendees_ids=["ACoAAB..."],
subject="Quick question",
text="Hi, I noticed your work at..."
)
Getting Unipile Credentials
- Sign up at Unipile
- Connect your LinkedIn account
- Get your API key and account ID from the dashboard
- Note your base URL (varies by region)
Rate Limits
Unipile recommends these daily limits:
- Profile views: 80-100/day (Classic), 150/day (Sales Nav)
- Invitations: 80-100/day (paid), 15/week (free)
- Messages: 100-150/day
License
MIT License - see LICENSE for details.
Contributing
Contributions welcome! Please open an issue or PR on GitHub.
Metadata
Release files for unipile-linkedin-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| unipile_linkedin_mcp-0.1.0.tar.gz | 8.6 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| unipile_linkedin_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.6 kB
Release files / unipile_linkedin_mcp-0.1.0.tar.gz
| Download URL | unipile_linkedin_mcp-0.1.0.tar.gz |
|---|---|
| Size | 8.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a91ec4cf2a3533d7bc83e87225f387cd4f3c1a1135e3ae8f77b359803b5eb5e4
|
|
BLAKE2b-256 checksum How to use checksums |
53dcd2ae0d9349a056617637c55b19db11df292f3f6146e510cd9f16d03e6695
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.3
|
Release files / unipile_linkedin_mcp-0.1.0-py3-none-any.whl
| Download URL | unipile_linkedin_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 16.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0dbf200f196c23203716f54dd01710d3b74b93f61b76eb84b7f31768f5e2eb6a
|
|
BLAKE2b-256 checksum How to use checksums |
6ef7fa82e405e98968a6bb98bae320d51b163ba1083b6ef8dd2fc11bb8cd2ef9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.3
|
Security for unipile-linkedin-mcp 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.