LinkedIn MCP Server Documentation
用于 LinkedIn 集成的 n8n 的模型上下文协议 (MCP) 服务器
wedlock666
README
LinkedIn MCP 服务器文档
目录
简介
LinkedIn MCP 服务器是一个模型上下文协议 (MCP) 实现,它允许 n8n 和 LinkedIn 之间的集成,而无需官方 API 访问。它使用带有 Puppeteer 的 Web 自动化技术与 LinkedIn 的 Web 界面进行交互,从而提供个人资料管理、连接、消息传递、帖子和职位搜索等功能。
目的
此服务器允许您通过 n8n 工作流程自动化 LinkedIn 交互,从而实现各种用例:
- 自动化连接管理
- 个人资料数据提取和分析
- 消息传递自动化
- 内容发布和互动
- 职位搜索和申请流程
主要特性
- 个人资料管理:查看和搜索 LinkedIn 个人资料
- 连接管理:发送连接请求和管理连接
- 消息传递:发送消息和阅读对话
- 帖子互动:创建、点赞、评论和分享帖子
- 职位搜索:搜索职位、查看详细信息并在可能的情况下申请
- MCP 协议支持:通过模型上下文协议与 n8n 无缝集成
架构概览
LinkedIn MCP 服务器遵循模块化架构,旨在实现可维护性和可扩展性:
核心组件
- MCP 服务器核心:实现基于 JSON-RPC 2.0 的协议,并支持 SSE
- LinkedIn 自动化引擎:使用 Puppeteer 进行 Web 自动化
- LinkedIn 功能模块:提供特定的 LinkedIn 功能
- n8n 集成层:将 MCP 服务器连接到 n8n 工作流程
技术栈
- Node.js:运行时环境
- Express.js:Web 服务器框架
- Puppeteer:无头浏览器自动化
- Puppeteer-Extra:增强的 Puppeteer,具有隐身功能
- Winston:日志系统
- JSON-RPC 2.0:MCP 的通信协议
目录结构
mcp-linkedin-project/
├── src/
│ ├── index.js # 主入口点
│ ├── routes/ # API 路由
│ │ └── mcp.js # MCP 协议路由
│ ├── controllers/ # 业务逻辑
│ │ └── linkedin-controller.js # LinkedIn 功能控制器
│ ├── services/ # 核心服务
│ │ ├── browser.js # Puppeteer 浏览器管理
│ │ ├── linkedin-auth.js # LinkedIn 身份验证
│ │ ├── linkedin-profile.js # 个人资料功能
│ │ ├── linkedin-connection.js # 连接功能
│ │ ├── linkedin-messaging.js # 消息传递功能
│ │ ├── linkedin-post.js # 帖子功能
│ │ └── linkedin-job.js # 职位功能
│ ├── models/ # 数据模型
│ ├── utils/ # 实用函数
│ └── config/ # 配置文件
├── test/ # 测试脚本
│ ├── test-mcp.js # MCP 服务器测试
│ ├── n8n-webhook-test.js # n8n webhook 模拟器
│ └── n8n-workflow-example.js # n8n 工作流程示例
├── docs/ # 文档
├── .env.example # 环境变量模板
├── package.json # 依赖项和脚本
├── start.sh # 服务器启动脚本
└── test.sh # 测试运行器脚本
安装指南
前提条件
- Node.js (v16 或更高版本)
- npm (v7 或更高版本)
- 一个 LinkedIn 帐户
- 互联网连接
本地安装
- 克隆存储库或下载源代码:
git clone https://github.com/yourusername/mcp-linkedin-project.git
cd mcp-linkedin-project
- 安装依赖项:
npm install
- 创建环境配置:
cp .env.example .env
- 使用您的 LinkedIn 凭据和其他设置编辑
.env
文件:
PORT=3000
MCP_SERVER_NAME="LinkedIn MCP Server"
MCP_SERVER_VERSION="0.1.0"
# LinkedIn 凭据
LINKEDIN_USERNAME="your-linkedin-email"
LINKEDIN_PASSWORD="your-linkedin-password"
# 安全设置
JWT_SECRET="your-secure-random-string"
COOKIE_SECRET="another-secure-random-string"
- 启动服务器:
./start.sh
Docker 安装
提供了一个 Dockerfile 用于容器化部署:
- 构建 Docker 镜像:
docker build -t linkedin-mcp-server .
- 运行容器:
docker run -p 3000:3000 --env-file .env linkedin-mcp-server
Proxmox LXC 容器安装
有关在 Proxmox 上作为 LXC 容器部署的信息,请参阅 Proxmox 部署指南。
配置
环境变量
变量 | 描述 | 默认值 |
---|---|---|
PORT | 服务器端口 | 3000 |
MCP_SERVER_NAME | 服务器名称 | "LinkedIn MCP Server" |
MCP_SERVER_VERSION | 服务器版本 | "0.1.0" |
LINKEDIN_USERNAME | LinkedIn 帐户电子邮件/用户名 | - |
LINKEDIN_PASSWORD | LinkedIn 帐户密码 | - |
JWT_SECRET | 用于 JWT 令牌生成的密钥 | - |
COOKIE_SECRET | 用于 Cookie 加密的密钥 | - |
MAX_REQUESTS_PER_HOUR | 每小时请求的速率限制 | 50 |
RATE_LIMIT_WINDOW_MS | 速率限制窗口(以毫秒为单位) | 3600000 |
HEADLESS | 在无头模式下运行浏览器 | true |
USER_AGENT | 浏览器用户代理 | Mozilla/5.0... |
LOG_LEVEL | 日志级别 | info |
PROXY_SERVER | 代理服务器(可选) | - |
PROXY_USERNAME | 代理用户名(可选) | - |
PROXY_PASSWORD | 代理密码(可选) | - |
PROXY_TYPE | 代理类型 (http, https, socks5) | http |
浏览器配置
可以为不同的环境配置浏览器服务:
- 无头模式:设置
HEADLESS=true
用于服务器环境,或设置HEADLESS=false
用于调试 - 用户代理:使用
USER_AGENT
自定义以避免检测 - 代理支持:配置代理设置以进行 IP 轮换并避免速率限制
API 参考
LinkedIn MCP 服务器使用基于 HTTP 的 JSON-RPC 2.0 实现模型上下文协议 (MCP)。
端点
所有 MCP 请求都发送到:
POST http://localhost:3000/mcp
MCP 方法
initialize
初始化 MCP 会话。
请求:
{
"jsonrpc": "2.0",
"method": "initialize",
"params": {},
"id": "1"
}
响应:
{
"jsonrpc": "2.0",
"result": {
"capabilities": {
"tools": true,
"resources": true,
"prompts": true
}
},
"id": "1"
}
listTools
列出可用的 LinkedIn 工具。
请求:
{
"jsonrpc": "2.0",
"method": "listTools",
"params": {},
"id": "2"
}
响应:
{
"jsonrpc": "2.0",
"result": {
"tools": [
{
"name": "profile_view",
"description": "查看 LinkedIn 个人资料",
"parameters": {
"type": "object",
"properties": {
"profileUrl": {
"type": "string",
"description": "要查看的 LinkedIn 个人资料的 URL"
}
},
"required": ["profileUrl"]
}
},
// 其他工具...
]
},
"id": "2"
}
executeTool
执行 LinkedIn 工具。
请求:
{
"jsonrpc": "2.0",
"method": "executeTool",
"params": {
"name": "profile_search",
"parameters": {
"keywords": "software engineer",
"location": "San Francisco",
"limit": 5
}
},
"id": "3"
}
响应:
{
"jsonrpc": "2.0",
"result": [
{
"name": "John Doe",
"title": "Senior Software Engineer",
"location": "San Francisco Bay Area",
"profileUrl": "https://www.linkedin.com/in/johndoe"
},
// 其他结果...
],
"id": "3"
}
listResources
列出可用的 LinkedIn 资源。
请求:
{
"jsonrpc": "2.0",
"method": "listResources",
"params": {},
"id": "4"
}
响应:
{
"jsonrpc": "2.0",
"result": {
"resources": [
{
"uri": "linkedin:profile",
"description": "当前 LinkedIn 个人资料信息"
},
// 其他资源...
]
},
"id": "4"
}
readResource
读取 LinkedIn 资源。
请求:
{
"jsonrpc": "2.0",
"method": "readResource",
"params": {
"uri": "linkedin:profile",
"parameters": {
"profileUrl": "https://www.linkedin.com/in/johndoe"
}
},
"id": "5"
}
响应:
{
"jsonrpc": "2.0",
"result": {
"content": "...",
"metadata": {
"contentType": "application/json"
}
},
"id": "5"
}
listPrompts
列出可用的 LinkedIn 提示模板。
请求:
{
"jsonrpc": "2.0",
"method": "listPrompts",
"params": {},
"id": "6"
}
响应:
{
"jsonrpc": "2.0",
"result": {
"prompts": [
{
"name": "connection_request",
"description": "LinkedIn 连接请求的模板"
},
// 其他提示...
]
},
"id": "6"
}
getPrompt
获取 LinkedIn 提示模板。
请求:
{
"jsonrpc": "2.0",
"method": "getPrompt",
"params": {
"name": "connection_request"
},
"id": "7"
}
响应:
{
"jsonrpc": "2.0",
"result": {
"template": "Hi {{name}},\n\nI came across your profile and would like to connect. {{reason}}\n\nLooking forward to connecting,\n{{your_name}}",
"parameters": {
"name": {
"type": "string",
"description": "收件人的姓名"
},
"reason": {
"type": "string",
"description": "连接的原因"
},
"your_name": {
"type": "string",
"description": "您的姓名"
}
}
},
"id": "7"
}
LinkedIn 功能
个人资料管理
查看个人资料
检索有关 LinkedIn 个人资料的详细信息。
工具: profile_view
参数:
profileUrl
:要查看的 LinkedIn 个人资料的 URL
返回:
- 个人资料信息,包括姓名、职称、地点、关于、经历、教育和技能
搜索个人资料
根据关键字和过滤器搜索 LinkedIn 个人资料。
工具: profile_search
参数:
keywords
:要搜索的关键字location
:地点过滤器(可选)limit
:要返回的最大结果数(可选)
返回:
- 包含基本信息的个人资料结果列表
连接管理
发送连接请求
向 LinkedIn 个人资料发送连接请求。
工具: connection_send
参数:
profileUrl
:要连接的 LinkedIn 个人资料的 URLmessage
:包含在请求中的可选消息
返回:
- 连接请求的结果
列出连接
列出您的 LinkedIn 连接。
工具: connection_list
参数:
limit
:要返回的最大连接数(可选)
返回:
- 包含姓名、职业和个人资料 URL 的连接列表
列出待处理的请求
列出待处理的连接请求。
工具: connection_pending
参数:
limit
:要返回的最大待处理请求数(可选)
返回:
- 待处理的连接请求列表
消息传递
发送消息
向 LinkedIn 连接发送消息。
工具: message_send
参数:
profileUrl
:要发送消息的 LinkedIn 个人资料的 URLmessage
:要发送的消息内容
返回:
- 消息发送操作的结果
列出对话
列出 LinkedIn 对话。
工具: message_list
参数:
limit
:要返回的最大对话数(可选)
返回:
- 包含参与者、预览和时间的对话列表
阅读对话
阅读 LinkedIn 对话历史记录。
工具: message_read
参数:
conversationUrl
:要阅读的对话的 URLlimit
:要返回的最大消息数(可选)
返回:
- 包含消息的对话历史记录
帖子管理
创建帖子
创建新的 LinkedIn 帖子。
工具: post_create
参数:
content
:帖子内容visibility
:帖子可见性(连接、公开、任何人)
返回:
- 帖子创建的结果
点赞帖子
点赞 LinkedIn 帖子。
工具: post_like
参数:
postUrl
:要点赞的 LinkedIn 帖子的 URL
返回:
- 点赞操作的结果
评论帖子
评论 LinkedIn 帖子。
工具: post_comment
参数:
postUrl
:要评论的 LinkedIn 帖子的 URLcomment
:评论内容
返回:
- 评论操作的结果
分享帖子
分享 LinkedIn 帖子。
工具: post_share
参数:
postUrl
:要分享的 LinkedIn 帖子的 URLcomment
:要添加到分享的可选评论
返回:
- 分享操作的结果
职位管理
搜索职位
在 LinkedIn 上搜索职位。
工具: job_search
参数:
keywords
:要搜索的关键字location
:地点过滤器(可选)datePosted
:发布日期过滤器(可选:'past_24h'、'past_week'、'past_month')limit
:要返回的最大结果数(可选)
返回:
- 职位结果列表
查看职位
查看 LinkedIn 上的职位详细信息。
工具: job_view
参数:
jobUrl
:要查看的 LinkedIn 职位的 URL
返回:
- 职位详细信息,包括职称、公司、地点、描述和要求
申请职位
申请 LinkedIn 上的职位(如果提供 Easy Apply)。
工具: job_apply
参数:
jobUrl
:要申请的 LinkedIn 职位的 URL
返回:
- 申请尝试的结果
n8n 集成
安装 MCP 节点
- 在您的 n8n 实例中,转到设置 > 社区节点
- 安装 "n8n-nodes-mcp"
配置 MCP 客户端节点
- 将 "MCP 客户端" 节点添加到您的工作流程
- 创建新凭据:
- 连接类型:HTTP 传输
- 服务器 URL:
http://localhost:3000/mcp
(根据您的服务器进行调整) - 身份验证:无(或根据需要配置)
工作流程示例
个人资料搜索和处理
此工作流程搜索 LinkedIn 个人资料并处理每个结果:
- 触发节点:计划或手动触发
- MCP 客户端节点:
- 操作:执行工具
- 工具:profile_search
- 参数:
- keywords: "software engineer"
- location: "San Francisco"
- limit: 5
- 迭代器节点:处理每个个人资料
- MCP 客户端节点:
- 操作:执行工具
- 工具:profile_view
- 参数:
- profileUrl:当前项目的 profileUrl
- 设置节点:根据需要格式化数据
- 操作节点:存储或处理数据
自动化连接请求
此工作流程向搜索中的个人资料发送连接请求:
- 触发节点:计划或手动触发
- MCP 客户端节点:
- 操作:执行工具
- 工具:profile_search
- 参数:
- keywords: "hiring manager"
- location: "New York"
- limit: 3
- 迭代器节点:处理每个个人资料
- 函数节点:生成个性化消息
- MCP 客户端节点:
- 操作:执行工具
- 工具:connection_send
- 参数:
- profileUrl:当前项目的 profileUrl
- message:生成的消息
- Slack 节点:发送已发送请求的通知
有关更多工作流程示例,请参阅 n8n 工作流程示例。
部署指南
本地部署
要在本地运行服务器:
./start.sh
Docker 部署
要使用 Docker 部署:
docker build -t linkedin-mcp-server .
docker run -p 3000:3000 --env-file .env linkedin-mcp-server
Proxmox LXC 容器部署
有关在 Proxmox 上作为 LXC 容器部署的详细说明,请参阅 Proxmox 部署指南。
测试
运行测试
要运行基本测试:
./test.sh
使用 n8n 进行测试
有关使用 n8n 进行测试的详细说明,请参阅 测试指南。
故障排除
常见问题
身份验证失败
症状:
- "检测到 LinkedIn 安全检查点" 错误
- "登录期间检测到 CAPTCHA" 错误
解决方案:
- 验证
.env
文件中的 LinkedIn 凭据 - 在常规浏览器中手动登录 LinkedIn 以解决任何安全检查点
- 考虑使用代理以避免检测
- 降低请求频率以避免触发安全措施
速率限制
症状:
- "请求过多" 错误
- 扩展使用后操作失败
解决方案:
- 调整
.env
文件中的MAX_REQUESTS_PER_HOUR
设置 - 在操作之间实施延迟
- 使用代理轮换服务进行大容量操作
浏览器自动化问题
症状:
- "找不到元素" 错误
- 意外的页面结构
解决方案:
- LinkedIn 可能已更新其 UI;检查选择器更改
- 增加慢速连接的超时
- 暂时设置
HEADLESS=false
以进行可视化调试
日志
检查以下日志文件以进行故障排除:
error.log
:错误消息combined.log
:所有服务器日志linkedin-*.log
:特定的 LinkedIn 服务日志
安全注意事项
凭据管理
- 安全地存储 LinkedIn 凭据
- 使用环境变量或密钥管理器
- 切勿将凭据提交到版本控制
速率限制
- 尊重 LinkedIn 的使用政策
- 实施适当的速率限制
- 监控异常活动
网络安全
- 对生产部署使用 HTTPS
- 为 MCP 服务器实施适当的身份验证
- 考虑使用 VPN 或代理进行 LinkedIn 连接
限制和合规性
LinkedIn 服务条款
此工具与 LinkedIn 的 Web 界面进行交互,应根据 LinkedIn 的服务条款使用。请注意:
- LinkedIn 可能会随时更改其 UI,从而可能破坏功能
- 过度自动化可能会导致帐户限制
- 某些操作可能违反 LinkedIn 的服务条款
法律注意事项
- 此工具仅用于教育和合法的商业目的
- 用户有责任确保其使用符合适用的法律和服务条款
- 在某些司法管辖区,数据抓取和自动化可能受到法律限制
技术限制
- 复杂的 LinkedIn 交互可能无法完全自动化
- 某些功能可能需要手动干预
- 性能可能会受到网络状况和 LinkedIn 响应速度的影响
结论
LinkedIn MCP 服务器提供了一种强大的方式,可以将 LinkedIn 功能与 n8n 工作流程集成,而无需官方 API 访问。通过遵循本文档,您应该能够有效地安装、配置和使用服务器来满足您的自动化需求。
如需进一步帮助或报告问题,请联系项目维护人员。
推荐服务器
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
MCP Package Docs Server
促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。
Claude Code MCP
一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。
@kazuph/mcp-taskmanager
用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。
mermaid-mcp-server
一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。
Jira-Context-MCP
MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

Linear MCP Server
一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。
Curri MCP Server
通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。