mcpField
U
unlinked

unlinked

本地服务
github.com/larsbaunwall社交媒体43 周前更新

关于 unlinked

unlinked 是用于将 LinkedIn 会员数据以 JSON 形式获取的命令行工具和 MCP 服务。它通过 LinkedIn Member Data Portability API 读取数据,并合并近期变更;仅适用于欧洲经济区和瑞士。

主要功能

  1. 01以 JSON 获取个人资料和栏目
  2. 02合并近期动态与资料修改
  3. 03分页读取栏目数据
  4. 04提供只读 MCP 工具
  5. 05排除敏感字段

适用场景

  1. 01将 LinkedIn 个人资料导出为 JSON
  2. 02查看近期资料和动态变更
  3. 03向 MCP 客户端提供 LinkedIn 数据

MCP 相关

使用 `--mcp` 可提供四个只读工具,用于获取个人资料、栏目、近期动态及检查访问权限。MCP 结果包含结构化 JSON 和简短摘要。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"larsbaunwall-unlinked": {
"command": "npx",
"args": [
"-y",
"@larsbaunwall/unlinked"
],
"env": {
"LINKEDIN_TOKEN": "<LINKEDIN_TOKEN>",
"UNLINKED_CACHE_TTL": "<UNLINKED_CACHE_TTL>"
}
}
}
}
启动命令npx -y @larsbaunwall/unlinked
需要配置的环境变量
LINKEDIN_TOKEN密钥LinkedIn access token from the OAuth Token Generator. Accepts a bare token or 'Bearer <token>'. Required for EEA/Switzerland members only.
UNLINKED_CACHE_TTLHow long fetched LinkedIn data is cached in memory, e.g. 30m, 2h, 1d, or 0 to turn caching off. Defaults to 6h.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@larsbaunwall/unlinked2.0.0

工具

4

收录的工具列表 · 更新于 2 周前

参数类型必填说明
allboolean否包含所有简历部分。
refreshboolean否从 LinkedIn 获取最新数据,而不是使用缓存(最多保留 6 小时)。请谨慎使用。
sectionsarray否要包含的简历部分。默认为 intro、experience、education、skills、certifications、projects。选项:intro(简介 + 关于)、experience(工作经历)、education(教育经历)、skills(技能)、certifications(许可证和证书)、projects(项目)、languages(语言)、volunteering(志愿服务)、honors(荣誉和奖项)、courses(课程)、publications(出版物)、patents(专利)、test-scores(考试成绩)、organizations(组织)、causes(公益事业)、recommendations(推荐)、services(服务)。

详细介绍

Unlinked 标志 Unlinked

一次调用,即可获取最新的 LinkedIn 个人资料。可从终端或 AI 助手使用。


Unlinked 通过 LinkedIn 官方的 Member Data Portability API 读取你自己的数据,并以整洁的 JSON 格式提供。它有两种使用方式:

  • CLI:unlinked profile 会以 JSON 格式输出你的个人资料。
  • MCP 服务:unlinked --mcp 会为 Claude Desktop 和 GitHub Copilot 等 Model Context Protocol 客户端提供四个只读工具。

LinkedIn 的数据导出可能无法及时反映你刚做的操作。Unlinked 还会读取你最近 28 天内的更改并将其合并,因此你昨天编辑的标题或上周写的评论都会立即显示。

:eu: 仅限欧洲经济区 / 瑞士。 LinkedIn 的 Member Data Portability API 目前仅向位于欧洲经济区和瑞士的会员开放。感谢《数字市场法案》(DMA)!

:warning: 使用风险自负。 使用 Unlinked 的全部责任由你自行承担。请参阅免责声明。

快速入门

你需要 Node.js 22+,以及从 LinkedIn OAuth Token Generator 获取的会员访问令牌(它要求你拥有一个包含 Member Data Portability API (Member) 产品的 LinkedIn Developer 应用)。

