Claude Code × kintone 自動化ガイド|MCP連携で顧客登録・レポートを自動化【2026年版】

Claude Code × kintone MCPを使った業務自動化の実務ガイド。顧客情報の自動登録・月次レポート生成・freee/Salesforceとの自動連携・帳票出力など3つのアプローチと4つのユースケースを解説。

この記事をシェア:
目次 クリックで開く

Claude Code × kintone 自動化の実務ガイド|顧客登録・レポート・他システム連携を爆速化する

最終更新:2026年6月|対象:kintoneを業務で使っている非エンジニア〜中級者

「kintoneへの入力が毎日30分かかる」「月次レポートの集計を手作業でやっている」——そんな悩みを、Claude Code × kintone MCPで解決できます。コーディング知識ゼロでも、自然文で指示するだけでkintoneを自在に操作。本記事では3つの連携アプローチと、今日から使えるユースケースを実務レベルで解説します。

Claude Code × kintone 自動化フロー全体マップ

Claude Code × kintone 連携でできること

kintone × Claude Code 自動化 デモ スクリーンショット
kintone × Claude Code 自動化 デモ デモアニメーション

kintoneはAPIが充実しており、外部ツールとの連携に向いています。Claude Codeと組み合わせることで、次のようなことが自然文の指示だけで実現できます。

👥
顧客情報の自動登録・更新
名刺・メール・Webフォームの情報をkintoneに自動登録。重複チェックも込み。

📊
月次レポートの自動生成
案件・売上データを集計してExcel/Wordレポートを自動作成。経営会議資料まで。

🔄
freee・Salesforce自動連携
受注情報をfreeeの請求書・Salesforceの商談に自動転記。二重入力ゼロ。

📋
帳票・申請書の自動出力
kintoneのレコードから納品書・見積書・申請書を自動生成してPDF化。

Claude Code × kintone 顧客管理アプリのレコード一覧画面
▲ Claude Codeが自動登録した顧客データがkintoneのレコード一覧に表示されている様子

3つの連携アプローチ — 難易度別に選ぶ

Claude Code × kintone 3つの連携アプローチ① kintone MCP自然文で操作難易度: ★☆☆「先月の問合せ一覧を出して」「顧客マスタを更新して」→ Claude が API 呼び出し適合シナリオ・営業の単発クエリ・経営層のアドホック分析・少量・対話型の処理推奨:まず最初に検討非エンジニアでも使える② Python + REST APIスクリプトで一括処理難易度: ★★☆Claude が Python コードを生成kintone REST API を直接叩く→ cron や Lambda で定期実行適合シナリオ・夜間バッチ(10万件処理)・週次レポート自動生成・他システム → kintone 連携運用負荷ありエンジニア協力推奨③ Webhook + Claudeイベント駆動の自動化難易度: ★★★kintone レコード更新を契機にWebhook 発火 → Lambda 起動→ Claude API で判断・処理適合シナリオ・問合せの自動分類・割当・契約更新リマインド配信・基幹システム ↔ kintone 同期インフラ設計が必須本格的な運用体制が必要使い分けの実務原則単発・対話 → ①MCP / 定期・大量 → ②REST API / イベント駆動・リアルタイム → ③Webhook★ よくある失敗:「最初から③Webhookで実装」して運用負荷が想定以上 → ①MCP で要件検証してから②③へ移行が定石3アプローチは併存可能。たとえば「日常運用は①、月次バッチは②、緊急対応は③」のようにレイヤー分けする組織が増えている。
図:Claude Code × kintone の3つの連携アプローチ。難易度・適合シナリオ・運用負荷で使い分ける。
① 推奨・最速

kintone 公式 MCP(自然文操作)
Claude Codeからkintone公式MCPサーバーに接続。「○○の案件を登録して」と話しかけるだけでレコード作成・更新・検索が完了。コード不要で最もとっつきやすい。

② スクリプト

kintone REST API(Python)
Claude Codeが kintone REST API を呼ぶPythonスクリプトを生成。大量レコードの一括登録・CSV取込・バッチ更新など、MCP より細かい制御が必要な場合に使う。

