Claude Media
Claude LINE WORKS連携をMCPで実現する方法

Claude LINE WORKS連携をMCPで実現する方法

LINE WORKSはMCPを提供していないが、開発者向けAPIとコミュニティ製サーバーnworksで、メッセージ・カレンダー・タスクをClaudeから操作できる。設定手順と対応範囲を解説する。

Claude LINE WORKS連携をMCPで実現する方法はあるか

LINE WORKS向けにAnthropicが提供しているコネクタは見当たりません。それでも連携自体は可能です。LINE WORKSは開発者向けAPIを公開しており、これをMCP(Model Context Protocol)サーバーとしてラップすれば、ClaudeからメッセージやカレンダーやタスクなどをLINE WORKS上で操作できます。

本稿では、コミュニティ製のMCPサーバー「nworks」を使った手順を、Claude DesktopとClaude Codeの両方について書きます。あわせて、READMEだけでは見落としやすい3点を確かめました。契約プランで使えないスコープがあること、メッセージ送信だけ認証方式が別であること、APIの呼び出し上限がフリープランでは1分60回であることです。

始める前に確認すること: プランと管理者の承認

最初につまずきやすいのは、コマンドではなくDeveloper Consoleの側です。LINE WORKSのOAuth Scopeは、利用プランによって選べる範囲が変わります。nworksが使うスコープを、公式のScopeリストで照らすと次のとおりです。

スコープnworksの主なツールフリースタンダードアドバンスト
calendar / calendar.readnworksの主なツールカレンダーフリー○スタンダード○アドバンスト○
task / task.readnworksの主なツールタスクフリー○スタンダード○アドバンスト○
board / board.readnworksの主なツール掲示板フリー○スタンダード○アドバンスト○
contact / contact.readnworksの主なツール連絡先フリー○スタンダード○アドバンスト○
bot / bot.readnworksの主なツールメッセージ送信フリー○スタンダード○アドバンスト○
file / file.readnworksの主なツールドライブフリーなしスタンダード○アドバンスト○
mail / mail.readnworksの主なツールメールフリーなしスタンダードなしアドバンスト○

READMEの例示のログインコマンドは、fileとmailのスコープを含みます。--preset allは全機能の読み書きを許可するプリセットなので、同じ2組が含まれると考えられます。フリープランではfileが、スタンダードではmailが選べないので、その場合は使うスコープだけを--scopeで指定する形になります。プランごとのスコープの可否は、アプリを登録するドメインごとに異なると公式にも書かれています。

もう1つは管理者の承認です。nworksの導入ガイド(ONBOARDING.md)によると、一部のスコープとBotは、ワークスペースの管理者による承認や有効化が必要です。管理者でない場合は、承認してほしいスコープ(まず読み取り専用のcalendar.read・mail.read・task.read・board.read・file.read・user.read)を依頼文にまとめて渡すのが、同ガイドの想定した流れです。

LINE WORKS APIの認証は2系統に分かれる

LINE WORKS APIは、Bot・Directory・Calendar・Drive・Mail・Board・Task・Formなど、機能ごとに分かれた開発者向けAPI群です。認証はOAuth 2.0ベースで、Developer Consoleでアプリを登録し、Access Tokenを取得してAuthorization: Bearer {token}の形式でヘッダーに載せます。

トークンの有効期間は、公式のOAuthページで次のように定められています。

トークン種別有効期間用途
認可コード有効期間10分(使用は1回)用途Access Token取得のための一時的なコード
Access Token有効期間1時間または24時間用途API呼び出し
Refresh Token有効期間90日用途Access Tokenの再発行
ID Token有効期間1時間用途ユーザー認証情報の受け渡し

認可方式は認可コードフローとImplicit Flowの2種類です。Implicit FlowはID Token向けで、Access Token取得には使わないよう公式に書かれています。

肝心なのは、認証の主体が2つあることです。nworksのツールは、どちらの主体で動くかがツールごとに固定されています。割り当ては後の表の「認証」列のとおりです。

くらべる

認証の2系統とnworksでの担当範囲

自分名義

