linkedin-mcp について
linkedin-mcpは、永続化されたChromeセッションを通じて構造化されたLinkedIn調査を行うローカルMCPサーバーです。プロフィール、求人、企業、受信箱の読み取りと、安全制限付きの任意のアルファ書き込みに対応しますが、現在のライブ互換性は未検証です。
主な機能
- 01プロフィールと企業情報の構造化取得
- 02求人と受信箱の調査
- 03ローカルChromeセッションの保持
- 04オフライン設定診断
- 05安全制限付きの任意書き込み
活用シーン
- 01LinkedInプロフィールの調査
- 02求人や企業情報の確認
- 03受信箱データの整理
- 04提供された根拠を使った応募資料の準備
MCP 対応
永続化されたローカルブラウザーセッションを使い、MCPクライアントにLinkedInの調査・準備ツールを提供します。標準はstdioで、任意のHTTPトランスポートはloopbackに限定されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
22掲載時のツール一覧 · 1 日前に更新
このツールにパラメーターはありません。
詳細
🔗 LinkedIn MCP
AI アシスタント向け LinkedIn — 実際のステルスブラウザーセッションを介した構造化データ
MCP クライアント向けの LinkedIn 構造化データ取得 — プロフィール、求人、企業、受信トレイのデータを、ガイド付きのオフラインセットアップと明示的な安全制限とともに提供します。
24 個のツール · アプリケーション準備 4.2.0 · ローカルブラウザーでの読み取り · 明示的に確認された 5 つの書き込み操作 · 永続化される安全制限と操作ログ。
これは非公式の LinkedIn 連携機能であり、アカウントが制限される可能性があります。 使用前にアカウントの安全性とSECURITY.mdを確認してください。
初回のガイド付き実行
4.2.0 では、ローカルの応募準備ワークシートに、再利用可能なエビデンス、出典に紐づいた履歴書の箇条書き、レビュー可能なカバーレターの草案を任意で追加しました。24 個のツール、4.1.2 の依存関係の修正、SDK の入力ガードはそのまま維持されています。リリースノートとリリース準備状況の記録をご覧ください。 以下のコマンドは 4.2.0 を対象としています。インストール前に、リリースの公開状況とインストール先の検証状況をご確認ください。これらの手順は、公開済みであること、ネイティブで使用できること、またはより広範な環境でライブ互換性があることを保証するものではありません。
不変の 4.1.1 アーカイブ/タグについて、10 月 26 日に依存関係に関するアドバイザリが新たに報告されました。検証済みのバイトデータと過去の記録は、現在のセキュリティ上の安全性を保証するものではありません。ソースの貢献者は、レビュー済みのチェックアウトをオフラインでのセットアップと検証に利用できます。4.1.0 ではローカルの応募準備ワークシートと CSV エクスポートが導入されましたが、どちらも応募フォームへの入力や送信は行いません。
4.0.0 では、オフラインでの退職プレビューと Windows ネイティブのプライバシーチェックが追加されました。 既存のインストールを変更する前に、Windows での破壊的変更を伴うアップグレードに関する注意事項をお読みください。 これはローカルの stdio ツールです。Glama の一般的な「Deploy Server」やブラウザーホスティングの操作は、サポート対象のインストール手順ではありません。ホスト型サービスは必要ありません。 4.0.0 リリースノートでは、変更点と制限事項を説明しています。 前のリリースについては、検証済みの 3.1.0 公開記録を引き続き参照できます。
クイックスタートとセットアップガイドから始めてください。セットアップでは、LinkedIn に接続することなく、ローカルの問題、クライアント設定、具体的な次の手順を報告します。生成されたエントリーを既存のクライアントファイルにマージしてください。合成データを使ったセットアップのデモをご覧ください。実際に公開されたパッケージと使い捨てのフィクスチャを使用し、ログインも LinkedIn へのリクエストも行いません。
research_jobs は含まれていません。その求人調査ブリーフはドラフト PR #5に残っています。実行計画では、初回利用、プライバシー、今後の機能、測定された配布成果を追跡しています。
現在の完了状況では、リリース済みの機能と、未完了のネイティブ、ライブ、配布に関するゲートを分けて示しています。
10 月 21 日の全範囲監査では、当初のすべての要件と、その後追加された求職者向け要件を、残作業と対応付けています。
オーナーが運用する非公開の GitHub トラフィック台帳では、ユーザーテレメトリーを使わずにスター数とローリングトラフィックを追跡しています。
ローカルでの準備には、prepare_job_application でユーザーが提供したエビデンスライブラリを再利用し、履歴書の箇条書きとカバーレターの草案を任意で出力できます。明示的に選択された主張のみが、ユーザー提供の来歴とともに含まれます。エビデンスがない場合は、ないままです。サーバーはライブラリも草案も保存しません。応募資料のワークフローをご覧ください。
このバージョンでは、Easy Apply を含め、求人応募フォームへの入力や送信は行いません。求職者および Claude 向け配布計画をご覧ください。応募情報の引き渡しワークフロー、今後提案されている機能、Claude にコネクターを掲載するための個別要件を説明しています。
デスクトップバンドルの提供状況とハッシュは、バンドルガイドとリリースアセットで別途追跡しています。過去の 4.1.1 バンドルの同一性確認によって、新たに報告された依存関係の問題が解消されるわけではありません。ビルダーは監査結果ゼロのゲートを維持しています。オフラインでソースを確認する場合、npm run build:claude-mcpb -- --from-source を実行すると、明示的に未リリースのチェックアウトバンドルがビルドされます。これらの確認によって、ネイティブでのインストールやディレクトリへの掲載が認められることが保証されるものではありません。
できること
サーバーは Patchright を使用して、永続化された Google Chrome プロファイルを開き、認証済みのページから Voyager リクエストを送信します。結果は MCP クライアント向けに JSON に整形されます。一部の探索ツールは、ページデータを代替手段として使用します。非公開のエンドポイント、クエリ ID、ブラウザーの動作、レスポンス形式は変更される可能性があります。
最初に試すのに適したワークフローは、プロフィールの調査、求人・企業の調査、受信トレイの振り分けです。アルファ版の書き込み機能は、デフォルトで無効になっています。有効にした場合は、レビュー済みのサーバー発行プレビュートークンと confirm:true が必要です。また、保守的な試行回数の予算を消費し、完了を確認できない場合は unknown を含むステータスを返します。
検証状況
3.0.0 では、安全性とクライアントに関する要件に破壊的変更が導入されました。 migration guide をお読みください。 ホスト環境でのソース/パッケージ/ブラウザーチェック では、Linux、macOS、Windows 上の Node20/22 が対象です。コアのみの候補版とヘッド版を正確に比較した結果は、 リリース準備状況 に記録されています。明示的な同意を得て実施した、macOS メンテナー本人のヘルスチェック/プロフィール読み取りも、部分的なメタデータを取得して成功しました。 対象範囲と証拠 は、新規ユーザーや、より広範なライブ互換性を立証するものではありません。 公開されている正確な 4.1.1 のバイト列と配布先は、 独立して検証済みです。この過去の同一性証明によって、現在の勧告事項が解消されるわけではありません。 配布先の状況については、 4.1.2 リリースの証拠 を参照してください。ネイティブクライアントを初めて利用するユーザー群と、幅広いライブプロバイダー互換性は、引き続き未検証です。 実行の進捗状況と、リンク先の証拠をご覧ください。
| 領域 | 現在の証拠 |
|---|---|
| HTTP 境界、チェックポイント、書き込みの記録 | オフラインの回帰テストと MCP プロトコルのフィクスチャ |
| アカウントの識別、プロフィールの所有権、共有予算 | 本番用ツールのフィクスチャに加え、独立した Node プロセス間の競合/クラッシュテスト |
| セットアップ診断と保存済みセッションのコールドスタート | オフラインのプラットフォーム/パス用フィクスチャと本番ランタイム用フィクスチャ |
| パッケージ化されたアーティファクト | 隔離環境でのインストール、バージョン/doctor チェック、コンパイル済み MCP スモークテスト。LinkedIn へのリクエストはありません |
| プロフィール、フィード、求人、企業、受信トレイ | ツールは登録済みです。リポジトリの注記には過去のライブ実行に関する記述があります。現在のライブ利用可否は不明です。 |
| 5 つの書き込みツール | 保守的な分類器とトランザクション用フィクスチャ。この実装ではライブ書き込みを送信していません。新しいスレッドへのメッセージ送信は、引き続き実験的です。 |
| 公式 OAuth プロバイダー | 現在の MCP ランタイムには接続されていません |
ローカルチェックと CI 設定は、それらが対象とするケースの証拠であり、 現在のプロバイダー互換性やアカウントの安全性を保証するものではありません。
🚀 クイックスタート
Node.js 20 以降と Google Chrome を使用してください。以下のコマンドは 4.2.0 を対象としています。
インストール前に、リリースの提供状況
と検証状況を確認してください。
セットアップはオフラインで行われます。ログインと、その後の読み取りは
意図的なアカウント操作です。安定したインストール方法と Windows の
コマンドについては、セットアップガイドを参照してください。Windows では、4.1.1 でも
状態パスを実際の %USERPROFILE% ツリーの配下に置く必要があります。以前のバージョンで受け入れられていた場合でも、
その外部にあるカスタムパスは拒否されます。
移行に関する注意事項を参照してください。
1. オフラインで診断する:
npm install --prefix "$HOME/.local/share/linkedin-mcp" [email protected]
node "$HOME/.local/share/linkedin-mcp/node_modules/linkedin-mcp-tools/dist/index.js" --setup cursor
claude-desktop または vscode も指定できます。報告されたローカルの問題を解決してから、
生成されたエントリーを既存のクライアントファイルに統合してください。セットアップではログインも
アカウントへのリクエストも行いません。安定したローカルインストールを使用し、アップグレード後に
エントリーを再生成してください。レポートでは一時的なパスではなく、インストール済みのビルドが固定されます。
2. 一度ログインする(実際の Chrome ウィンドウが開きます — サインインし、必要に応じて CAPTCHA/2FA を解決してください):
node "$HOME/.local/share/linkedin-mcp/node_modules/linkedin-mcp-tools/dist/index.js" --login
Google Chrome のインストールが必要です(または npx patchright install chrome を一度実行してください)。セッションは
Cloudflare の認証情報なども含め、~/.linkedin-mcp/profile/ に保持されます。
3. クライアントを設定する。 上記で生成したエントリーを優先してください。mcpServers を
受け付けるクライアントでは、このバージョン固定の例も使用できます:
{
"mcpServers": {
"linkedin": {
"command": "npx",
"args": ["-y", "[email protected]"]
}
}
}
ローカルの状態を確認するには whoami から始めてください。アカウントの読み取りを
意図的に許可する場合は、次を試してください。「自分のプロフィールを一度だけ読み取り、返されたステータスと部分的な
メタデータがあれば報告してから、セッションを閉じてください。再試行や書き込みはしないでください。」 チェックポイントで停止してください。
現在のプロバイダーの利用可能状況は不確かです。空、部分的、エラーの各ステータスをそのまま保持してください。
Claude Desktop、Cursor、VS Code での初回利用時の結果は、まだ測定されていません。
ソースからの利用/コントリビューション
git clone https://github.com/devag7/linkedin-mcp.git
cd linkedin-mcp
npm ci
npm run setup:browser # installs the Chrome patchright drives
npm run login # manual account login; only with your deliberate consent
npm run spike # live own-profile request; requires separate authorization
npm run build # produces dist/
node dist/index.js --doctor # local setup checks; no browser or network
npm run verify:package # install/test the packed artifact offline against LinkedIn
MCP の設定:「"command": "node", "args": ["/absolute/path/to/dist/index.js"]」。
このソースチェックアウトを診断する
npm run build
node dist/index.js --doctor
レポートには、パッケージ/Chrome の利用可能状況、プロファイルのアクセス可能性と所有者、 安全状態の有効性、選択されたトランスポート、次の手順が表示されます。Cookie、トークン、 プロファイルの内容、プライベートなパスは含まれません。Chrome を開いたり、LinkedIn に接続したりすることはありません。
ログインを済ませ、プロファイルを使用する他のプロセスを停止してから、
node dist/index.js --doctor --live を明示的に選択し、ライブの ID 読み取りを実行してください。このプローブには
30 秒の期限があり、その後ブラウザーをクリーンアップします。期限に達しても、
すでに開始された読み取りがキャンセルされたとは限りません。診断に書き込みは含まれません。
低温状態のランタイムでは、whoami は sessionState: "not_checked" と
loggedIn: null を報告します。health_check は保存されたセッションを意図的に開き、ライブ API チェックを実行します。
保存されたプロファイルや Cookie だけを根拠に、API が正常であるとは報告しません。
画面ありのログインにはローカルディスプレイが必要です。通常のサーバーでは、デフォルトでヘッドレス Chrome が使用されます。 リモートでのブラウザー/プロファイルのデプロイやプロファイルのコピーは、ここでは検証されていません。
ローカル HTTP クライアント
デフォルトは引き続き Stdio です。HTTP は、Authorization ヘッダーを送信できるローカル MCP クライアント向けの明示的なループバック限定オプションです。リモートホスト、リバースプロキシ、ブラウザーの CORS クライアント、サーバーレスデプロイはサポートされていません。
ローカルのシークレットを生成し、このチェックアウトからサーバーを起動します。
npm run build
export LINKEDIN_HTTP_TOKEN="$(node -e 'console.log(require("node:crypto").randomBytes(32).toString("hex"))')"
node dist/index.js --transport http --port 3000
クライアントに URL http://127.0.0.1:3000/mcp とヘッダー
Authorization: Bearer <the same LINKEDIN_HTTP_TOKEN value> を設定します。シークレットはクライアントの保護された設定に保存し、URL に含めたり、コミットしたりしないでください。
トークンには、英字、数字、アンダースコア、ハイフンを 32~256 文字含める必要があります。ランダムに生成してください。長さの検証では、トークンが予測不可能であることを証明できません。
GET /healthを含むすべてのエンドポイントでトークンが必要です。認証情報がないか無効な場合は401を返します。ヘルスステータスはリスナーの状態を示すものであり、LinkedIn のログイン状態を示すものではありません。- HTTP は
127.0.0.1にバインドします。ホストは127.0.0.1:<port>またはlocalhost:<port>である必要があります。Origin がある場合は、http://<Host>と完全に一致する必要があります。 無効なホスト/Origin には403を返します。CORS アクセスは許可されません。 POST /mcpで受け付けるのは、圧縮されていない 1 MiB 以下の JSON です。リクエスト本文のアップロード期限は 10 秒、レスポンス期限は 180 秒です。同時に処理できる HTTP リクエストは最大 16 件、TCP 接続は最大 32 件です。上限を超えたリクエストには503を返します。- プロトコル接続は、このプロセス内のブラウザー、キュー、ペーサー、予算トラッカー、サーキットブレーカーを共有します。クライアントを閉じてもブラウザーは閉じません。リスナーをシャットダウンすると、共有ランタイムが閉じます。
- タイムアウトや切断が発生しても、アクションがキャンセルされたとは限りません。長いペーシング待機はレスポンス期限を超える場合があります。書き込みを再試行する前に LinkedIn を確認してください。HTTP が書き込みを自動的に再試行することはありません。長時間実行するワークフローには Stdio を推奨します。
ブラウザープロファイルの所有権とアカウント予算のトランザクションは、ローカルプロセス間で共有されます。2 つ目のプロセスによる所有権の取得は、Chrome の起動前に拒否されます。これらの制御によって、アカウントの安全が保証されるわけではありません。SECURITY.md を参照してください。
🛡️ アカウントの安全
お読みください。 LinkedIn の自動化はユーザー契約に違反し、アカウントが制限または停止される可能性があります。このツールを含め、これを防げるツールはありません。組み込みの安全機能(1 日あたりの上限、人間らしいペーシング、ウォームアップ、サーキットブレーカー)は、リスクを軽減しますが、なくすことはできません。
デフォルトでは、保守的な設定を採用しています。
- 接続は1 日 20 件、メッセージは1 日 50 件、「いいね」+コメントは合わせて1 日 50 件、フォローは1 日 30 件で、書き込みの合計上限はローカル時間の 1 日あたり 150 件です。
- プロフィールの閲覧は1 日 80 件、検索は1 日 30 件です。
- 保守的なウォームアップ上限、保留中の招待の上限、承認率に基づく一時停止を設けています。最初に利用が確認されると、永続化されるウォームアップ期間の計測を開始します。1 週目はメッセージがブロックされ、2 週目と 3 週目に段階的に送信が許可されます。これはツールのローカルでの利用期間を計測するものであり、LinkedIn アカウントの使用年数を示すものではありません。
- 読み取りは 4~12 秒間隔、書き込みは 45~150 秒間隔で実行し、長い休止時間と稼働時間帯の制限を設けています。
- 永続的なサーキットブレーカーは、チェックポイント URL、HTTP 999、JSON エンドポイントからのチャレンジ HTML、またはサポート対象のチャレンジページのシグナルが検出されると、それ以降の自動呼び出しをブロックします。チェックポイントの解決を試みることはありません。すでに実行中のリクエストを取り消すことはできません。
プラットフォームのルールを確認し、この連携がお使いのアカウントに適切かどうか判断してください。上限やペーシングによってアカウントの制限を防げるわけではありません。チャレンジには手動で対処してください。安全機能を、コンプライアンスや検出回避の保証として扱わないでください。
チェックポイントからの復旧
CHECKPOINT_REQUIRED はチャレンジが検知されたことを意味し、CIRCUIT_OPEN は保存された停止状態が引き続き有効であることを意味します。停止中、health_check は LinkedIn へのプローブを行わず、blocked を報告します。whoami と close_session は引き続き使用できます。
- プロファイルを使用しているすべてのサーバー/プローブを停止します。
linkedin-mcp --loginを実行し、Chrome でチェックポイントを手動で完了して、LinkedIn のフィードを開きます。- ログイン時にセッションと API の両方が検証されたと報告された後にのみ、サーバーを再起動します。Cookie だけでは停止状態は解除されません。再起動や
--logoutでも解除されません。
ブレーカーの状態はプロファイルの隣に保存されます:<LINKEDIN_PROFILE_DIR>.circuit.json(デフォルトは ~/.linkedin-mcp/profile.circuit.json)。対話形式での復旧に成功すると、ハードストップが解除され、アクションのクールダウンは維持されます。状態が無効または読み取り不能の場合はフェイルクローズします。自動化を再開するには、状態を復元するかストレージを修復してください。削除しないでください。
通常のログイン期限切れでは、ハードトリップせずに AUTH_REQUIRED が返されます。リダイレクト先が不明な場合、その遷移先を特定できないため、チェックポイントだと推測せず、認証が必要な状態として報告されます。検知には範囲を限定したレスポンス/ページシグナルを使用します。LinkedIn のすべてのチャレンジ形式との現在の互換性を保証するものではありません。
書き込み結果と操作 ID
5 つすべてのアルファ版書き込みツールでは、LINKEDIN_ENABLE_WRITES=true と confirm:true が必要です。確認が省略または false の場合、Chrome を開かずにローカルプレビューを返します。対象、内容、対象者、ルートを確認してください。人間による明示的な承認後、返された操作 ID を operation_id として、トークンを preview_token として使用します。トークンは5分後に期限切れとなり、正確なアクション、対象、内容に紐付けられ、送信時に消費されます。証明がない場合や変更されている場合、ディスパッチ前に拒否されます。トークンはサーバーがプレビューを発行したことを証明しますが、人間の同意を証明するものではありません。新しいメッセージスレッドの開始には LINKEDIN_ENABLE_EXPERIMENTAL_MESSAGES=true も必要で、現時点でライブ環境での成功を示す証拠はありません。承認済みの呼び出しの前に、一意の operation_id(英字、数字、_、- を8~128文字)を指定してください。例:
{
"text": "The draft you reviewed",
"visibility": "PUBLIC",
"confirm": true,
"operation_id": "<operationId returned by the reviewed preview>",
"preview_token": "<token returned by that same preview>"
}
上記のプレースホルダーは、実際のプレビュー値に置き換える必要があります。この例を変更せずにコピーして送信しないでください。
結果には operationId、replayed、status、ok、httpStatus が含まれます。同じツール、ID、入力を繰り返すと、再送信せずに保存済みの結果を取得できます。再起動後も同様です。同じ ID で入力を変更すると拒否されます。省略された場合、プレビューで ID を生成できます。新しい送信には必ず、そのプレビュー ID とトークンを含めてください。以前に記録された結果は、期限切れ後や再起動後でも、新しいトークンなしで同一のツール/ID/入力を使って照会できます。不確かな送信を再試行するために、別の ID を生成してはいけません。
unknown は、リクエストが LinkedIn に到達した可能性があることを意味します。切断、タイムアウト、サーバーエラー、読み取り不能な本文、認識されない成功レスポンスでは、処理が完了したかどうかを判定できません。対象を手動で確認してください。サーバーが自動的に再試行することはありません。同じ ID は照会用として引き続き使用されます。本文に重複または接続済みを明示するシグナルがない場合、単独の HTTP 409 は failed となります。クォータやアカウント制限の結果が発生すると、対応するアクションのクールダウンが有効になります。
安全制限では、既知の失敗や不確かな結果を含む、予約されたすべての試行がカウントされます。確認済みの接続のみが、送信済み/保留中の招待分析に加算されます。不確かな招待も、日をまたいで招待の安全ゲートに保守的に加算されます。health_check には、記録された attempted、successful、uncertain の合計が含まれます。旧バージョンの過去の件数は actions.used に保持され、成功したものとは推測されません。
ジャーナルは、既存のカウンターとともに ~/.linkedin-mcp/budgets.json に保存されます。
ID、入力ハッシュ、アクション区分、日付、ステータスコードを保持しますが、メッセージや投稿のテキスト、レスポンスの詳細は保存しません。再実行時には、保存済みのステータス/コードと汎用的な説明が返されます。状態データが破損している、または読み取れない場合は起動がブロックされます。保存に失敗すると、ストレージが修復されるまで、それ以降のデータ処理やアクションは停止します。ファイルは所有者のみがアクセスできる権限でアトミックに置き換えられます。エントリー数が10,000件、または状態ファイルのサイズが8 MiBに達すると、ジャーナルへの新規書き込みは停止します。IDが自動的に破棄されることはありません。状態データを削除すると、安全性のカウントと再実行保護の両方が消去されます。
ランタイムは、認証済みの /me の本人確認情報からハッシュ化されたアカウントキーを導出します。Cookie、プロファイルのパス、公開ユーザー名をアカウントキーとして使用することはありません。同じメンバーの異なるプロファイルでは、共通の予算/ジャーナルファイルを使用します。ブラウザーの起動時と書き込みの前に、本人確認を再度行います。メンバーが変わった場合、ランタイムは ACCOUNT_CHANGED で停止します。アカウントを確認してから再起動してください。本人確認ができない場合や曖昧な場合は、送信前に ACCOUNT_UNRESOLVED が返されます。
予算の予約/確定では、共通のローカルファイルシステムロックの下で再読み込みと保存を行います。読み取りに失敗した場合も、計測対象の読み取り上限にカウントされます。既存の default カウントは、割り当て先のない保守的な許容量の減算として維持されます。新しいメンバーに割り当てられたり、書き込みが成功したものとして扱われたりすることはありません。割り当て先のないレガシー操作 ID は、確認済みのメンバーのものだと断定せず、unknown を返します。新しいランタイムでは、ジャーナルの照会に必要な本人確認の読み取りを行う前に、ハードチェックポイントが適用されます。
プロファイルの所有権には <canonical-profile>.owner.lock を使用し、共有予算のトランザクションには <canonical-budget-file>.lock を使用します。close_session やアイドル時のクローズ後も、プロセスから Chrome を再起動できる間は、プロファイルの所有権が維持されます。ロックを解放するには、サーバーを停止してください。タイムアウトや PID の推測によってロックが奪われることはありません。クラッシュ後は、すべてのユーザーと関連する Chrome プロセスを停止し、安全性に関するファイルを保持したうえで、孤立したロックディレクトリのみを手動で修復してください。自動化を再開するために、予算やジャーナルを削除してはいけません。状態共有がサポートされるのはローカルファイルシステムのみです。ネットワークファイルシステムと、電源喪失時のデータ永続性は保証されません。
書き込みの証拠および アカウント/所有権の証拠を参照してください。
⚙️ 設定
| 変数 | デフォルト | 説明 |
|---|---|---|
LINKEDIN_PROVIDER | browser | 公式モードは利用できず、ブラウザーの作成前に拒否されます。 |
LINKEDIN_HEADLESS | true | サーバーはヘッドレスで実行されます。--login は常に実際のウィンドウを開きます。ブラウザーを表示するには false を設定します。 |
LINKEDIN_CHROME_PATH | — | Chrome バイナリの明示的なパス(指定しない場合は patchright のパス)。 |
LINKEDIN_PROFILE_DIR | ~/.linkedin-mcp/profile | 永続的なブラウザープロファイル。 |
LINKEDIN_IDLE_TIMEOUT_MS | 300000 | このアイドル時間が経過するとブラウザーを閉じます(0 で無効)。 |
LINKEDIN_CONCURRENCY | 1 | 直列実行のみサポートされます。 |
LINKEDIN_ENABLE_WRITES | false | アルファ版ブラウザー書き込みを明示的に有効にします。呼び出しごとの承認も必要です。 |
LINKEDIN_ENABLE_EXPERIMENTAL_MESSAGES | false | 未検証の新規スレッドへのメッセージ送信を個別に明示的に有効にします。 |
TRANSPORT | stdio | stdio(主要な方式)またはローカル専用の http。 |
LINKEDIN_HTTP_TOKEN | — | HTTP で必須となるランダムなベアラーシークレット。stdio では使用されません。 |
ツール契約と検証
24 個の登録済みツール。ネイティブ契約バージョン 1 は、構造化された内容と同一の JSON テキストを返し、fetchedAt、source、partial、status のメタデータを含みます。ルートと検証の全一覧。
| グループ | ツール |
|---|---|
| セッション | whoami、health_check、close_session |
| 読み取り | get_my_profile、get_profile、get_feed、get_notifications、search_people、search_jobs、get_inbox、get_job_details、prepare_job_application、export_application_tracker、search_companies、get_company、get_company_posts、get_company_employees、get_pending_invitations、get_conversation |
| オプトインのアルファ版書き込み | connect_with_person、send_message、create_post、react_to_post、comment_on_post |
オフラインの操作手順
このチェックアウトをビルドし、npm run demo:offline を実行します。合成入力と永続化された停止条件を使って、実際のローカル MCP 呼び出しを行います。コールド状態、機能、レビュー可能なドラフトのプレビュー、ブロックされた読み取り、正常な終了を確認します。ブラウザーは開かず、LinkedIn にリクエストを送信しません。日付入りのサンプル出力には合成データであることが明記されています。実際の初回読み取りの記録は、同意を得た検証手順として残されています。
範囲を限定したワークフローとセットアップ
求人・企業の調査、プロフィールの比較、受信トレイのトリアージには、明示的な呼び出し上限とソースリンクのルールが記載されています。クライアントのセットアップでは、ローカルで実行確認済みの MCP トランスポートと、未テストのクライアントアプリケーションを区別しています。プライバシーと削除では、保持される安全性履歴について説明しています。 選択したプロフィールの廃止設計では、選択したプロフィールを廃止するコマンド、その確認と中断時の動作、中断された試行に対する読み取り専用の復旧プレビュー、および意図的に保持される共有状態について説明しています。両コマンドは公開済みの 4.1.0 に含まれています。 ロードマップの対応状況では、すべての受け入れ要件を追跡しています。 3.1.0 リリースでは、ファイルを変更したり他のサーバーの認証情報を公開したりせず、明示的に選択した JSON/JSONC ファイルのエントリが欠落、合致、競合のいずれであるかを確認する、読み取り専用の設定マージプレビューが追加されました。公開済みの 3.1.0 で利用できます。ネイティブクライアントと実環境での互換性は、まだ検証されていません。 公式プロバイダーのパイロットでは、必要なアプリ/スコープと、まだ取得が必要な統合の証拠について説明しています。実験的な Docker ビルダーステージは Node 22 でローカルテストに合格しました。コンテナーの表示/ログインとランタイムは、まだ検証されていません。
🛠 開発
npm run dev # run from source (stdio)
npm run typecheck
npm test # vitest (safety layer + smoke)
npm run build
📄 ライセンス
MIT — LICENSEを参照してください。クラウド同期によって欠落したファイルは、メンテナーの承認を得て、コミット済みのリビジョンから復元されました。3.0.0 のコアスコープと宛先の受領記録は、リリース準備状況で追跡されています。LinkedIn とは提携していません。
バージョン 3.1.0 のローカルデータ一覧
3.1.0 のコマンド node dist/index.js --data-inventory は、固定されたローカルストレージカテゴリのうち、どれが存在するかを報告します。対象は、選択したプロフィール、そのサーキットブレーカーと所有者ロック、共有の予算/書き込みジャーナルとトランザクションロック、およびレガシー認証情報です。ファイルシステムのメタデータのみを読み取り、プライベートなパスや内容は出力せず、何も変更しません。JSON の読み取りや検証、プロフィールの内容の走査、所有者が処理を停止したことの証明、Windows ACL の検証、削除の承認は行いません。エイリアス、予期しない型、アクセス不能または変更された識別情報、あるいは存在するロックが検出された場合は、終了コード 1 で needs_attention を返します。それ以外の場合の observed は、範囲を限定した存在確認のスナップショットが成功したことだけを意味します。
このコマンドはリリース済みの 3.1.0 で利用可能であり、3.0.0 には含まれていません。一覧の契約を参照してください。関係者間で調整された消去は、引き続き未完了です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。