新闻详情

新闻详情

首页 / 资讯中心 / 详情

Klavis LinkedIn MCP Server 实践指南:OAuth 鉴权、Docker 自托管与内容发布全流程

发布时间:2026/9/17 21:10:57来源:尧图网络
Klavis LinkedIn MCP Server 实践指南:OAuth 鉴权、Docker 自托管与内容发布全流程
Klavis LinkedIn MCP Server 实践指南OAuth 鉴权、Docker 自托管与内容发布全流程【免费下载链接】klavisKlavis AI: MCP integration platforms that let AI agents use tools reliably at any scale项目地址: https://gitcode.com/GitHub_Trending/kl/klavis本篇技术指南以开源仓库 mcp_servers/linkedin/README.md 为主体结合 server.py、tools/ 等源码实现完整讲解基于 Klavis AI 的 LinkedIn MCP Server 的两种部署方式托管服务与 Docker 自托管、OAuth 鉴权机制、四个可调用工具的参数与底层调用链。读完你可以直接接入 LinkedIn 官方 API用 AI Agent 自动读取个人资料、发布带话题标签的图文帖子、分享带元数据预览的链接并理解令牌如何从请求头一路传递到api.linkedin.com。一、LinkedIn MCP Server 是什么LinkedIn MCP Server 是一个基于 Model Context ProtocolMCP的服务端实现让 AI Agent 通过标准化的 MCP 工具调用 LinkedIn 官方 APIapi.linkedin.com/v2从而完成专业资料管理、帖子发布、内容分享与职业社交自动化。其核心能力来自两点统一鉴权支持 OAuth 流程既可通过 Klavis AI 托管服务自动完成 OAuth也可在自托管时通过AUTH_DATA或LINKEDIN_ACCESS_TOKEN环境变量注入访问令牌标准协议基于官方mcpPython SDK 实现requirements.txt固定mcp1.11.0对外暴露 SSE 与 StreamableHTTP 双传输端点任意 MCP 兼容客户端Claude Desktop、Cursor、VS Code 等均可直接接入。仓库源码中该服务器名为linkedin-mcp-serverDocker 镜像为ghcr.io/klavis-ai/linkedin-mcp-server默认监听5000端口见 Dockerfile 中的EXPOSE 5000与 server.py 中端口环境变量的默认值。二、30 秒快速启动托管服务与 SDK 接入README 推荐的“30 秒启动”路径是使用 Klavis AI 托管基础设施无需任何服务端搭建只需一个免费 API Keypip install klavis # 或 npm install klavisfrom klavis import Klavis klavis Klavis(api_keyyour-free-key) server klavis.mcp_server.create_server_instance(LINKEDIN, user123)其中user123是用户标识用于区分 Klavis 侧“谁连接了哪些账号”的数据隔离。第二个参数对应文档中强调的userId语义——它应当是本人、团队或组织的唯一标识。2.1 进阶通过 Strata 服务器创建并完成 OAuth官方文档 提供了更完整的 Strata 接入流程适合需要编程式管理 OAuth 与多个集成的场景from klavis import Klavis from klavis.types import McpServerName klavis_client Klavis(api_keyYOUR_API_KEY) response klavis_client.mcp_server.create_strata_server( servers[McpServerName.LINKEDIN], user_iduser123 ) import webbrowser # 打开 OAuth 授权页面完成 LinkedIn 账号授权 webbrowser.open(response.oauth_urls[McpServerName.LINKEDIN])TypeScript 等价写法import { KlavisClient, Klavis } from klavis; const klavis new KlavisClient({ apiKey: process.env.KLAVIS_API_KEY! }); const response await klavis.mcpServer.createStrataServer({ servers: [Klavis.McpServerName.LinkedIn], userId: user123 }); // 在浏览器中打开 response.oauthUrls[Klavis.McpServerName.LinkedIn] 完成授权也可以直接通过 REST 创建curl -X POST https://api.klavis.ai/mcp-server/strata/create \ -H Authorization: Bearer YOUR_API_KEY \ -H Content-Type: application/json \ -d { servers: [LinkedIn], userId: user123 }授权完成后服务器会返回一个可直接用于任意 MCP 客户端的 endpoint URL。OAuth URL 还支持自定义scope与redirect_url参数以满足精细化权限与回调控制需求。三、Docker 自托管两种鉴权模式需要自行掌控数据面时README 提供了两条 Docker 运行路径。3.1 OAuth 模式生产推荐通过KLAVIS_API_KEY交给 Klavis AI 处理完整的 OAuth 流程无需自己维护令牌docker pull ghcr.io/klavis-ai/linkedin-mcp-server:latest # 通过 Klavis AI 自动处理 OAuth docker run -p 5000:5000 -e KLAVIS_API_KEY$KLAVIS_API_KEY \ ghcr.io/klavis-ai/linkedin-mcp-server:latest3.2 无 OAuth 模式自带令牌直接以 JSON 字符串注入 LinkedIn 访问令牌# 不带 OAuth 支持 docker run -p 5000:5000 -e AUTH_DATA{access_token:your_linkedin_access_token_here} \ ghcr.io/klavis-ai/linkedin-mcp-server:latestOAuth 前置条件LinkedIn 强制要求 OAuth 认证。README 明确建议使用 Klavis 免费 API Key 来自动化 OAuth 流程避免自行处理 LinkedIn 开发者平台的授权回调。3.3 配置 MCP 客户端自托管启动后在任意 MCP 客户端配置文件中指向本地端点注意路径尾部的/{ mcpServers: { linkedin: { url: http://localhost:5000/mcp/ } } }从源码看服务器实际暴露了两个端点SSE 端点http://localhost:5000/sse与 StreamableHTTP 端点http://localhost:5000/mcp见 server.py 的启动日志两者可同时工作属于“双传输”设计。四、可用的 MCP 工具与源码实现README 将能力概括为 Profile Management、Post Operations、Connection Management、Company Pages、Analytics 五类其中连接管理、公司主页、数据分析等由 Klavis 托管系统通过渐进式发现按需开放。在当前开源仓库中server.py 的list_tools明确注册了以下四个工具均带LINKEDIN_PROFILE/LINKEDIN_POST类别标注便于 MCP 客户端做能力分组工具名分类用途linkedin_get_profile_infoLINKEDIN_PROFILE只读读取当前用户/指定用户的资料linkedin_create_postLINKEDIN_POST发布文本帖子或带标题的文章式帖子linkedin_create_url_shareLINKEDIN_POST分享带元数据预览的 URL 链接linkedin_format_rich_postLINKEDIN_POST离线格式化富文本不发起 API 调用4.1 linkedin_get_profile_info读取个人资料对应实现位于 tools/auth.py。调用时若person_id为空则请求 LinkedInGET /v2/userinfo返回字段映射如下id←subfirstName←given_namelastName←family_namename←nameemail←emailemail_verified←email_verifiedlocale←locale注意传入非空person_id时源码会直接返回提示——读取其他用户的资料需要 LinkedIn API 的更高权限elevated permissions不会静默降级。4.2 linkedin_create_post发布帖子对应 tools/posts.py 中的create_post核心参数如下参数类型必填说明textstring是帖子正文titlestring否提供后生成“标题 正文”的文章式帖子hashtagsstring[]否话题标签数组#会自动补全visibilitystring否可见范围默认PUBLIC可选CONNECTIONS、LOGGED_IN_USERS实现要点可验证于 posts.py先请求/userinfo拿到sub作为 person_id再以urn:li:person:{person_id}作为author组装 UGC Payload请求体符合 LinkedIn UGC API 规范lifecycleState: PUBLISHED、shareMediaCategory: NONEvisibility使用com.linkedin.ugc.MemberNetworkVisibility枚举话题标签会按#去重补全后拼接在正文末尾_format_hashtags会先strip()并去掉已存在的#前缀避免双#返回结果包含id、created、lastModified、lifecycleState附带hashtags_used与hashtag_count失败时给出明确提示发布需要 LinkedIn App 的w_member_socialscope且文章式发布失败会自动降级尝试普通文本帖子。4.3 linkedin_create_url_share分享链接卡片与发帖类似但shareMediaCategory为ARTICLE并携带media数组status: READY、originalUrl、title、description从而在 LinkedIn 上生成带预览卡片的链接分享见 posts.py。必填参数为url与texttitle、description、visibility可选成功后返回shared_url、url_title、url_description等字段。4.4 linkedin_format_rich_post离线富文本格式化这是一个不发起任何网络请求的纯工具函数返回 JSON 结构而非直接发布posts.py。支持bold_text/italic_text对正文中匹配的短语分别用**与*包裹LinkedIn 的 Markdown 风格富文本bullet_points以•前缀追加列表numbered_list以1.2.递增编号追加列表mentions自动补追加提及hashtags自动补#追加话题标签。返回结果含original_text、formatted_text、各格式化项计数、character_count并附提示“请用linkedin_create_post发布”适合 Agent 先排版、后发布的编排模式。五、底层调用链与鉴权机制5.1 令牌的三种来源与优先级server.py 的extract_access_token按以下优先级解析令牌环境变量AUTH_DATAJSON 字符串取其中access_token字段——即无 OAuth 模式请求头x-auth-database64 编码的 JSONSSE 请求对象与 StreamableHTTP scope 两种形态均被兼容处理兜底环境变量LINKEDIN_ACCESS_TOKEN源码注释标注“for local use”本地开发用。令牌解析成功后会通过linkedin_token_contextContextVar定义于 tools/base.py设置到请求级上下文请求结束后reset清理从而保证多请求并发时令牌隔离、互不串扰。若上下文与环境变量都拿不到令牌get_linkedin_access_token会抛出RuntimeError。5.2 请求封装与 API 常量tools/base.py 是所有 LinkedIn API 调用的统一出口API 基地址常量LINKEDIN_API_BASE https://api.linkedin.com/v2请求头固定携带Authorization: Bearer {token}、Content-Type: application/json以及X-Restli-Protocol-Version: 2.0.0LinkedIn RESTLi 协议版本基于aiohttp异步客户端显式创建默认 SSL 上下文支持expect_empty_response参数对 200/201/204 返回None并对非 JSON 响应做降级包装错误处理会将aiohttp.ClientResponseError包装为带状态码与响应体的RuntimeError便于上层工具透出可读错误。5.3 双传输协议与启动参数server.py 使用 Starlette 构建 ASGI 应用同时挂载三组路由GET /sseMount /messages/SSEServer-Sent Events传输Mount /mcpStreamableHTTP 传输基于StreamableHTTPSessionManager默认statelessTrue无状态模式可通过--json-response切换为纯 JSON 响应而非 SSE 流。命令行参数一览click 定义参数默认值说明--port5000或环境变量LINKEDIN_MCP_SERVER_PORTHTTP 监听端口--log-levelINFO日志级别DEBUG / INFO / WARNING / ERROR / CRITICAL--json-response关闭启用 StreamableHTTP 的 JSON 响应模式启动时若当前目录存在.env文件load_dotenv()会自动加载直接运行python server.py即可启动服务。六、依赖与镜像构建requirements.txt 列出运行所需依赖mcp1.11.0、fastapi、uvicorn[standard]、click8.0.0、pydantic2.5.0、aiohttp3.8.0、httpx0.27.0、python-dotenv1.0.0、typing-extensions、starlette0.49.1。Dockerfile 基于python:3.12-slim安装gcc编译依赖后拷贝requirements.txt、server.py与tools/目录以python server.py作为启动命令。开发者也可以克隆仓库后在mcp_servers/linkedin目录下自行docker build或直接pip install -r requirements.txt后本地运行。七、权限、限制与排查要点OAuth 是硬前提LinkedIn 不允许匿名调用 UGC APIREADME 与源码posts.py 的错误提示都指出发布类操作需要w_member_socialscope只读资料走/userinfo获取当前用户资料使用 OpenID Connect 风格的userinfo端点字段命名与/v2/people不同sub/given_name等使用时可注意字段差异他人资料需要更高权限get_profile_info传入person_id会明确拒绝而非尝试可见性枚举visibility支持PUBLIC、CONNECTIONS、LOGGED_IN_USERS映射到com.linkedin.ugc.MemberNetworkVisibility两种部署形态托管服务零运维但令牌由 Klavis 托管Docker 自托管数据可控但需自行处理 OAuth 或注入令牌可按生产要求取舍。八、参与贡献与许可本项目欢迎社区贡献贡献规范见仓库根目录 CONTRIBUTING.md代码以 Apache 2.0 协议开源许可全文见 LICENSE。若需扩展 LinkedIn 能力如公司主页、数据分析可在 Klavis 托管系统中通过渐进式发现按需启用或在仓库中基于 tools/posts.py 与 tools/base.py 的调用模式扩展新的工具实现。【免费下载链接】klavisKlavis AI: MCP integration platforms that let AI agents use tools reliably at any scale项目地址: https://gitcode.com/GitHub_Trending/kl/klavis创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