User OAuth(ユーザー認証)

ブラウザーでログインし、本人の権限で動きます。meを使う「自分の予定」のような操作は、こちらの認証で通ります。

Bot・組織連携

Service Account(JWT)

ユーザーのログインなしで、アプリ専用の仮想管理者アカウントとして動きます。meは使えず、秘密鍵での署名が要ります。

READMEには「一度のログインで36ツールすべてが使える」とありますが、同じREADMEのツール表では、メッセージ系の3ツールの認証は「Service Account」です。ユーザーログインだけではメッセージは送れず、Service Account用のNWORKS_SERVICE_ACCOUNT・NWORKS_PRIVATE_KEY_PATH・NWORKS_BOT_IDが別に要ります。READMEの環境変数の節でも、この3つは「Bot messaging only」とされています。

Service Accountの発行とJWT認証の流れ

Service Accountには、公式の説明にある性質があります。1つのアプリに1つだけ発行でき、発行と同時に管理者権限が付与されて管理者にサービス通知が届き、課金の対象にはなりません。一方で、利用できないAPIがあり、パスの{userId}にmeを使えません。「自分のカレンダー」のようなme前提の操作は、この認証では通らない前提で設計します。

手順

JWTでAccess Tokenを得る5段階

  1. 1

    Service Accountと秘密鍵を発行する

    Developer Consoleのアプリ設定で、必要なScopeを指定したうえで発行します。

  2. 2

    JWTを生成する

    アプリのClient IDとService Accountの情報から作ります。

  3. 3

    秘密鍵で署名する

    JWTに電子署名を付けます。

  4. 4

    Access Tokenを要求する

    署名済みJWTをLINE WORKSに送って発行してもらいます。

  5. 5

    期限切れはRefresh Tokenで再発行する

    Access Tokenが切れたら、Refresh Tokenで取り直します。

nworksの36ツールと、それぞれの認証

nworksは、LINE WORKS(NAVER WORKS)向けのMCPサーバー兼CLIで、Apache-2.0ライセンスで公開されています。READMEには「Unofficial and community-maintained; not affiliated with LINE WORKS / NAVER WORKS」と明記されており、LINE WORKS社とは独立したコミュニティ主導のプロジェクトです。npmの最新版は1.3.1でした。

ツールは8カテゴリ36個です。READMEの見出しは「MCP Tools (32)」ですが、表に並ぶツールを数えると36で、冒頭の説明も36と書いています。本稿は36を採ります。

カテゴリツール数主な機能認証
セットアップ・認証ツール数5主な機能認証情報設定・ログイン・ログアウト・ステータス確認・接続診断認証なし
メッセージツール数3主な機能送信・チャンネルメンバー一覧・組織メンバー一覧認証Service Account
カレンダーツール数4主な機能イベント一覧・作成・更新・削除認証User OAuth
ドライブツール数6主な機能一覧・アップロード・ダウンロード・共有ドライブの一覧/ファイル一覧/ダウンロード認証User OAuth
メールツール数4主な機能送信・一覧・詳細表示・添付ファイルダウンロード認証User OAuth
タスクツール数4主な機能一覧・作成・更新・削除認証User OAuth
掲示板ツール数4主な機能掲示板一覧・投稿一覧・投稿詳細表示・投稿作成認証User OAuth
連絡先ツール数6主な機能一覧・詳細取得・作成・更新・削除・タグ一覧認証User OAuth

メッセージ系の3ツールのうち、送信は1つだけで、残り2つはメンバー一覧です。過去の発言を読む手段は無く、掲示板の投稿は読めます。この非対称がClaudeにできる要約の範囲をどう決めるかは、ClaudeでLINE WORKSの掲示板やメッセージを要約するで扱っています。

ボタンやリストのメッセージは、MCPツールではなくCLIのnworks message send --type buttonや--type listで送る形です。READMEのMCPツール表に、専用のボタン送信ツールはありません。

セットアップの手順

ステップ1: Developer Consoleでアプリを登録する

