Skip to main content
Glama

LinkedIn Evidence MCP

独立したコミュニティ製ツールです。LinkedIn Corporation または Microsoft とは提携しておらず、承認も受けていません。「LinkedIn」は LinkedIn Corporation の商標であり、本ソフトウェアが相互運用するサービスを説明する目的でのみ使用されています。

ローカルファーストの LinkedIn ワークスペースで、1つの共有エンジンと、それを利用する2つの同期された方法を備えています:

  • stdio MCP サーバー — エビデンス、プロフィール、下書き、分析、メンテナンスのための主要なワークフローエンジンです。

  • オプションの ループバックダッシュボード — 同じツールとデータに対する視覚的なサポートおよび人間によるレビュー用のインターフェースです。

このアプリケーションは、このコンピュータ上に独自の SQLite データベースとアーティファクトストアを保持します。LLM、ホスト型サービス、スケジューラー、スクレイピング、ブラウザ自動化、クッキーの再利用、自動エンゲージメントは含まれていません。

ここではタイマーによる自動更新は一切行われません。LinkedIn データは、あなたまたはエージェントがそれを実行するツールを呼び出した場合にのみ取得されます。これは予測可能性に関する製品上の判断であり、LinkedIn の利用規約によって課された制限ではありません — 最新の LinkedIn プロフィールを読む を参照してください。

目的

このアプリは、あなたが管理するエビデンス(CV、ドキュメント、リポジトリ、LinkedIn エクスポート、手動でインポートした履歴)を次のものに変換します:

  • 検証済みの主張台帳(claim ledger)

  • エビデンスに裏付けられた正規プロフィール

  • 手動でのコピー/ペースト用の正確なプロフィール変更パッチ

  • 決定的検証を備えた LinkedIn 投稿下書き

  • コンテンツの柱、機会、計画カレンダー

  • 公開承認と追記専用の監査履歴

  • ローカルバックアップ、エクスポート、保持管理

外部の LinkedIn 機能はオプションです。対応する開発者アプリの認証情報が保存され、LinkedIn に対して検証され、必要な場所で明示的に有効化されるまで、それらは利用できません。製品の残りの部分は、それらの認証情報なしで動作します。

Related MCP server: linkedin-mcp

要件

  • Windows 10 以降、Linux、または macOS。 3つすべてがサポートされており、すべてがプッシュのたびに完全なテストスイートを実行します。

  • Node.js 24 以降(データベースは組み込みの node:sqlite を使用)

  • npm

エビデンスのインポートは、各プラットフォーム独自の絶対パス形式を受け入れます: Windows ではドライブ文字パス、Linux と macOS では / で始まるパス。ルールは実際に異なります — Windows は UNC パス、代替データストリーム、予約済みデバイス名も拒否しますが、POSIX ルールは埋め込まれた NUL バイトと曖昧な // ルートを拒否します — これは、あるプラットフォームがより信頼されているからではなく、危険な形状が異なるためです。

認証情報ボールトも異なり、その違いは依存する前に知っておく価値があります。3つすべてが同じ実用的な保証を提供します — 別のマシンや別のアカウントにコピーされたデータホームは開くことができません — しかし、それらの強度は同等ではありません:

プラットフォーム

マスターキーのシール方法

macOS

ログインキーチェーン内のランダムキー。OS がアクセス制御リストの背後で保持

最強

Windows

DPAPI。Windows アカウントにバインド

Linux

ホストマシン ID とユーザー ID から導出され、書き留められることはない

最弱 — /etc/machine-id は誰でも読み取れるため、ローカルのプロセスなら誰でも同じキーを導出できる

いずれも、あなたとして実行されるソフトウェアに対しては防御できません。これは SECURITY.md が常に範囲外として挙げてきたものです。このランキングが重要になるのは、ローカル攻撃者があなたの脅威モデルに含まれる場合のみです。その場合は、macOS または Windows を選ぶか、LinkedIn 認証情報をまったく保存しないでください — 他のすべてはそれらなしで動作します。