TanStack Form FormGroupApi 深度解析:表单分组的类型体系、状态模型、分组校验与提交机制 2026/9/17 21:53:16

TanStack Form FormGroupApi 深度解析:表单分组的类型体系、状态模型、分组校验与提交机制

TanStack Form FormGroupApi 深度解析:表单分组的类型体系、状态模型、分组校验与提交机制 【免费下载链接】form 🤖 Headless, performant, and type-safe form state management for TS/JS, React, Vue, Angular, Solid, and Lit. 项目地址: https:/…

阅读更多 →
CMU大语言模型系统课程解析与学习路线 2026/9/17 21:53:16

CMU大语言模型系统课程解析与学习路线

1. 课程背景与学习价值卡内基梅隆大学(CMU)的11-868课程《大语言模型系统》是当前全球顶尖高校中为数不多系统讲解大语言模型(LLM)技术体系的专业课程。作为2023年秋季新开设的课程,其内容覆盖了从基础理论到工程实践的…

阅读更多 →
AI时代职业风险评估:量化你的岗位可替代性 2026/9/17 21:53:16

AI时代职业风险评估:量化你的岗位可替代性

1. 项目背景与核心问题最近在技术社区看到一个很有意思的讨论:随着AI Agent技术的快速发展,很多传统岗位是否会面临被取代的风险?作为一个数据从业者,我决定用数据说话,通过量化分析来评估自己岗位的"可替代性指数…