③ 上級

Webhook + Claude Code(イベント駆動)
kintoneのレコード保存・更新Webhookをトリガーに Claude Codeを自動起動。freee・Salesforceとの双方向連携や、条件分岐を伴う複雑な自動化に対応。

kintone×Claude Codeの連携、顧客登録とレポートを自動化しませんか?Aurant のAI・業務自動化支援は、ChatGPT・Claude・n8n・Dify などを使った自動化フローの設計から実装、運用定着までを一貫して支援します。✓ 自動化フローの設計・実装✓ ChatGPT・Claude・n8nの活用✓ 運用定着まで伴走AI・業務自動化支援を見る →繰り返し業務をAIに渡す繰り返し業務自動化支援本来の仕事設計・実装・運用定着まで伴走

【推奨】kintone MCP を使った自然文操作 — セットアップ手順

最初に試すべきはkintone公式MCPです。セットアップは10分以内に完了します。

  1. kintone APIトークンを発行
    kintoneの「アプリ設定」→「APIトークン」からアクセス権限(レコード閲覧・追加・編集)を付与したトークンを発行。環境変数に保存しておく。
  2. kintone MCP サーバーをインストール
    npm install -g @kintone/mcp-server(または公式リポジトリのインストール手順に従う)。
  3. Claude CodeにMCPサーバーを登録
    ターミナルで claude mcp add kintone --scope project -e KINTONE_BASE_URL=https://YOUR_SUBDOMAIN.cybozu.com -e KINTONE_API_TOKEN=YOUR_API_TOKEN -- npx -y @kintone/mcp-server を実行する。これでプロジェクト直下の .mcp.json に設定が追記される(claude_desktop_config.json はClaude Desktop専用のファイルで、Claude Codeでは使わない点に注意)。
  4. CLAUDE.md にkintoneアプリ定義を記載
    使用するアプリID・フィールドコード・必須項目をCLAUDE.mdに書いておくと、Claude Codeが毎回確認せずに正確なフィールドマッピングで操作できる。
# CLAUDE.md に記載するkintoneアプリ定義の例

## kintone アプリ定義

### 顧客管理アプリ(APP_ID: 1)
– 会社名: `company_name`(必須)
– 担当者名: `contact_name`
– メールアドレス: `email`
– 電話番号: `phone`
– ステータス: `status`(リード/商談中/成約/失注)
– 最終コンタクト日: `last_contact`

### 案件管理アプリ(APP_ID: 2)
– 案件名: `project_name`(必須)
– 顧客ID: `customer_id`(ルックアップ: 顧客管理APP)
– 受注金額: `amount`
– 担当営業: `sales_rep`
– 納期: `deadline`

kintone レコード詳細画面 — Claude Codeで自動入力されたデータ
▲ kintone レコード詳細画面。会社名・担当者名・ステータス・金額がClaude Codeによって自動入力された。

【スクリプト】Python × kintone REST API で大量処理を自動化

MCPが自然文ベースの操作に向いているのに対し、1,000件超のCSV一括取込バッチ更新にはPythonスクリプトが適しています。Claude Codeに「このCSVをkintoneに登録するスクリプトを書いて」と指示するだけで、以下のようなコードを自動生成してくれます。

# Claude Codeが生成するkintone REST API スクリプト例
import requests, json, os

SUBDOMAIN = os.environ[“KINTONE_SUBDOMAIN”]
APP_ID = “1”
API_TOKEN = os.environ[“KINTONE_API_TOKEN”]

headers = {
“X-Cybozu-API-Token”: API_TOKEN,
“Content-Type”: “application/json”,
}

def add_record(company, contact, email):
payload = {
“app”: APP_ID,
“record”: {
“company_name”: {“value”: company},
“contact_name”: {“value”: contact},
“email”: {“value”: email},
}
}
r = requests.post(
f”https://{SUBDOMAIN}.cybozu.com/k/v1/record.json”,
headers=headers, data=json.dumps(payload)
)
r.raise_for_status()
return r.json()[“id”]

