mcpField
L
linkedctl

linkedctl

ローカル
github.com/alexey-pelykhソーシャルメディア21 日前に更新

linkedctl について

linkedctl は LinkedIn API を操作するコマンドラインツール兼 MCP サーバーです。個人や組織の投稿、交流、分析に対応し、OAuth またはトークン認証と複数プロファイルを備えています。

主な機能

  1. 01テキスト、メディア、投票、記事の投稿
  2. 02コメントとリアクションの管理
  3. 03組織としての投稿と交流
  4. 04投稿・組織の分析情報の確認
  5. 05OAuth またはアクセストークン認証
  6. 06複数の設定プロファイルの管理

活用シーン

  1. 01LinkedIn に下書きやメディア付き投稿を公開
  2. 02投稿のエンゲージメント統計を確認
  3. 03組織の投稿やコメントを管理
  4. 04スクリプトから LinkedIn 操作を自動化

MCP 対応

MCP サーバーは、LinkedIn の認証、投稿、コメント、リアクション、組織、分析、メディア操作を AI アシスタント向けツールとして公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"alexey-pelykh-linkedctl": {
"command": "npx",
"args": [
"-y",
"linkedctl"
],
"env": {
"LINKEDCTL_ACCESS_TOKEN": "<LINKEDCTL_ACCESS_TOKEN>",
"LINKEDCTL_CLIENT_ID": "<LINKEDCTL_CLIENT_ID>",
"LINKEDCTL_CLIENT_SECRET": "<LINKEDCTL_CLIENT_SECRET>"
}
}
}
}
起動コマンドnpx -y linkedctl
設定が必要な環境変数
LINKEDCTL_ACCESS_TOKENシークレットLinkedIn OAuth2 access token
LINKEDCTL_CLIENT_IDLinkedIn OAuth2 client ID
LINKEDCTL_CLIENT_SECRETシークレットLinkedIn OAuth2 client secret

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmlinkedctl0.5.0

ツール

22

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
profilestringいいえ設定ファイルから使用するプロフィール名

詳細

LinkedCtl:LinkedIn 向けの完全な CLI と MCP

CI CodeQL License

LinkedIn API 用の OAuth2 CLI と MCP サーバーです。

できること

  • コンテンツの投稿 — テキスト、画像、動画、ドキュメント、記事、複数画像カルーセル、アンケート
  • コメントとリアクション — 投稿へのコメントやリアクションを作成、一覧表示、削除
  • 組織のサポート — 組織として投稿、コメント、リアクション、分析データの表示
  • 分析 — 投稿、メンバー、組織ごとの統計情報
  • メディアのアップロード — LinkedIn への画像、動画、ドキュメントのアップロード
  • 下書き投稿 — 公開前に投稿を下書きとして保存
  • 独自の LinkedIn アプリを使った OAuth 2.0 認証
  • 他のアプリケーションで取得したトークンを 直接渡す
  • AI アシスタント連携用の MCP サーバー(Claude、Cursor など)
  • スクリプトから LinkedIn を操作できる CLI

前提条件

インストール

npm install -g linkedctl

または、直接実行します。

npx linkedctl --help

クイックスタート

  1. linkedin.com/developers で LinkedIn アプリを作成します
  2. OAuth 2.0 の認証情報を設定します
  3. 認証します。
    linkedctl auth login --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET
    
  4. 使用を開始します。
    linkedctl post "Hello from LinkedCtl!"
    

詳しい手順については、OAuth セットアップガイドを参照してください。

MCP 連携

MCP クライアントの設定
Claude Desktop

Claude Desktop の設定(claude_desktop_config.json)に追加します。

{
    "mcpServers": {
        "linkedctl": {
            "command": "npx",
            "args": ["linkedctl", "mcp"]
        }
    }
}
Claude Code
claude mcp add linkedctl -- npx linkedctl mcp
Cursor

プロジェクトのルートにある .cursor/mcp.json に追加します。

{
    "mcpServers": {
        "linkedctl": {
            "command": "npx",
            "args": ["linkedctl", "mcp"]
        }
    }
}
Windsurf

~/.codeium/windsurf/mcp_config.json に追加します。

{
    "mcpServers": {
        "linkedctl": {
            "command": "npx",
            "args": ["linkedctl", "mcp"]
        }
    }
}
利用可能なツール

すべてのツールで、設定プロファイルを選択するための省略可能な profile パラメーターを使用できます。

