LinkedIn MCP Server について
LinkedIn MCP Serverは、LinkedIn公式APIを通じてプロフィール、投稿、イベントを管理するMCPサーバーです。OAuth 2.0を使い、許可されたスコープに応じてツールを提供します。
主な機能
- 01OAuth 2.0認証とセッション復元
- 02プロフィールと認証状態の確認
- 03投稿の作成・削除とコメント
- 04投稿へのリアクションと画像アップロード
- 05イベントの作成と詳細取得
- 06適応型レート制限と再試行
活用シーン
- 01LinkedIn投稿の公開や削除
- 02プロフィール情報とAPI制限の確認
- 03投稿へのコメントやリアクション
- 04LinkedInイベントの作成と確認
MCP 対応
MCPサーバーとして、互換クライアントにLinkedIn API操作ツールを提供します。利用可能なツールは付与されたOAuthスコープによって異なります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
LinkedIn MCP サーバー
AI アシスタントが LinkedIn の公式 API にアクセスできるようにする Model Context Protocol(MCP)サーバーです。MCP 対応クライアントから自然言語で、投稿の作成、イベントの管理、LinkedIn とのやり取りができます。
公式 API のみを使用します。 スクレイピングや非公式エンドポイントは使用せず、アカウントのリスクもありません。
機能
セルフサービスツール(LinkedIn の承認不要)
| ツール | 説明 |
|---|---|
linkedin_auth_start | OAuth 2.0 認証フローを開始します |
linkedin_auth_callback | 認証コードで OAuth を完了します |
linkedin_auth_logout | トークンを失効させてログアウトします |
linkedin_get_my_profile | LinkedIn プロフィール(名前、見出し、写真、メールアドレス)を取得します |
linkedin_get_my_email | メールアドレスを取得します |
linkedin_get_auth_status | 認証状態を確認します |
linkedin_get_rate_limits | API のレート制限使用状況を表示します |
linkedin_create_post | テキスト、記事、画像の投稿を作成します |
linkedin_delete_post | 自分の投稿を削除します |
linkedin_create_comment | 投稿にコメントします |
linkedin_react_to_post | 投稿にリアクションします(いいね、祝う、応援、愛情、洞察に富む、おもしろい) |
linkedin_upload_image | 投稿用の画像をアップロードします |
linkedin_list_my_posts | このサーバー経由で作成した投稿を、参照用の URN とともに一覧表示します |
linkedin_create_event | LinkedIn イベントを作成します |
linkedin_get_event | イベントの詳細を取得します |
アーキテクチャの特長
- OAuth 2.0 - トークンを永続的に保存する安全な認証
- セッションの自動復元 - サーバーを再起動しても再認証は不要です(トークンの有効期限が切れるまで)
- 投稿履歴の追跡 - サーバー経由で作成した投稿を参照・削除しやすいよう、SQLite にローカル記録を保存します
- 適応型レート制限 - レスポンスヘッダーから LinkedIn の実際の制限を学習します
- 自動再試行 - 一時的な障害(429、5xx)に対して指数バックオフを行います
- 機能検出 - 許可されたスコープに対応するツールのみを公開します
- API バージョン管理 - LinkedIn の月次 API バージョン切り替えに対応します
前提条件
- Node.js 20 以降
- LinkedIn Developer App(以下のセットアップ手順を参照)
LinkedIn アプリのセットアップ
手順 1: LinkedIn Developer App を作成する
- linkedin.com/developers/apps にアクセスしてサインインします
- Create app をクリックします
- 必須項目を入力します:
- App name:任意の名前を選びます(例:「My MCP LinkedIn」)
- LinkedIn Page:自分の LinkedIn ページを選択するか、必要に応じて作成します
- Privacy policy URL:ウェブサイトの URL またはプレースホルダーを使用できます
- App logo:任意の画像をアップロードします(必須)
- 法的契約のチェックボックスにチェックを入れ、Create app をクリックします
手順 2: Client ID と Client Secret を取得する
- アプリを作成すると、アプリの設定ページが表示されます
- Auth タブに移動します
- Client ID をコピーします。設定に必要です
- Client Secret をコピーします(目のアイコンをクリックすると表示されます)。こちらも必要です
手順 3: リダイレクト URL を追加する
- 引き続き Auth タブで、OAuth 2.0 settings までスクロールします
- Authorized redirect URLs for your app の下にある Add redirect URL をクリックします
- 次の URL を入力します:
http://localhost:3000/callback - Update をクリックして保存します
重要:リダイレクト URL は、プロトコル(
http://)、ポート(:3000)、パス(/callback)を含めて完全に一致させる必要があります。末尾にスラッシュを付けないでください。
ステップ 4:必要な製品を有効にする
- アプリのページで Products タブを開きます
- 次の 2 つの製品へのアクセスをリクエストします:
- Sign In with LinkedIn using OpenID Connect - Request access をクリックし、利用規約を確認して同意します
- Share on LinkedIn - Request access をクリックし、利用規約を確認して同意します
- どちらの製品も、通常はセルフサービスでの利用について即時に承認されます
確認:有効にした後、Auth タブに戻ります。OAuth 2.0 scopes に次の項目が表示されていることを確認してください:
openid、profile、w_member_social。
クイックスタート
1. インストール
git clone https://github.com/souravdasbiswas/linkedin-mcp-server.git
cd linkedin-mcp-server
npm install
npm run build
2. MCP クライアントを設定する
Claude Code の場合(推奨):
claude mcp add linkedin \
-e LINKEDIN_CLIENT_ID=your_client_id \
-e LINKEDIN_CLIENT_SECRET=your_client_secret \
-- node /path/to/linkedin-mcp-server/dist/index.js
または、~/.claude.json に手動で追加します:
{
"mcpServers": {
"linkedin": {
"command": "node",
"args": ["/path/to/linkedin-mcp-server/dist/index.js"],
"env": {
"LINKEDIN_CLIENT_ID": "your_client_id",
"LINKEDIN_CLIENT_SECRET": "your_client_secret"
}
}
}
}
Claude Desktop の場合は、claude_desktop_config.json に追加します:
{
"mcpServers": {
"linkedin": {
"command": "node",
"args": ["/path/to/linkedin-mcp-server/dist/index.js"],
"env": {
"LINKEDIN_CLIENT_ID": "your_client_id",
"LINKEDIN_CLIENT_SECRET": "your_client_secret"
}
}
}
}
your_client_id と your_client_secret を、ステップ 2 の値に置き換えます。
3. 認証する
接続したら、AI アシスタントに次のように伝えます:
「LinkedIn で認証して」
アシスタントが OAuth URL を生成します。手順は次のとおりです:
- ブラウザーで URL を開きます
- LinkedIn にサインインし、Allow をクリックしてアプリを認可します
- LinkedIn が
http://localhost:3000/callback?code=XXX&state=YYYにリダイレクトします - ローカルで待ち受けているサーバーがないため、「ページが見つかりません」というエラーが表示されます。これは想定どおりです
- ブラウザーのアドレスバーから URL 全体をコピーし、アシスタントに貼り付けます
- アシスタントが
codeとstateパラメーターを抽出し、認証を完了します
初回の認証後、セッションはサーバーを再起動しても維持されます(トークンの有効期間は 60 日です)。トークンの期限が切れた場合にのみ、再認証が必要です。
4. 使用する
プロンプトの例:
- 「LinkedIn に投稿して:API のレイテンシを 40% 削減する新機能をリリースしました」
- 「自分の LinkedIn の投稿を一覧表示して」- サーバー経由で作成したすべての投稿を確認します
- 「最後の LinkedIn の投稿を削除して」
- 「来週金曜日の午後 2 時に、チームの交流会の LinkedIn イベントを作成して」
- 「この LinkedIn の投稿に「お祝い」のリアクションをして」
- 「自分の LinkedIn プロフィール情報は?」
環境変数
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
LINKEDIN_CLIENT_ID | はい | - | LinkedIn アプリのクライアント ID |
LINKEDIN_CLIENT_SECRET | はい | - | LinkedIn アプリのクライアントシークレット |
LINKEDIN_REDIRECT_URI | いいえ | http://localhost:3000/callback | OAuth リダイレクト URI |
LINKEDIN_MCP_DATA_DIR | いいえ | ~/.linkedin-mcp | トークン保存用ディレクトリ |
LINKEDIN_API_BASE_URL | いいえ | https://api.linkedin.com | API ベース URL(テスト用に上書き) |
LINKEDIN_AUTH_BASE_URL | いいえ | https://www.linkedin.com/oauth/v2 | 認証ベース URL |
開発
# Install dependencies
npm install
# Type check
npm run typecheck
# Run tests
npm test
# Run tests in watch mode
npm run test:watch
# Run with coverage
npm run test:coverage
# Lint
npm run lint
# Dev mode (tsx, no build needed)
npm run dev
テストの構成
テストはすべてモックの LinkedIn API サーバーに対して実行され、実際の API 呼び出しは行われません。
| レイヤー | テスト内容 | ファイル |
|---|---|---|
| ユニットテスト | 認証、PKCE、トークンストア、レート制限、エラー、機能 | tests/unit/ |
| 統合テスト | インメモリトランスポート経由の MCP プロトコル全体のフロー | tests/integration/ |
| コントラクトテスト | リクエスト/レスポンスの形式が LinkedIn API 仕様に一致すること | tests/contract/ |
プロジェクト構成
src/
index.ts # Entry point, stdio transport
server.ts # MCP server wiring
auth/
oauth2.ts # OAuth 2.0 flow + token exchange
token-store.ts # SQLite token persistence + session auto-restore
pkce.ts # PKCE challenge generation (available for public clients)
tools.ts # Auth MCP tools
client/
api-client.ts # HTTP client with retry
rate-limiter.ts # Adaptive rate limiting
version-manager.ts # LinkedIn API versioning
errors.ts # Structured error types
post-history.ts # Local post tracking (SQLite)
capabilities/
detector.ts # Scope-based capability detection
modules/
profile/tools.ts # Profile reading tools
posting/tools.ts # Post creation/management tools
events/tools.ts # Event management tools
types/
linkedin.ts # LinkedIn API type definitions
config.ts # Server configuration types
制限事項
以下は LinkedIn API の制限であり、サーバーの制限ではありません:
- 他のユーザーのプロフィールは読み取れません - 認証済みユーザー自身のプロフィールのみ利用できます
- 人物を検索できません - 公開検索 API はありません
- メッセージを送信できません - Sales Navigator パートナーのみ利用できます
- フィードを読み取れません -
r_member_socialスコープは公開されていません - つながりにアクセスできません - Marketing API の承認がある場合に限り、つながりの数を取得できます
- レート制限 - アプリあたり約 500 回/日、メンバーあたり約 100 回/日(開発者向けティア)
Pro ティアへの拡張
LinkedIn アプリが Community Management API または Advertising API の承認を受けている場合、対応するスコープで認証すると、サーバーの機能検出によって追加モジュールが自動的に有効になります。モジュール式のアーキテクチャにより、コアサーバーを変更せずに新しい API モジュールを追加できます。
License
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。