【上級】Webhook + Claude Code でイベント駆動自動化

kintoneのWebhook機能と組み合わせると、レコード保存と同時に外部処理を走らせることができます。たとえば「受注確定」ステータスに変わった瞬間、freeeに請求書を自動作成しSlackに通知、という処理がノーコードで実現できます。

トリガー Claude Codeの処理 連携先
受注ステータス変更 請求書データ生成・送信 freee API
新規顧客レコード追加 Salesforceに取引先同期 Salesforce REST API
案件フェーズ変更 Slackチャンネルに通知 Slack Webhook
月末(定期バッチ) 月次レポートExcel生成・メール送信 Gmail / Google Drive

kintone MCP連携 実装の5ステップ(Claude Code設定から動作確認まで)

  1. kintone REST APIトークンの発行
    kintoneの「アプリ設定」→「APIトークン」から、操作対象アプリに「レコード閲覧」「レコード追加」「レコード編集」の権限を付与したトークンを発行する。複数アプリを操作する場合はアプリごとにトークンを用意し、環境変数(KINTONE_API_TOKEN_APP1など)で管理する。
  2. Claude Code の .mcp.json に kintone MCPサーバーを追加
    プロジェクトルートで claude mcp add kintone --scope project -e KINTONE_BASE_URL=https://YOUR_SUBDOMAIN.cybozu.com -e KINTONE_API_TOKEN=YOUR_TOKEN -- npx -y @kintone/mcp-server を実行。.mcp.json に設定が自動追記される。
  3. .claude/permissions.json で操作できるアプリIDと権限を明示指定
    Claude Codeの permissions.json(または settings.jsonpermissions セクション)に、MCPツールの許可スコープを記載する。例:{"allow": ["mcp__kintone__get_records", "mcp__kintone__add_record", "mcp__kintone__update_record"]} のように操作種別を限定することで、意図しないアプリへの書き込みや削除を防ぐ。
  4. Claude に自然文で指示するだけで自動実行
    「アプリ名=顧客管理、会社名=株式会社○○、担当者=田中太郎 でレコードを登録して」と入力するだけで、Claude Codeがフィールドマッピングを自動解決してAPIを実行する。CLAUDE.md にアプリID・フィールドコードを記載しておくと精度が上がる。
  5. 実行ログをAurant RuleHubで監査・権限制御する
    複数のSaaSをまたぐ操作や、チームで共有する運用では Aurant RuleHub を挟むことで、操作ログの一元管理・承認フロー・最小権限の強制が可能になる。誰がいつどのアプリに何件書き込んだかをダッシュボードで確認できる。

認証方式の選択 — APIトークン vs ユーザー認証

kintone MCPの接続ではAPIトークン認証ユーザー認証(パスワード)の2種類が使えます。どちらを選ぶかでセキュリティと運用コストが大きく変わるため、最初に整理しておくことを勧めます。

観点 APIトークン認証 ユーザー認証(パスワード)
セキュリティ範囲 アプリ×操作種別で最小権限に絞れる そのユーザーの全権限が引き継がれる
人事異動・退職の影響 なし(トークンはアプリ所有) ユーザー削除でトークンも無効化
パスワード変更時 影響なし 即座に接続が切れる
推奨シーン 本番運用・チーム共有の自動化 開発・テスト環境での一時的な確認

本番運用ではAPIトークン一択です。さらに、読み取り専用の操作と書き込み系の操作でトークンを分けると、誤って本番データを上書きするリスクを減らせます。Claude Code の .mcp.json では環境変数名を変えて複数トークンを使い分けられます。

顧客登録の重複チェック — UPSERTで「登録済みなら更新、なければ追加」を1回のAPIで

Webフォームや名刺OCRから顧客情報を取り込む際に毎回ぶつかるのが「同じメールアドレスの顧客が既に登録されているかどうか」の問題です。単純に POST /k/v1/records.json で追加すると重複レコードが量産されます。kintone REST APIは PUT /k/v1/records.json でUPSERTモードをサポートしており、「重複チェックキー」(ユニーク制約を付けたフィールド)を指定するだけで登録・更新を1回のAPIで処理できます。