対話型セットアップアシスタントは PowerShell であるため、Windows 専用です。Linux と macOS では、MCP クライアントを手動で設定します。これは1つの JSON ブロックです — MCP サーバーセットアップ を参照してください。npm run setup:mcp は、失敗する代わりに、そのブロックをプラットフォームに適したデータホーム付きで正確に出力します。

オプションの LinkedIn 読み取りレーンには、もう1つの別の制限があります: LinkedIn は、欧州経済領域またはスイスに所在するメンバーにのみ Member Data Portability トークンを発行します。LinkedIn に触れないものはすべて、関係なく動作します。

クイックスタート

リポジトリのルートから:

npm run setup:mcp

Windows では、以下で説明する対話型アシスタントが実行されます。Linux と macOS では、アシスタントは適用されません — PowerShell であり、Windows クライアントのパスを書き込むためです — 代わりに npm run setup:mcp が、MCP クライアントに手動で追加する1つの JSON ブロックを、プラットフォームに適したデータホーム付きで出力します。このセクションの残り(PowerShell コマンド)は Windows 専用です。クライアントごとの例は MCP サーバーセットアップ にあります。短いバージョンは、以下の ダッシュボードなしで MCP を使用する で、すべてのプラットフォームで同一です。

最初に何を行うかを確認する(Windows):

powershell -NoProfile -ExecutionPolicy Bypass -File .\setup-mcp.ps1 -All -NonInteractive -DryRun

Windows は、デフォルトの Restricted 実行ポリシーの下では署名なしの .ps1 の実行を拒否するため、素の .\setup-mcp.ps1 は何もする前に失敗します。-ExecutionPolicy Bypass はその1回の呼び出しにのみ適用され、マシンには何も変更しません — これは npm run setup:mcp が行うこととまったく同じです。それを信頼したくない場合は、まずスクリプトを読んでください。-DryRun は、書き込み用に開くことなく、触れるすべてのファイルを出力します。

アシスタントは他のアプリケーションに属する設定ファイルを編集するため、実行を許可する前に、それがどのファイルかを知っておく価値があります。選択したクライアントに応じて、~/.codex/config.toml、~/.claude.json、%APPDATA%\Claude\claude_desktop_config.json、%APPDATA%\Code\User\mcp.json、~/.copilot/mcp-config.json、~/.cursor/mcp.json、~/.gemini/config/mcp_config.json に書き込む可能性があります。-NoPersistUserEnvironment を渡さない限り、LINKEDIN_MCP_HOME もユーザースコープの環境変数として保存します。

触れるすべてのファイルは、最初にタイムスタンプ付きのコピーでバックアップされ、linkedin エントリのみが置き換えられ、厳密な JSON ではないファイルは書き換えではなく拒否され、失敗した場合は元のファイルが復元されます。

対話型アシスタントは Node.js をチェックし、必要に応じて依存関係をインストールし、MCP サーバーをビルドし、設定する AI クライアントを尋ね、すべての選択を1つの共有データホームに向けます。Codex、Claude Code、Claude Desktop、VS Code/Copilot Chat、GitHub Copilot CLI、Cursor、Google Antigravity をサポートしています。既存の JSON 設定はマージされバックアップされます。置き換えられるのは linkedin MCP エントリのみです。

設定したクライアントを再起動し、次にいずれかまたは両方のサーフェスを選択します:

# MCP server: normally started automatically by your AI client
npm run mcp:start

# Optional human review dashboard
npm run dashboard

mcp:start は stdin/stdout 上で JSON-RPC を話すため、通常のターミナルで実行すると待機しているように見えます。これは想定どおりです。代わりに MCP クライアントがそれを起動するように設定してください。MCP サーバーセットアップ を参照してください。

ダッシュボードは http://127.0.0.1:4780 の使い捨て URL を出力します。ダッシュボードの使用法 を参照してください。

繰り返し可能または無人セットアップの場合:

powershell -NoProfile -ExecutionPolicy Bypass -File .\setup-mcp.ps1 -Clients Codex,Cursor,VSCode -NonInteractive
powershell -NoProfile -ExecutionPolicy Bypass -File .\setup-mcp.ps1 -All -NonInteractive