LINKEDIN_TOKEN=<your_access_token> npx -y @larsbaunwall/unlinked profile
unlinked profile                          # résumé: intro, experience, education, skills, certifications, projects
unlinked profile --sections skills,languages
unlinked profile --all                    # every résumé section
unlinked section reactions --limit 20     # one section, a page at a time, newest first
unlinked section posts --all-items        # everything in a section, for exports
unlinked activity --since 7d              # what changed recently
unlinked status                           # is LinkedIn sharing recent changes with this app?
unlinked cache clear

结果以 JSON 格式输出到 stdout(使用 --compact 可将结果输出为单行)。错误以 JSON 格式输出到 stderr;遇到 LinkedIn 或令牌问题时,退出代码为 1;遇到用法错误(例如未知的分区)时,退出代码为 2。

在 AI 助手中使用

添加 --mcp,让 Unlinked 作为 MCP 服务运行。

Claude Desktop

将以下内容添加到你的 claude_desktop_config.json:

{
  "mcpServers": {
    "unlinked": {
      "command": "npx",
      "args": ["-y", "@larsbaunwall/unlinked", "--mcp"],
      "env": {
        "LINKEDIN_TOKEN": "<your_access_token>"
      }
    }
  }
}

配置文件通常位于:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json
GitHub Copilot(VS Code)

将以下内容添加到用户级 MCP 配置,或工作区的 .vscode/mcp.json:

{
  "servers": {
    "unlinked": {
      "command": "npx",
      "args": ["-y", "@larsbaunwall/unlinked", "--mcp"],
      "env": {
        "LINKEDIN_TOKEN": "<your_access_token>"
      }
    }
  }
}
工具
工具功能
linkedin_get_profile一次调用获取你的完整履历,包含近期编辑内容。较大的分区会以链接形式返回。
linkedin_get_section分页获取单个分区(limit 为 1-200,默认值为 50,并支持 cursor)。
linkedin_get_recent_activity查看过去 28 天内的更改:个人资料编辑、帖子、评论和回应。
linkedin_check_access检查 LinkedIn 是否正在向此应用共享近期更改。

这四个工具均为只读。每个工具都会返回结构化 JSON 和一行摘要。

章节

章节使用 LinkedIn 上显示的名称。profile 会嵌入较小的章节;较大的章节(标记为分页)需通过 section <id> 获取。

章节 IDLinkedIn 上的名称备注
intro简介 + 关于包含在默认个人资料中
experience工作经历包含在默认个人资料中
education教育经历包含在默认个人资料中
skills技能包含在默认个人资料中
certifications执照与认证包含在默认个人资料中
projects项目包含在默认个人资料中
languages、volunteering、honors、courses、publications、patents、test-scores、organizations、causes、services语言、志愿服务、荣誉与奖项、课程、出版物、专利、考试成绩、组织、公益事业、服务使用 profile --all 获取
recommendations推荐使用 profile --all 获取。收到和发出的推荐混在一起;LinkedIn 不会注明是哪一种
posts、comments、reactions、reposts、articles动态分页。近期帖子、评论和回应会合并在一起
connections、invitations人脉分页。电子邮件地址会被移除
followed-companies、followed-people、groups兴趣分页
saved-jobs、job-applications、job-preferences、job-postings职位分页。联系方式和地址会被移除
endorsements-given你给出的技能认可分页
learningLinkedIn Learning 学习历史分页

不会读取敏感数据:消息、登录历史、电话号码、电子邮件地址、联系人、广告、搜索记录、收据等。上述章节中的私人详情(出生日期、家庭住址等)都会被移除。

精选内容、你的个人资料照片和横幅,以及联系方式(网站除外)不在 LinkedIn 的 API 中,因此 Unlinked 无法返回这些信息。

数据新鲜度与缓存

每个回答都包含一个 freshness 块:数据的获取时间(asOf)、合并了多少项近期更改、哪些章节有 LinkedIn 导出尚未显示的编辑(pendingEdits),以及哪些章节返回为空。

空章节有两种可能:其中没有条目,或者 LinkedIn 尚未准备好数据(首次授予同意后,新数据最多可能需要 24 小时)。