LINE WORKS Developer Consoleで新規アプリを作成し、リダイレクトURLとしてhttp://localhost:9876/callbackを登録します。ここでクライアントIDとクライアントシークレットが発行されます。メッセージも送るなら、Botを作ってBot IDを控え、Service Accountの秘密鍵(.keyファイル)もダウンロードします。

ステップ2: nworksをインストールする

READMEのQuickstartに従い、グローバルにインストールします。以降のnworksコマンドと、Claudeへの登録で指定するcommandは、この手順を済ませていないとcommand not foundになります。

npm install -g nworks

グローバルに入れたくない場合は、READMEにあるとおりnpx nworksで直接実行できます。MCPサーバーとして登録するときも、commandをnpx、argsを["-y", "nworks", "mcp"]にする形が、READMEの設定例に載っています。

ステップ3: 必要なスコープでログインする

nworksのCLIから、使いたい機能に応じたスコープを指定してログインします。READMEの例は次の1行です。

nworks login --user --scope "calendar calendar.read file file.read mail mail.read task task.read board board.read user.read"

この例に連絡先のスコープ(contact / contact.read)は入っていません。連絡先のツールも使うなら、追加が必要です。フリープランなどでfileやmailを選べない場合は、その2組を外して指定します。

すべてまとめて許可するプリセットも用意されています。readonlyは読み取り系だけ、allは読み書きすべてで、defaultはallの別名です。

nworks login --user --preset readonly

再ログインでスコープが狭まることはなく、新しく指定したスコープは既存のトークンに足し合わされます。まずreadonlyで試し、必要になってからallへ広げる進め方ができます。ただし、ツールの注釈(destructiveHintなど)はクライアント側への目印にすぎず、アクセス制御にはならないとも導入ガイドに書かれています。

必須の環境変数はNWORKS_CLIENT_IDとNWORKS_CLIENT_SECRETの2つです。NWORKS_SCOPEを省略したときの既定値はbot bot.read user.readです。認証情報とトークンは~/.config/nworksにJSONで保存され、Unixではファイル権限が0600になります。ただし0600は、同じOSユーザーで動く別のプロセスを防ぎません。

秘密鍵はプロジェクトのフォルダーに置かないでください。エディターのプラグインやAIツール、npm packに拾われる恐れがあるためで、nworks doctorは鍵が作業ディレクトリ内にあると警告します。ホームディレクトリなどに置き、NWORKS_PRIVATE_KEY_PATHでパスだけを渡します。

ステップ4: Claudeにnworksを登録する

Claude Desktopなら、設定ファイルに次を追加します。MCPの公式ドキュメント(modelcontextprotocol.io)に載っているパスは、macOSが~/Library/Application Support/Claude/claude_desktop_config.json、Windowsが%APPDATA%\Claude\claude_desktop_config.jsonです。READMEが案内しているのはnpmでの配布とJSONでの登録なので、この手書きのJSONで登録します。

{
  "mcpServers": {
    "nworks": {
      "command": "nworks",
      "args": ["mcp"]
    }
  }
}

Claude Codeなら、claude mcp addで登録します。v2.1.285で、空の設定ディレクトリを指定して実行したところ、次の結果でした。-eは名前の後ろ、--の前に置きます。

claude mcp add -s project nworks -e NWORKS_CLIENT_SECRET=dummy -- nworks mcp
Added stdio MCP server nworks with command: nworks mcp to project config
File modified: <作業ディレクトリ>/.mcp.json

生成された.mcp.jsonの中身は次のとおりです。

{
  "mcpServers": {
    "nworks": {
      "type": "stdio",
      "command": "nworks",
      "args": ["mcp"],
      "env": {
        "NWORKS_CLIENT_SECRET": "dummy"
      }
    }
  }
}

ここで気づくのは、-s projectで登録すると、-eで渡した値が平文のまま.mcp.jsonに書かれることです。claude mcp get nworksの出力にも「Project config (shared via .mcp.json)」と出ました。このファイルはリポジトリで共有する前提の置き場なので、クライアントシークレットや秘密鍵のパスを入れるなら、-sを省いた既定のlocalスコープ(claude mcp add --helpの--scopeの既定値)を選びます。