# UPSERT:email が一致するレコードを更新、なければ新規登録
# 事前に kintone アプリの「email」フィールドにユニーク制約を付けておく
import requests, json, os

SUBDOMAIN = os.environ["KINTONE_SUBDOMAIN"]
APP_ID    = "1"
API_TOKEN = os.environ["KINTONE_API_TOKEN"]
HEADERS   = {"X-Cybozu-API-Token": API_TOKEN, "Content-Type": "application/json"}

def upsert_customers(contacts: list):
    # updateKey を使った UPSERT モード(PUT /k/v1/records.json)
    records = [
        {
            "updateKey": {"field": "email", "value": c["email"]},
            "record": {
                "company_name": {"value": c["company"]},
                "contact_name": {"value": c["name"]},
                "last_contact":  {"value": c["date"]},
            }
        }
        for c in contacts
    ]
    payload = {"app": APP_ID, "records": records, "upsert": True}
    r = requests.put(
        f"https://{SUBDOMAIN}.cybozu.com/k/v1/records.json",
        headers=HEADERS, data=json.dumps(payload)
    )
    r.raise_for_status()
    return r.json()  # {"records": [{"id": "1", "result": "INSERT"}, ...]}
UPSERT を使う前提条件

updateKey に指定するフィールド(例:email)にkintoneアプリ設定でユニーク制約を付ける。② APIトークンに「レコード追加」と「レコード編集」の両方の権限を付与する。③ 1回のリクエストは100件まで(大量処理は100件ずつループ)。Claude Codeに「email フィールドを updateKey にして UPSERT で登録して」と伝えるだけで上記パターンを自動生成してくれます。

実装の落とし穴と対処法

  • APIトークンの権限不足:レコード閲覧のみのトークンで登録・更新しようとしてエラー。アプリ設定でCRUD権限を付与したトークンを再発行する。
  • フィールドコードのタイポ:日本語フィールド名ではなくフィールドコード(英数字)を使う必要がある。CLAUDE.mdにコード一覧を記載しておくと防止できる。
  • 一括登録の上限:kintone REST APIの一括登録は1回100件まで。1,000件なら10回に分けてループ処理するスクリプトをClaude Codeに生成させる。
  • Webhookの非同期タイムアウト:kintoneのWebhookは10秒でタイムアウトする。重い処理はキューに積んでバックグラウンド実行する設計にする。

レート制限・429エラーへの対処 — 大量処理で詰まらないために

kintone REST APIには同時接続数100件・1回の登録上限100件・取得オフセット上限10,000件という制約があります。Claude Codeが生成するスクリプトにこの対処を最初から組み込んでおかないと、数百件処理した時点でドメイン全体のAPIが止まる事態になります。以下は「Claude Codeに生成させる際にそのまま使える」実装パターンです。

import requests, time, json, os

SUBDOMAIN = os.environ["KINTONE_SUBDOMAIN"]
APP_ID    = "1"
API_TOKEN = os.environ["KINTONE_API_TOKEN"]
HEADERS   = {"X-Cybozu-API-Token": API_TOKEN, "Content-Type": "application/json"}

def bulk_add_records(records: list, chunk_size: int = 100):
    results = []
    for i in range(0, len(records), chunk_size):
        chunk   = records[i : i + chunk_size]
        payload = {"app": APP_ID, "records": chunk}
        for attempt in range(4):
            r = requests.post(
                f"https://{SUBDOMAIN}.cybozu.com/k/v1/records.json",
                headers=HEADERS, data=json.dumps(payload)
            )
            if r.status_code == 429:
                time.sleep(2 ** attempt)  # 1-2-4-8秒
                continue
            r.raise_for_status()
            results.extend(r.json()["ids"])
            break
        time.sleep(0.2)  # チャンク間200ms
    return results