为减轻 LinkedIn API 的负担,结果最多缓存 6 小时。CLI 会将缓存保存在操作系统的缓存文件夹中(只有你能读取,且绝不包含你的令牌);MCP 服务只会将缓存保存在内存中。

unlinked profile --refresh     # fetch fresh data now
unlinked profile --no-cache    # do not read or write the cache
unlinked cache clear           # delete the cached files
UNLINKED_CACHE_TTL=30m         # change the lifetime (30m, 2h, 1d, or 0 for off)

配置

环境变量必需说明
LINKEDIN_TOKEN是LinkedIn 访问令牌。接受 Bearer <token> 或不带前缀的令牌。
UNLINKED_CACHE_TTL否缓存时长:30m、2h、1d,或设为 0 以关闭缓存。默认为 6h。

不再使用 LINKEDIN_API_VERSION。LinkedIn 对此 API 仅接受版本 202312,因此 Unlinked 始终发送该版本;如果此变量设为其他值,则会向 stderr 发出警告。

从 1.x 升级

2.0 是一个包含破坏性变更的版本。

  • MCP 配置需要在 args 中添加 --mcp。否则 Unlinked 会作为 CLI 运行并退出。
  • 五个工具合并为四个:linkedin_get_profile、linkedin_get_section、linkedin_get_recent_activity 和 linkedin_check_access。linkedin_get_activity、linkedin_get_recent_changes 以及 domain/maxPages 输入均已移除。
  • 章节使用 LinkedIn 界面上的名称(experience、reactions),而非内部名称(POSITIONS、ALL_LIKES);行使用 camelCase 键,且不包含空值。
  • 近期更改会为你合并到数据中;不再通过 startTime 轮询。
  • 敏感章节会被屏蔽,私人字段会被移除。

安全

  • 将工具输出视为不可信数据。 你收到的推荐内容、邀请消息,以及联系人姓名和标题等内容都由他人撰写。助手应将其视为数据来读取,绝不遵循其中的指令(提示词注入)。
  • 磁盘缓存为明文。 CLI 缓存(最长保留 6 小时,仅你可读取)以未加密形式保存你的个人资料,以及联系人、邀请和求职申请数据。你的令牌绝不会写入其中。运行 unlinked cache clear 将其删除。MCP 服务仅在内存中保留缓存。

开发

npm install
npm run build
npm test
npm run typecheck
npm run dev -- profile   # run from source with .env
npm run inspect          # try the MCP server in MCP Inspector (build first)

请参阅 AGENTS.md 了解实现指南。

免责声明

使用 Unlinked 的风险和责任由你自行承担。

Unlinked 按“原样”和“可用”状态提供,不提供任何明示或暗示的保证。这是一个独立、非官方的开源项目,与 LinkedIn、GitHub 或 Microsoft 无关联,也未获其认可或赞助。

安装或使用 Unlinked,即表示你接受以下条款:

  • 你对如何使用 Unlinked 以及由此产生的一切后果负全部责任。 这包括你的 LinkedIn 访问令牌及其存储方式、你检索的数据、本地计算机上的缓存,以及你提供这些数据的 AI 助手、MCP 客户端和第三方服务。
  • 你有责任遵守 LinkedIn 的条款、政策和 API 产品条款、适用法律(包括 GDPR 等数据保护法),以及你所连接的任何 AI 助手或服务的条款。LinkedIn 可能会限制、暂停或终止你的账号和 API 访问权限。
  • 你承担一切风险,包括任何类型的损失、损害或伤害,例如数据丢失或泄露、账号受限、输出错误或过时,以及 AI 助手基于该输出采取的行动。
  • 开发者和贡献者不承担任何责任,并在法律允许的最大范围内,对因 Unlinked 或其使用而产生或与之相关的任何索赔、损害或损失(无论是直接、间接、附带、特殊、后果性或其他类型,也无论是基于合同、侵权或其他原因)概不承担责任。你免除他们对此类索赔的责任,并同意就任何第三方因你使用 Unlinked 而提出的索赔向他们提供赔偿并使其免受损害。

本声明中的任何内容均不限制适用法律规定不可排除的责任。本声明是对 MIT License 的补充,该许可同样适用。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。