認証
ツール説明
whoami現在のユーザーの名前、メールアドレス、プロフィール画像の URL を表示
auth_statusプロファイルの認証状態を表示
auth_revokeサーバー側のアクセストークンを失効させ、ローカルの認証情報を消去
投稿
ツール説明
post_createメディア、アンケート、記事の添付を指定して、LinkedIn に投稿を作成します
post_getURN を指定して単一の投稿を取得します
post_listページネーションを使って投稿を一覧表示します(組織の投稿には as_org を指定できます)
post_update既存の投稿のコメントテキストを更新します
post_deleteURN を指定して投稿を削除します

post_create はリッチコンテンツの種類に対応しています。

パラメーター説明
text投稿のテキスト内容(必須)
visibilityPUBLIC または CONNECTIONS(デフォルトは PUBLIC)
draft公開せずに下書きとして保存します
image / image_file画像を 1 枚添付します(URN またはローカルファイルパス)
video / video_file動画を添付します(URN またはローカルファイルパス)
document / document_fileドキュメントを添付します(URN またはローカルファイルパス)
images / image_files画像を複数枚添付します(最低 2 枚)
article_url記事へのリンクを添付します
pollアンケートの質問テキスト
poll_optionsアンケートの回答選択肢(poll を設定する場合、2~4 個が必須)
poll_durationONE_DAY、THREE_DAYS、ONE_WEEK、または TWO_WEEKS
as_org組織として投稿します(数値 ID)
コメント
ツール説明
comment_create投稿にコメントを作成します(as_org を指定できます)
comment_list投稿のコメントを一覧表示します
comment_getURN を指定して特定のコメントを取得します
comment_deleteURN を指定してコメントを削除します
リアクション
ツール説明
reaction_create投稿にリアクションを追加します(as_org を指定できます)。種類:LIKE、PRAISE、EMPATHY、INTEREST、APPRECIATION、ENTERTAINMENT
reaction_list投稿へのリアクションを一覧表示します
reaction_delete投稿からリアクションを削除します(as_org を指定できます)
組織
ツール説明
org_list認証済みユーザーが管理する組織を一覧表示します
org_getID を指定して単一の組織を取得します
org_followers組織のフォロワー数を取得します
アナリティクス
ツール説明
stats_post1 件の投稿のアナリティクスを取得します(インプレッション、リーチ、リアクション、コメント、再シェア)
stats_meすべての投稿の集計アナリティクスを取得します
stats_org組織のシェア統計を取得します(全期間または期間ごと)
メディア
ツール説明
document_uploadLinkedIn にドキュメントをアップロードします(PDF、DOCX、PPTX、DOC、PPT、最大 100 MB)

設定

設定ファイルの形式

LinkedCtl は YAML ファイルに設定を保存します。各ファイルは 1 つのプロファイルを表します。

api-version: "202601"
oauth:
    client-id: "YOUR_CLIENT_ID"
    client-secret: "YOUR_CLIENT_SECRET"
    access-token: "YOUR_ACCESS_TOKEN"
    refresh-token: "YOUR_REFRESH_TOKEN"
    token-expires-at: "2026-05-03T12:00:00.000Z"

利用可能なキー:

キー説明
api-versionLinkedIn API のバージョン(例:202601)
oauth.client-idOAuth 2.0 クライアント ID
oauth.client-secretOAuth 2.0 クライアントシークレット
oauth.access-tokenOAuth 2.0 アクセストークン
oauth.refresh-tokenOAuth 2.0 リフレッシュトークン
oauth.token-expires-atトークンの有効期限のタイムスタンプ(ISO 8601)

設定ファイルの権限は 0600(所有者のみ読み取り/書き込み可能)で設定されます。

ファイルの場所と優先順位

プロファイルを指定しない場合、LinkedCtl は次の順序で設定ファイルを検索します。

  1. 現在の作業ディレクトリにある .linkedctl.yaml
  2. ホームディレクトリにある ~/.linkedctl.yaml

最初に見つかったファイルが使用されます。書き込み時(例:auth login の後)は、CWD にファイルが存在すればそのファイルに書き込み、存在しない場合はホームディレクトリのファイルに書き込みます。

プロファイル

プロファイルを使うと、複数の LinkedIn アカウントや設定を管理できます。各プロファイルは ~/.linkedctl/ の下に別々の YAML ファイルとして保存されます。

プロファイル設定ファイルのパス
(デフォルト)~/.linkedctl.yaml
work~/.linkedctl/work.yaml
personal~/.linkedctl/personal.yaml

任意のコマンドで --profile フラグを使用します。

linkedctl --profile work auth login --client-id ID --client-secret SECRET
linkedctl --profile work post "Hello from my work account!"

profile コマンドでプロファイルを管理します。

linkedctl profile create work --access-token YOUR_TOKEN --api-version 202601
linkedctl profile list
linkedctl profile show work
linkedctl profile delete work
認証方法
OAuth 2.0(推奨)

LinkedCtl は、独自の LinkedIn Developer App を使った OAuth 2.0 に対応しています。

linkedctl auth login --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET
直接トークン

別のアプリケーションから取得したアクセストークンをすでにお持ちの場合:

linkedctl auth token --access-token YOUR_TOKEN
環境変数
変数説明
LINKEDCTL_CLIENT_IDLinkedIn OAuth 2.0 クライアント ID
LINKEDCTL_CLIENT_SECRETLinkedIn OAuth 2.0 クライアントシークレット
LINKEDCTL_ACCESS_TOKEN直接指定するアクセストークン(OAuth フローを経由しません)
LINKEDCTL_API_VERSIONLinkedIn API のバージョン文字列(例:202601) 必須

環境変数は設定ファイルの値より優先されます。

プロファイル接頭辞付き環境変数

名前付きプロファイルを使用する場合、LinkedCtl はプロファイル接頭辞付きの環境変数も読み取ります。プロファイル名は大文字に変換され、ハイフンはアンダースコアに置き換えられます。

プロファイル変数
(デフォルト)LINKEDCTL_ACCESS_TOKEN
workLINKEDCTL_WORK_ACCESS_TOKEN
my-brandLINKEDCTL_MY_BRAND_ACCESS_TOKEN

同じパターンが CLIENT_ID、CLIENT_SECRET、API_VERSION にも適用されます。

優先順位

設定値は、次の順序(優先度の高い順)で解決されます。

  1. 環境変数(プロファイルが有効な場合は、プロファイル名が先頭に付加されます)
  2. 設定ファイル(プロファイル固有のファイル、または CWD/ホームディレクトリのフォールバック)

CLI リファレンス

グローバルオプション
オプション説明
--profile <name>特定の設定プロファイルを使用します
--jsonJSON 出力を強制します
-q, --quiet情報出力を抑制します
--no-color色付き出力を無効にします
auth — 認証の管理
コマンド説明
auth setupOAuth クライアント認証情報を対話形式で設定します
auth loginOAuth 2.0 で認証します(ブラウザーが開きます)
auth token直接アクセストークンを保存します
auth status認証状態とトークンの有効期限を表示します
auth logoutアクティブなプロファイルから保存済みの認証情報を削除します
auth refresh保存済みのリフレッシュトークンを使用してアクセストークンを更新します
auth revokeサーバー側でアクセストークンを失効させ、ローカルトークンを削除します

auth login のオプション:

オプション説明デフォルト
--client-id <id>OAuth 2.0 クライアント ID設定ファイルから
--client-secret <secret>OAuth 2.0 クライアントシークレット設定ファイルから
--scope <scopes>OAuth 2.0 スコープ(スペース区切り)openid profile w_member_social

auth token のオプション:

オプション説明
--access-token <token>保存するアクセストークン(必須)
post — LinkedIn の投稿を管理する
# Shorthand: pass text as an argument
linkedctl post "Hello from LinkedCtl!"

# Explicit subcommand
linkedctl post create --text "Hello from LinkedCtl!"

# Pipe content from stdin
echo "Hello from LinkedCtl!" | linkedctl post create
コマンド説明
post createLinkedIn に投稿を作成する
post get <urn>URN で投稿を取得する
post listページネーションで投稿を一覧表示する
post update <urn>投稿のコメント文を更新する
post delete <urn>投稿を削除する(確認あり)

post create のオプション:

オプション説明デフォルト
--text <text>テキストコンテンツ(--text-file、位置引数、または標準入力も使用できます)
--visibility <visibility>PUBLIC または CONNECTIONSPUBLIC
--draft公開せずに下書きとして保存する
--image <urn>添付する画像の URN
--image-file <path>アップロードして添付するローカル画像ファイル
--video <urn>添付する動画の URN
--video-file <path>アップロードして添付するローカル動画ファイル
--document <urn>添付するドキュメントの URN
--document-file <path>アップロードして添付するローカルドキュメントファイル
--images <urns>複数の画像 URN(カンマ区切り、最低 2 件)
--image-files <paths>複数のローカル画像ファイル(カンマ区切り、最低 2 件)
--article-url <url>添付する記事の URL
--poll <question>投票の質問文
--option <text>投票の選択肢(2~4 回指定)
--poll-duration <duration>ONE_DAY、THREE_DAYS、ONE_WEEK、または TWO_WEEKSTHREE_DAYS
--as-org <id>組織として投稿する(数値 ID)
--format <format>出力形式(json、table)自動

post list のオプション:

オプション説明デフォルト
--count <n>返す投稿の数(最大 100 件)10
--start <n>ページネーションの開始インデックス0
--as-org <id>組織の投稿を一覧表示する(数値 ID)
comment — コメントを管理する
コマンド説明
comment create <post-urn>投稿にコメントを作成する
comment list <post-urn>投稿のコメントを一覧表示する
comment get <comment-urn>URN で特定のコメントを取得する
comment delete <comment-urn>コメントを削除する(確認あり)

comment create のオプション:

オプション説明
--text <text>コメントのテキスト(必須)
--as-org <id>組織としてコメントする(数値 ID)
reaction — リアクションを管理する
コマンド説明
reaction create <urn>投稿にリアクションを追加する
reaction list <urn>投稿へのリアクションを一覧表示する
reaction delete <urn>投稿からリアクションを削除する

reaction create のオプション:

オプション説明
--type <type>LIKE、PRAISE、EMPATHY、INTEREST、APPRECIATION、または ENTERTAINMENT(デフォルトは LIKE)
--as-org <id>組織としてリアクションする(数値 ID)
org — 組織を管理する
コマンド説明
org list認証済みユーザーが管理する組織を一覧表示する
org get <id>組織の詳細を取得する
org followers <id>組織のフォロワー数を取得する
media — メディアをアップロードする
コマンド説明
media upload-image <file>画像(JPG、PNG、GIF)をアップロードする
media upload-video <file>動画をアップロードする
media upload-document <file>ドキュメント(PDF、DOCX、PPTX、DOC、PPT、最大 100 MB)をアップロードする

すべてのメディアコマンドで --as-org <id> と --format json|table を指定できます。

stats — アナリティクスを表示する
コマンド説明
stats post <urn>投稿のアナリティクス(インプレッション、リーチ、エンゲージメント)を取得する
stats me自分のすべての投稿の集計アナリティクスを取得する
stats org <id>組織のシェア統計を取得する

共通オプション:

オプション説明
--from <date> / --start <date>日付範囲の開始(YYYY-MM-DD)
--to <date> / --end <date>日付範囲の終了(YYYY-MM-DD)
--time-granularity <granularity>DAY または MONTH(組織の統計のみ)
profile — 設定プロファイルを管理する
コマンド説明
profile create <name>新しいプロファイルを作成する
profile listすべてのプロファイルを一覧表示する
profile show [<name>]プロファイルの詳細を表示する(機密情報は伏せられます)
profile delete <name>プロファイルを削除する(確認が必要)

profile create のオプション:

オプション説明
--access-token <token>OAuth 2.0 アクセストークン(必須)
--api-version <version>LinkedIn API のバージョン。例:202601(必須)
whoami — 現在のユーザーを表示する
linkedctl whoami
linkedctl whoami --format json
オプション説明デフォルト
--format <format>出力形式(json、table)自動
completion — シェル補完
linkedctl completion bash
linkedctl completion zsh

セキュリティ

  • Dependabot が自動プルリクエストにより依存関係を最新の状態に保ちます
  • CodeQL による分析がすべてのプッシュとプルリクエストで実行され、脆弱性を自動的に検出します
  • プロファイル名の パストラバーサル検証 により、ディレクトリ外へのアクセス攻撃を防ぎます
  • すべての MCP ツールで 認証エラー処理を統一 し、一貫した認証失敗メッセージを提供します
  • 破壊的な操作(投稿の削除、コメントの削除、プロファイルの削除)では、--force が指定されていない限り、対話形式での確認が必要です

免責事項

これは独立したプロジェクトであり、LinkedIn Corporation との提携、承認、関連はありません。LinkedIn は LinkedIn Corporation の商標です。

ライセンス

AGPL-3.0-only

CLI ツールまたは MCP サーバーとして LinkedCtl を使用する場合:ライセンス上の義務はなく、自由に使用できます。

プロジェクトでライブラリとして @linkedctl/core を使用する場合:結合作品には AGPL-3.0(または互換性のあるライセンス)を適用する必要があります。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。