Claude Codeへの指示はシンプルで構いません。「このCSVをkintone アプリID=1に100件ずつ分割して登録するスクリプトを書いて。429エラーは指数バックオフで最大4回リトライ、チャンク間は200ms待つこと」と伝えると、上記と同等のコードを自動生成してくれます。10,000件超の取得が必要な場合は、offsetパラメータを使ったページング(上限10,000件ずつ)と組み合わせてください。

月次レポート自動生成 — kintoneのビューデータをClaude Codeで集計してSlack・メールに送る

「月末になると売上集計を1時間かけて手作業でExcelに転記している」というパターンは、Claude Code × kintone REST APIで完全に自動化できます。kintoneのビュー(絞り込み条件付き一覧)はAPIで取得でき、そのデータをClaude Codeに渡すと集計・整形・送信までをワンセットで処理します。

Claude Codeへの指示例はこうなります。

Claude Code への指示テンプレート

「kintone の案件管理アプリ(APP_ID=2)から、今月の全レコードを取得して。フィールドは受注金額(amount)・担当営業(sales_rep)・ステータス(status)。成約のレコードだけ抽出して担当者別に合計受注額を集計し、上位5名のランキングをSlackの #sales-report チャンネルに投稿して。Slackのwebhook URLは環境変数 SLACK_WEBHOOK_URL に入っている。」

上記の指示1つで、Claude Codeは以下の処理を自動でコード化して実行します。

  1. kintone REST APIでレコードを取得
    GET /k/v1/records.jsonquery=status in ("成約") and 受注日 >= "2026-06-01" を渡して絞り込み取得。10,000件超えるデータはoffsetページングで全件を回収する。
  2. Pythonで集計・整形
    取得したJSONから sales_rep でgroupbyして amount を合計。上位5名をランキング形式のテキストに整形する。
  3. Slack Webhook で送信
    POST SLACK_WEBHOOK_URL に整形済みメッセージをPOST。添付ファイルにしたい場合はSlack Files APIでCSVをアップロードしてメッセージに紐づける。
# Claude Codeが生成する月次レポートスクリプトの骨格
import requests, json, os
from collections import defaultdict
from datetime import date

# 1. kintoneからデータ取得(offsetページング対応)
def fetch_this_month_deals(subdomain, app_id, token):
    first_day = date.today().replace(day=1).isoformat()
    query = f'status in ("成約") and 受注日 >= "{first_day}"'
    headers = {"X-Cybozu-API-Token": token}
    records, offset = [], 0
    while True:
        r = requests.get(
            f"https://{subdomain}.cybozu.com/k/v1/records.json",
            headers=headers,
            params={"app": app_id,
                    "query": f"{query} limit 500 offset {offset}",
                    "fields[0]": "sales_rep", "fields[1]": "amount"}
        ).json()["records"]
        if not r:
            break
        records.extend(r)
        offset += len(r)
    return records

# 2. 担当者別に集計してSlack投稿
def post_ranking_to_slack(records, webhook_url):
    totals = defaultdict(int)
    for rec in records:
        totals[rec["sales_rep"]["value"]] += int(rec["amount"]["value"] or 0)
    ranking = sorted(totals.items(), key=lambda x: -x[1])[:5]
    lines = [f"{i+1}. {name}:{amt:,}円" for i, (name, amt) in enumerate(ranking)]
    msg = "*今月の受注ランキング TOP5*\\n" + "\\n".join(lines)
    requests.post(webhook_url, data=json.dumps({"text": msg}))

# 実行
records = fetch_this_month_deals(
    os.environ["KINTONE_SUBDOMAIN"], "2", os.environ["KINTONE_API_TOKEN"]
)
post_ranking_to_slack(records, os.environ["SLACK_WEBHOOK_URL"])

月末に毎回実行するなら、このスクリプトをcron(Linux)やタスクスケジューラ(Windows)に登録するか、GitHub Actionsの schedule トリガーに乗せると完全無人化できます。Claude Codeに「このスクリプトを毎月末日の18時に自動実行する設定も書いて」と続けて指示するだけで、crontab設定やGitHub Actionsのyamlも生成してくれます。

生成AIの法人導入・セキュリティ設計のご相談