チームで設定を共有したいときは、.mcp.jsonのenvに"NWORKS_CLIENT_SECRET": "${NWORKS_CLIENT_SECRET}"と書く方法もあります。.mcp.jsonは環境変数の展開に対応しており、値は各自のマシンの環境変数から読まれます。なおclaude mcp get nworksは、値をそのまま画面に表示します(Environment: NWORKS_CLIENT_SECRET=dummyと出ました)。画面共有やログに残る点にも注意が要ります。

初回は「Pending approval」の状態で、claudeを起動して承認するまで接続されません。登録後は、「今週のカレンダーの予定を一覧して」「未読メールの要点をまとめて」のように話しかければ、対応するツールが呼び出されます。MCPサーバーを追加する基本操作は、Claude Code MCP設定ガイドにまとめています。

つまずきやすい点

  • リダイレクトURLの不一致: Developer Consoleに登録したURLと、CLIが待ち受けるlocalhost:9876が一致しないと、認可コードを受け取れず認証が失敗します
  • スコープの過不足: taskの書き込み系ツールはuser.readも併せて必要で、calendarの書き込みはcalendar.readも要ります。スコープを絞りすぎると、想定したツールが動きません
  • メッセージだけ動かない: カレンダーなどは動くのにメッセージ送信だけ失敗するなら、ログインではなくService Account側の設定を見ます
  • 提供元の違い: nworksはLINE WORKS社と提携していない非公式のプロジェクトです。障害時の窓口がベンダーではなくコミュニティ側になる点は、導入前にチームで共有しておきます

APIの呼び出し上限にどこで当たるか

LINE WORKS APIには、1分あたりの呼び出し回数(Rate Limit)と、同時接続数の2種類の上限があります。Rate Limitは、アプリを登録したドメインに対して、API単位で適用されます。

数字

LINE WORKS APIの上限

  • フリープラン

    60回/分

    1APIあたり

  • スタンダード・アドバンスト

    240回/分

    1APIあたり

  • 掲示板・タスク

    60回/分

    board・task系のScopeはプランにかかわらず固定

  • 同時接続数

    5スレッド

    ドメインで使う全APIの合計

LINE WORKSサービスの場合。API単位・ドメイン単位で適用されます

30分以上連続で呼び出す場合は、上限値の半分以下を目安にするよう公式に書かれています。超過すると、HTTPステータス429のエラーが返り、API rate limit exceeded(回数超過)またはConcurrent access fail(同時接続超過)のどちらかがdescriptionに入ります。Rate Limitは最長1分でリセットされるので、直後に再試行せず、リセット後にやり直します。

READMEには、組織の全メンバーへ順番にメッセージを送るシェルのループが載っています。フリープランなら、1分以内に回り切る速度でメンバーが61人以上いると、1分あたり60回の枠を超えます。同一リソースへの書き込み(POST・PUT・PATCH・DELETE)を同時に行わないことも、公式の注意事項です。

よくある質問

Slack連携と同じ感覚で使えるか

SlackはClaudeのコネクタとして提供されますが、LINE WORKSはコミュニティ製のMCPサーバー経由です。導入の手間は、Developer Consoleでのアプリ登録や管理者承認がある分、LINE WORKSのほうが大きくなります。Slack側の考え方はClaude ConnectorsガイドとCoworkのSlack連携ワークフローにあります。

LINE(個人向け)とLINE WORKSは同じAPIか

別物です。LINE WORKSは法人向けのビジネスチャット・グループウェアで、本稿で扱ったのはLINE WORKS側のAPIとDeveloper Consoleです。個人向けLINEのBot開発の知識を、そのまま持ち込むことはできません。

まとめ

フリープランでメール連携が主目的なら、nworksでは成立しません。メッセージの閲覧や要約が目的の場合も、APIに過去の発言を読む手段がないため、期待どおりには動きません。逆に、カレンダー・タスク・掲示板の操作と、Botからの通知送信が中心なら、フリープランでも試せます。

この記事を共有:XはてブLinkedIn