別の共有ホームを選択するには -DataHome "C:\absolute\path" を使用します。アシスタントはその絶対パスを現在のユーザーの LINKEDIN_MCP_HOME として保存します。ダッシュボードを起動する前に新しいターミナルを開いて、新しく保存されたカスタム値を継承してください。選択したクライアントエントリのみを変更したい場合は、-NoPersistUserEnvironment を渡します。アシスタントは LinkedIn 認証情報を要求したり書き込んだりすることはありません。

MCP とダッシュボード間の共有状態

ダッシュボードと設定された各 MCP プロセスは、同じローカルアプリケーションホームを開きます。ダッシュボードで作業し、閉じて、AI エージェントを通じて続け、後で戻っても、手動でインポートや調整を行う必要はありません。

以下のすべてのパスはデータホームの下にあります(データの場所 を参照)。

共有状態

保存場所

エビデンス、主張、プロフィール状態、決定、下書き、リビジョン、承認、公開履歴、監査イベント、設定、進捗

data/linkedin.sqlite3

インポートされた作業コピーと生成されたアーティファクト

artifacts/

暗号化された LinkedIn 認証情報

SQLite 内の暗号文と secrets/ 内のシールされたマスターキー — Windows では DPAPI、macOS ではキーチェーンでシール、Linux ではマシンから導出

バックアップ

backups/

SQLite WAL モードと制限付き書き込み再試行により、ダッシュボードと MCP クライアントを同時に実行できます。ダッシュボードは、フォーカスを取り戻したときと、表示中は定期的に現在の画面を更新するため、エージェント側の変更は再起動せずに表示されます。

これは1つのユーザーアカウント上のローカル同期であり、クラウドや複数マシン間の同期ではありません。シークレットは両方のプロセスで使用可能ですが、AI クライアント設定にコピーされたり、モデルに返されたり、エクスポートされたり、ログに記録されたり、バックアップに含まれたりすることはありません。

ダッシュボードなしで MCP を使用する

ダッシュボードと MCP サーバーは別々のプロセスです。Codex、Claude、Copilot、Cursor、Antigravity、VS Code、または他の stdio MCP ホストを接続する前に、ダッシュボードを起動する必要はありません。

ビルド後、コンパイルされたエントリポイントを絶対パス(Windows ではバックスラッシュ、Linux と macOS では /)で起動するようにクライアントを設定します:

node <absolute-path-to-repo>/linkedin-mcp-server/dist/index.js

人間が操作するターミナルから最初のエビデンスソースを追加してインポートするには — パスは例です。プラットフォームが受け入れる形式で独自の絶対パスを使用してください:

npm run evidence:add -- "C:\path\to\cv.pdf" document personal_doc "Current CV"
# Linux / macOS:  npm run evidence:add -- "/home/you/cv.pdf" document personal_doc "Current CV"

このコマンドは、ダッシュボードを開かずにソースを明示的に登録、有効化、インポートします。ソースの種類は repo、document、folder、linkedin_export、manual です。信頼レベルは personal_doc、own_repo、local_clone_reference です。

その後、接続したエージェントに次のことを依頼できます:

Use the LinkedIn MCP capability-status tool, then list my evidence sources and candidate claims.

MCP が通常のワークフローを駆動します。ダッシュボードには、専用のレビュー画面に加えて System → All MCP tools があり、まったく同じ検証済みツールレジストリを公開します — ビジネスロジックのダッシュボード専用コピーはありません。シークレットの入力は、チャットを通じて意図的に利用できない唯一の操作です。その他の重要な操作には、アクションにバインドされた明示的な確認が必要です:

アクション

ダッシュボード不要のオプション

エビデンスの登録、有効化、インポート

MCP(有効化にはENABLE <source_id>が必要)、npm run evidence:add -- ...、またはダッシュボード/CLI

非シークレット設定の変更

linkedin_settings_set MCPツール

LinkedInアクセストークンの保存

npm run control -- lane configure read / write --client-id <id>(マスク表示プロンプト)

公開承認の付与、拒否、または修正

接続中のエージェントに判断を伝え、linkedin_approval_decideのバインドされたコマンドを確認するか、ダッシュボード/コントロールCLIを使用

実際の公開の有効化

linkedin_feature_control、ダッシュボードのFeatures、またはnpm run control -- feature enable live_publishing --confirm(書き込みレーンの検証後)

アカウントへの公開

承認後のPUBLISH <approval_id>を伴うlinkedin_publish_execute。このバージョンではテキスト投稿のみ

LinkedInポータビリティデータのみ削除

linkedin_purge_runのpurge_dmaモード、またはnpm run control -- purge dma --confirm "DELETE LINKEDIN PORTABILITY DATA"。prune_dma / --before <ISO>は古い履歴を削除し、現在のプロフィールを保持

すべてのローカルデータを完全に消去

確認済みのlinkedin_purge_run、ダッシュボード、またはnpm run control -- purge all --confirm "DELETE ALL LOCAL DATA"

引数なしでnpm run controlを実行すると、対話型メニューが表示されます。CLIはダッシュボード不要のシークレット入力手段でもあり、アクセストークンはマスク表示され、MCPペイロードに入ることはありません。

共有フィーチャーコントロール

9つのフィーチャーグループが共有SQLiteデータベースに保存され、MCPハンドラーとダッシュボードルートの両方で適用されます:evidence、profile、content、publication_workflow、analytics、linkedin_sync、maintenance、configuration、live_publishing。最初の8つはデフォルトで有効です。無効がデフォルトなのはlive_publishingのみです。

linkedin_feature_control、System → Features、または以下で説明と現在の値を一覧表示できます:

npm run control -- feature list
npm run control -- feature disable analytics --confirm
npm run control -- feature enable analytics --confirm

フィーチャーポリシーはLinkedInの認証情報/APIの準備状況とは別です。したがって、live_publishingを有効にしても、検証済みの書き込みレーンが依然として必要であり、実際の投稿には毎回、付与済みのリビジョン拘束型承認と正確な公開コマンドが必要です。

エビデンスワークフローと判断

意図されたフローはMCPファーストです:

  1. MCPでエビデンスパスを登録し、エージェント、ダッシュボード、またはコントロールCLIを通じてENABLE <source_id>を明示的に確認します。

  2. エージェントにインポートさせ、保存バイトの整合性を検証し、抽出されたアーティファクトを検査し、引用付きの狭い主張を提案させます。

  3. 正確なステートメントをレビューします。競合しない主張は、明示的な人間の確認後にのみ検証済みになります。

  4. 競合、曖昧な表現、誇張表現を人間のレビューにエスカレーションします。MCP会話またはダッシュボードで解決します。どちらも同じ主張・競合サービスを呼び出します。

主張ステートメントは不変の履歴です。「修正」は新しい主張として修正された文言を作成し、古い主張を拒否またはマージします。これにより、以前の判断を黙って書き換えるのではなく、監査可能な状態に保ちます。

データの場所

デフォルトのホームは各プラットフォームの慣例に従います:

プラットフォーム

デフォルトのホーム

Windows

%LOCALAPPDATA%\linkedin-mcp

macOS

~/Library/Application Support/linkedin-mcp(または設定されている場合は$XDG_DATA_HOME/linkedin-mcp)

Linux

$XDG_DATA_HOME/linkedin-mcp、それ以外の場合は~/.local/share/linkedin-mcp

LINKEDIN_MCP_HOMEに絶対ディレクトリを設定すると、別のホームや分離されたテストコーパスを使用できます。これはすべてのプラットフォームでデフォルトを上書きします。相対パスは拒否されます。なぜなら、クライアントの作業ディレクトリが異なると別々のデータベースが作成される可能性があるためです。また、Windowsでは\linkedin-dataのようなドライブ相対パスも同じ理由で拒否されます。これはプロセスが実行されているドライブに対して解決されるためです。セットアップアシスタントは、どこでも同じ絶対値を設定します。

ライブホームをOneDrive、Dropbox、Google Drive、iCloud Drive、またはその他の同期フォルダーに置かないでください。SQLiteはライブWALデータベースを使用しており、開いている間にコピーすべきではありません。代わりに組み込みのバックアップコマンドを使用してください。

リポジトリマップ

パス

責務

linkedin-mcp-server/

プライマリエンジン:44のMCPツール、5つのリソース、5つのワークフロープロンプト、stdioトランスポート

linkedin-dashboard/

オプションのループバック視覚サポート、人間によるレビュー、正確なMCPツールコンソール

packages/domain/

エビデンス、プロフィール、下書き、承認、公開、監査、保持

packages/db/

SQLiteドライバー、マイグレーション、楽観的並行性制御、アーティファクトストレージ

packages/importers/

パス安全なZIP、CSV、PDF、DOCX、リポジトリスキャン、および編集

packages/linkedin/

フェイルクローズのLinkedIn OIDC、DMA、公開アダプター

packages/shared/

正規JSON、識別子、エラー契約

scripts/

人間が操作するオンボーディング、メンテナンス、評価コマンド

安全モデル

  • 検証済みの主張のみが公開プロフィールテキストや下書きを支えることができます。

  • インポートされたコンテンツは常に信頼できないデータとして扱われ、指示としては決して扱われません。

  • MCPは、ユーザーが正確な承認コマンドを明示的に確認した後にのみ、公開リクエストを付与、拒否、または修正できます。付与はリビジョンハッシュにバインドされます。

  • 承認は1つの正確な下書きリビジョンにバインドされ、公開前に消費されます。

  • 不確実なネットワーク結果はambiguousになり、自動的に再試行されることはありません。

  • 監査ログはハッシュチェーンで連結されており、チェーンの破損は承認と公開をブロックします。

  • インポートはコンテンツをアーティファクトストアにコピーし、元のファイルを変更することはありません。

  • シークレットはMCPペイロード、ログ、エクスポート、バックアップから除外されます。

開発と検証

npm ci
npm run typecheck
npm run build
npm test
npm run inspect:list
npm run test:visual

テスト前にビルド。 プロトコル整合性スイートはコンパイル済みのstdioサーバーを駆動するため、npm testにはlinkedin-mcp-server/dist/index.jsが存在する必要があります。上記の順序で手順を実行すれば十分です。別途セットアップはありません。

inspect:listはコンパイル済みのstdioサーバーをMCP Inspectorを通じて起動し、そのツールカタログを要求します。ビジュアルテストにはPlaywrightブラウザのインストールが必要です。

オプションのLinkedIn開発者アプリ設定については、docs/linkedin-app-setup.mdを参照してください。

ドキュメント

ドキュメント

内容

docs/architecture.md

2つのサーフェス、1つのエンジン。わかりにくいシーム部分

docs/compatibility.md

サポートされるプラットフォーム、ランタイム、MCPクライアント、既知の検証ギャップ

docs/known-limitations.md

できないこと、意図的な制限

docs/privacy-and-local-data.md

保存されるもの、マシンから出るもの、削除方法

docs/threat-model.md

資産、信頼境界、保護が及ばない範囲

docs/releases.md

バージョニング、アップグレード、ダウングレードが非対応の理由

docs/linkedin-app-setup.md

2つのLinkedIn開発者アプリの作成

docs/dashboard-design.md

ダッシュボードのデザインシステム

docs/dashboard-manual-checks.md

手動アクセシビリティとビューポートのチェックリスト

SECURITY.md

脆弱性の報告。非目標

CONTRIBUTING.md

グリーンビルドの達成。交渉不可のルール

SUPPORT.md

質問の場所、対象外の内容

ライセンス

MIT — LICENSEを参照。サードパーティ依存関係のライセンスはTHIRD-PARTY-NOTICES.mdに記載されています。商標および提携に関する文言はNOTICEにあります。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Local-first MCP server for research on AI-assisted browsing of a user-owned professional-network account (e.g., LinkedIn), providing read-focused tools such as profile, company, search, and feed reads.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A personal-use remote MCP server that lets you post to LinkedIn, queue/schedule drafts, and pull your own post analytics from Claude.
    17 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A local-first MCP server for auditing, drafting, and planning updates to your personal LinkedIn profile safely, without automation or scraping.
    10
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Local-first MCP server using LinkedIn's official OAuth and REST APIs to connect a member account, read profile, and publish text posts.
    4
    57 npm
    MIT