ChatGPTやClaudeなど生成AIのプラン選定・セキュアな全社導入・権限/ログ設計を、貴社の体制に合わせて整理します。すでに導入済みの環境について『この設計で問題ないか』を確認したい、という導入前後のセカンドオピニオンにも対応しています。

生成AI導入・セキュリティ支援を見る → セキュリティ設計の支援を見る →

よくある質問(FAQ)

kintone の操作はAIに全部任せて大丈夫?
Claude Codeの permissions.json でMCPツールの許可スコープを絞れば、想定外の操作を防げます。さらに Aurant RuleHub を併用すると、権限スコープの強制・操作ログの監査・承認フローをチーム全体で一元管理できるため、業務利用でも安全に運用できます。
プログラミングの知識がなくても使える?
kintone MCPアプローチであれば自然文で「○○アプリに△△を登録して」と指示するだけでOKです。Claude Codeがコードを自動生成・実行するため、kintoneの管理者権限とAPIトークンの発行手順さえわかれば、プログラミング経験がなくても操作できます。
kintone 以外に連携できるツールは?
freee・Money Forward Cloud・Salesforceなど、MCPサーバーが提供されているSaaSであれば同じ仕組みで連携できます。複数SaaSをまたぐ操作は Aurant RuleHub 経由で権限・ログを一元管理するのがおすすめです。
kintone MCPは無料で使えますか?
kintone MCP自体は(公式・サードパーティとも)無償で提供されています。kintoneのライセンス費用とClaude Codeの利用料(Max/Proプラン等)は別途必要です。
kintoneのゲストスペースやアーカイブアプリでも使えますか?
公式のkintone MCPサーバーはゲストスペースに非対応のため、ゲストスペース内のアプリはMCP経由では操作できません。扱う必要がある場合は、ゲストスペース用のAPIパス(/k/guest/{spaceId}/v1/)を明示したPythonスクリプト方式(REST API直接呼び出し)で連携してください。通常スペースのアプリであれば、APIトークンを発行できるものは基本的に利用可能です。
社内のkintoneデータをClaude Codeに渡しても安全ですか?
Anthropicは、API・商用プラン(Claude Code含む)経由で送信された業務データを既定でモデルの学習に使用しません。そのうえで、個人情報・機密情報はプロンプトに直接含めず、APIトークン経由でのデータ取得に留めるのが安全です。取得範囲はAPIトークンの権限設定で最小化できます。さらに、kintoneに加えてfreee・Salesforceなど複数のSaaSをAIから扱う場合は、AIに渡す情報・権限・操作を一段絞り込むセキュア基盤 RuleHub を挟み、最小権限・承認・操作ログを共通の仕組みとして担保する方法もあります。
プログラミング知識がなくても使えますか?
kintone MCPアプローチであれば自然文で操作できるため、コーディング不要です。Pythonスクリプトが必要な場合も、Claude Codeが生成するコードをコピペして実行するだけなので、コードを書く必要はありません。
freee・Salesforce・Slackとの連携は難しいですか?
各サービスのAPIキーをCLAUDE.mdや環境変数に設定しておけば、「kintoneの受注データをfreeeに請求書として登録して」と指示するだけでClaude Codeがスクリプトを生成・実行します。初回設定は30〜60分程度です。

kintone × Claude Code の導入を一緒に進めませんか?

現在の業務フローを伺い、最適な連携アプローチを無料でご提案します。初回相談はオンラインで30分。

無料相談を申し込む →


CRM・営業支援

Salesforce・HubSpot・kintoneの選定から導入・カスタマイズ・定着まで一貫対応。営業生産性を高め、商談化率を改善します。

AT
aurant technologies 編集

上場企業からスタートアップまで、数多くのデータ分析基盤構築・AI導入プロジェクトを主導。単なる技術提供にとどまらず、MA/CRM(Salesforce, Hubspot, kintone, LINE)導入によるマーケティング最適化やバックオフィス業務の自動化など、常に「事業数値(売上・利益)」に直結する改善実績多数。

この記事が役に立ったらシェア: