Mcp Linkedin について
Mcp Linkedinは、Unipile経由でLinkedInに投稿するAIアシスタント向けのMCPサーバーです。投稿、コメント、リアクション、メディア添付に対応し、公開操作は通常プレビューから始まります。
主な機能
- 01投稿、コメント、リアクションの作成
- 02公開操作のデフォルトプレビュー
- 03画像・動画メディアの添付
- 04企業の@メンション解決
- 05メディアファイルの検証
活用シーン
- 01公開前にLinkedIn投稿を確認する
- 02画像や動画付きの投稿を公開する
- 03LinkedIn投稿にコメントまたはリアクションする
MCP 対応
MCP サーバーはstdio経由で、LinkedInへの投稿、コメント、リアクションのツールをMCPクライアントに提供します。操作にはUnipile APIを呼び出します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-linkedin
AI アシスタントがユーザーに代わって LinkedIn に投稿できる MCP サーバーです。
機能
これは Unipile API をラップし、AI アシスタント(Claude Code、Claude Desktop、または MCP 対応クライアント)が LinkedIn に投稿、コメント、リアクションをできるようにする Model Context Protocol(MCP)サーバーです。コンテンツは AI が作成し、このツールが公開を処理します。すべての公開操作はデフォルトでプレビューモードになっており、明示的に確認しない限り公開されません。
特長
- 3 つのツール:投稿、コメント、リアクション
- デフォルトでドライラン(公開前にプレビュー)
- 投稿直後に自動で「いいね」
- メディア添付(ローカルファイルまたは URL — 画像と動画)
- 会社への @メンション(Unipile が自動解決)
- Claude Code、Claude Desktop、あらゆる MCP クライアントで動作
前提条件
- Node.js 18 以上 — ES モジュール、
node:test、トップレベル await を使用します - Unipile アカウント — Unipile は LinkedIn の API に接続するサービスです。登録して LinkedIn アカウントを接続し、ダッシュボードから API キーと DSN を取得してください。
インストール
git clone https://github.com/timkulbaev/mcp-linkedin.git
cd mcp-linkedin
npm install
設定
Claude Code
~/.claude/mcp.json に追加します。
{
"mcpServers": {
"linkedin": {
"command": "node",
"args": ["/absolute/path/to/mcp-linkedin/index.js"],
"env": {
"UNIPILE_API_KEY": "your-unipile-api-key",
"UNIPILE_DSN": "apiXX.unipile.com:XXXXX"
}
}
}
}
Claude Desktop
(macOS の場合)~/Library/Application Support/Claude/claude_desktop_config.json に追加します。
{
"mcpServers": {
"linkedin": {
"command": "node",
"args": ["/absolute/path/to/mcp-linkedin/index.js"],
"env": {
"UNIPILE_API_KEY": "your-unipile-api-key",
"UNIPILE_DSN": "apiXX.unipile.com:XXXXX"
}
}
}
}
設定ファイルを編集した後、Claude Code または Claude Desktop を再起動してください。
環境変数
| 変数 | 必須 | 説明 |
|---|---|---|
UNIPILE_API_KEY | はい | Unipile API キー(Unipile ダッシュボードから取得) |
UNIPILE_DSN | はい | Unipile DSN(例:api16.unipile.com:14648) |
これらは .env ファイルではなく、MCP 設定を介して渡されます。サーバーは起動時に process.env から読み込みます。
ツール
linkedin_publish
LinkedIn にオリジナルの投稿を作成します。
dry_run のデフォルトは true です。 まず dry_run: true で呼び出してプレビューを取得し、その後 dry_run: false で再度呼び出すと実際に公開されます。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
text | string | はい | — | 投稿本文。最大 3000 文字 |
media | string[] | いいえ | [] | ローカルファイルのパスまたは URL(jpg、png、gif、webp、mp4) |
mentions | string[] | いいえ | [] | @メンションする会社名(自動解決) |
dry_run | boolean | いいえ | true | 公開せずにプレビュー |
プレビューの応答(dry_run: true):
{
"status": "preview",
"post_text": "Hello LinkedIn!",
"character_count": 16,
"character_limit": 3000,
"media": [],
"mentions": [],
"warnings": [],
"ready_to_publish": true
}
公開時の応答(dry_run: false):
{
"status": "published",
"post_id": "7437514186450104320",
"post_text": "Hello LinkedIn!",
"posted_at": "2026-03-11T15:06:04.849Z",
"auto_like": "liked"
}
公開後、post_id を保存し、投稿 URL を組み立てます。
https://www.linkedin.com/feed/update/urn:li:activity:{post_id}/
linkedin_comment
既存の LinkedIn 投稿にコメントします。
dry_run のデフォルトは true です。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
post_url | string | はい | — | LinkedIn の投稿 URL または生の URN(urn:li:activity:... または urn:li:ugcPost:...) |
text | string | はい | — | コメント本文 |
dry_run | boolean | いいえ | true | 投稿せずにプレビュー |
linkedin_react
LinkedIn 投稿にリアクションします。この操作は即時に実行され、dry_run はありません。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
post_url | string | はい | — | LinkedIn の投稿 URL または生の URN |
reaction_type | string | いいえ | "like" | 次のいずれか:like、celebrate、support、love、insightful、funny |
仕組み
┌──────────────────────────────────┐
│ mcp-linkedin │
AI Assistant ──► │ │
(via MCP stdio) │ Posts/Comments/Reactions ──► Unipile API ──► LinkedIn
└──────────────────────────────────┘
- AI アシスタントは、stdio を介した MCP の JSON-RPC プロトコルでツールを呼び出します
- LinkedIn OAuth を処理する Unipile API を呼び出すため、トークン管理は不要です
安全な公開ワークフロー
dry_run のデフォルト値は、誤って公開するのを防ぐために設定されています。想定される流れは次のとおりです。
- AI が
dry_run: true(デフォルト)でツールを呼び出します - プレビューを確認します:最終テキスト、文字数、メディアの検証結果、解決済みのメンション、警告
- 承認するか、変更を依頼します
- AI が
dry_run: falseで再度呼び出します - 投稿が公開されます
dry_run はデフォルトで true です。AI が公開するには、明示的に false を設定する必要があり、その前にプレビューの手順を実施する必要があります。
メディアの処理
- ローカルファイルパス(
/path/to/image.jpg)または URL(https://example.com/img.png)を渡します - URL は
/tmp/mcp-linkedin-media/にダウンロードされ、公開後(成功・失敗を問わず)に削除されます - 対応形式:jpg、jpeg、png、gif、webp(画像)、mp4(動画)
- アップロード前に各ファイルを検証します。ファイルが存在し、空ではなく、対応形式である必要があります
- 検証に失敗したファイルは、プレビューの
media配列に"valid": falseとエラーメッセージとともに表示されます
会社の @メンション
- 会社名を文字列として渡します:
mentions: ["Microsoft", "OpenAI"] - サーバーは各名前をスラッグ化し、Unipile の LinkedIn 企業検索で照合します
- 照合された企業は、投稿テキスト内の
{{0}}、{{1}}というプレースホルダーに挿入されます。LinkedIn ではこれらがクリック可能な @メンションとして表示されます - 投稿テキスト内に会社名が含まれている場合は、その箇所が置き換えられます。含まれていない場合は、プレースホルダーが末尾に追加されます
- 照合できない名前は、プレビューに警告として表示されます。それらを含めずに投稿を公開することもできます。
テスト
npm test # 28 unit tests, zero extra dependencies (Node.js built-in test runner)
npm run lint # Biome linter
プロジェクト構成
mcp-linkedin/
index.js Entry point (stdio transport)
package.json
src/
server.js MCP server and tool registration
unipile-client.js Unipile API wrapper (posts, comments, reactions)
media-handler.js URL download and file validation
tools/
publish.js linkedin_publish handler
comment.js linkedin_comment handler
react.js linkedin_react handler
tests/
unit.test.js 28 unit tests
Unipile アカウントの取得
- Unipile アカウントに登録します
- ダッシュボードで LinkedIn アカウントを接続します
- ダッシュボードの設定から API キーと DSN をコピーします
- MCP 設定に貼り付けます(上記の「設定」を参照)
Unipile には、基本的な利用をカバーする無料プランがあります。
ライセンス
MIT — LICENSE を参照してください。
クレジット
Timur Kulbaev が作成しました。Anthropic の Model Context Protocol と Unipile API を使用しています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。