阅读更多 →
Dangerzone 发布流程实战:从 PGP 签名标签、资产签名到 GitHub 草稿发布的最后一哩路 2026/9/17 21:53:16

Dangerzone 发布流程实战:从 PGP 签名标签、资产签名到 GitHub 草稿发布的最后一哩路

Dangerzone 发布流程实战:从 PGP 签名标签、资产签名到 GitHub 草稿发布的最后一哩路 【免费下载链接】dangerzone Take potentially dangerous PDFs, office documents, or images and convert them to safe PDFs 项目地址: https://gitcode.com/GitHub_Trending…

阅读更多 →
Feast 在线存储数据装载(Materialization)实战:materialize 与 materialize-incremental 完全指南 2026/9/17 21:53:16

Feast 在线存储数据装载(Materialization)实战:materialize 与 materialize-incremental 完全指南

Feast 在线存储数据装载(Materialization)实战:materialize 与 materialize-incremental 完全指南 【免费下载链接】feast The Open Source Feature Store for AI/ML 项目地址: https://gitcode.com/GitHub_Trending/fe/feast 导读&…

阅读更多 →
写作新时代:让论文创作事半功倍 2026/9/17 21:50:16

写作新时代:让论文创作事半功倍

在学术研究日益重要的今天,一篇高质量的论文往往是毕业、晋升、评职称的必经之路。然而,选题困难、文献浩如烟海、格式排版繁琐……这些痛点让无数学子和研究者望而却步。如今,一款集AI智能写作、查重降重、AIGC检测于一体的综合性学术平台—…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