kintone OAuth MCP Server on Cloudflare Workers

kintone OAuth MCP Server on Cloudflare Workers

Enables secure interaction with kintone through OAuth authentication, supporting record operations, app configuration management, file operations, and access control without storing API keys locally.

Category
访问服务器

README

リモート Model Context Protocol (MCP) サーバー for kintone via OAuth on Cloudflare Workers

Ask DeepWiki

これは Cloudflare Workers として deploy可能な kintone 用の Model Context Protocol (MCP) サーバーのサンプルコードです。

プログラムをローカルにセットアップする必要がなく、Webブラウザー版の Claude や ChatGPT から使用することができます。

OAuth認証により、APIキーなどの機密情報をローカルに保存することなく、安全にkintoneとの連携を実現します。 一度デプロイすれば、同じcybozu.comドメインを使用する全てのユーザーが共有して利用できます。

🚀 対応確認済みプラットフォーム

2025年9月11日現在 ChatGPT Web版 においては ChatGPT の Pro または Plus アカウントで 設定 → コネクタ→ 詳細設定 → 開発者モード を有効にすることにより ベータ版として利用できるという状況のようです。

📋 必要な環境

  • Cloudflareアカウント
  • cybozu.comドメインの管理者権限(OAuthクライアント作成用)
  • Node.js 18以上
  • Wrangler CLI

🔧 セットアップ手順

1. cybozu.com共通管理でOAuthクライアントを作成

Cybozuの公式ドキュメントに従ってOAuthクライアントを追加します。

設定項目:

  • クライアント名: 分かりやすい名前(例:「kintone MCP Server」)
  • リダイレクトエンドポイント: 一時的に https://localhost:8788/callback を設定
  • スコープ: 以下を選択
    • k:app_record:read - レコード読み取り
    • k:app_record:write - レコード書き込み
    • k:app_settings:read - アプリ設定読み取り
    • k:app_settings:write - アプリ設定書き込み
    • k:file:read - ファイル読み取り
    • k:file:write - ファイル書き込み

<!-- markdownlint-disable MD033 --> <img height="400" src="png/kintone-oauth-mcp-server-cfw1.png" alt="OAuthクライアントを追加" /> <!-- markdownlint-enable MD033 -->

  • 保存後に表示される「クライアントID」と「クライアントシークレット」を控えておきます。
  • OAuthクライアントの「利用者の設定」で、この MCP Server を利用させるユーザーを指定してください。

2. プロジェクトのセットアップ

# リポジトリのクローン
git clone https://github.com/r3-yamauchi/kintone-oauth-mcp-server-cfw.git
cd kintone-oauth-mcp-server-cfw

# 依存関係のインストール
npm install

3. 環境変数の設定

  • OAuthクライアントを作成した際に控えた値を Wranglerの設定ファイル( wrangler.jsonc )内に記入します。:
"vars": {
   "CYBOZU_CLIENT_ID": "<your cybozu.com client id>",
   "CYBOZU_CLIENT_SECRET": "<your cybozu.com client secret>",
   "CYBOZU_SUBDOMAIN": "<your cybozu.com sub domain>", # your cybozu.com subdomain
   "COOKIE_ENCRYPTION_KEY": "<your cookie encryption key>", # add any random string here e.g. openssl rand -hex 32
   "WORKER_URL": "<your worker url>"
},

4. KV名前空間の作成

  • wrangler CLI で以下を実行して KV名前空間を作成します。:

wrangler kv:namespace create "OAUTH_KV"

  • Wranglerの設定ファイル(wrangler.jsonc)内の <your cloudflare kv id> 欄に、作成された KV の ID を記入してください。

  • 以下のコマンドを実行して Cloudflare Workers へ deploy してください。

wrangler deploy

  • deploy が完了したら Workers の URL を cybozu.com共通管理画面の OAuthクライアントの「リダイレクトエンドポイント」欄にセットし、末尾に /callback を付けてください。 https://<your-subdomain>.workers.dev/callback と入力することになります。

Claude WebアプリからリモートMCPサーバーにアクセス

  • Claude Webアプリのインテグレーション管理画面 にアクセスし 「インテグレーションを追加」をクリックします。

  • 「連携名」は MCP Server を識別する際の名前になるので、分かりやすいものを付けます。

  • 「連携URL」に https://<your-subdomain>.workers.dev/sse と入力してください。

<!-- markdownlint-disable MD033 --> <img height="400" src="png/kintone-oauth-mcp-server-cfw2.png" alt="インテグレーションを追加" /> <!-- markdownlint-enable MD033 -->

  • 「追加」ボタンをクリックしたのち、「連携/連携させる」をクリックします。 OAuthの確認画面が表示されるので「Approve」「許可」をクリックします。

<!-- markdownlint-disable MD033 --> <img height="400" src="png/kintone-oauth-mcp-server-cfw3.png" alt="OAuthクライアントを追加" /> <!-- markdownlint-enable MD033 -->

<!-- markdownlint-disable MD033 --> <img height="400" src="png/kintone-oauth-mcp-server-cfw4.png" alt="OAuthクライアントを追加" /> <!-- markdownlint-enable MD033 -->

  • Claude WebアプリからリモートMCPサーバーを利用できるようになります。

<!-- markdownlint-disable MD033 --> <img height="400" src="png/kintone-oauth-mcp-server-cfw5.png" alt="OAuthクライアントを追加" /> <!-- markdownlint-enable MD033 -->

Claude DesktopからリモートMCPサーバーにアクセス

Claude Desktopで、Settings -> Developer -> Edit Configを開き、以下の設定を追加。Claude Desktopを再起動すると、OAuthログイン画面が表示され、認証フローを完了するとClaudeがMCPサーバーにアクセスできるようになります。

{
  "mcpServers": {
    "kintone": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://<your-subdomain>.workers.dev/sse"
      ]
    }
  }
}

解説

🎯 これは何をするものか

AIアシスタント(Claudeなど)がkintoneのAPIに安全にアクセスできるようにするサーバーです。

Cloudflare Workers上で動作し、認証情報をローカルに保存することなく、OAuth認証を通じてkintoneとの連携を実現します。

🔧 主な機能

1. 利用可能なツール(全28ツール)

レコード操作

  • getRecords - レコード一覧を取得
  • getRecord - 単一レコードを取得
  • addRecord - レコードを追加
  • addRecords - 複数レコードを一括追加
  • updateRecord - レコードを更新
  • getRecordComments - レコードのコメントを取得
  • addRecordComment - レコードにコメントを投稿
  • evaluateRecordsAcl - レコードのアクセス権を評価

アプリ設定

  • getApp - アプリ基本情報を取得
  • getAppFields - フィールド一覧を取得
  • searchApps - アプリを検索
  • getAppSettings - アプリの一般設定を取得
  • getFormLayout - フォームレイアウトを取得
  • getViews - 一覧(ビュー)設定を取得
  • getProcessManagement - プロセス管理設定を取得
  • getAppReports - グラフ設定を取得
  • getAppCustomize - JavaScript/CSSカスタマイズ設定を取得
  • getAppActions - アクション設定を取得

ファイル操作

  • uploadFile - ファイルアップロード
  • downloadFile - ファイルダウンロード

アクセス権

  • getAppAcl - アプリのアクセス権を取得
  • getRecordAcl - レコードのアクセス権設定を取得
  • getFieldAcl - フィールドのアクセス権を取得

通知設定

  • getAppNotificationsGeneral - アプリの条件通知を取得
  • getAppNotificationsPerRecord - レコードの条件通知を取得
  • getAppNotificationsReminder - リマインダー通知を取得

デプロイ管理

  • updateAppCustomize - JavaScript/CSSカスタマイズを更新
  • deployApp - アプリ設定を運用環境へ反映

2. 二重OAuth認証

  • MCPクライアント(Claude)との認証
  • kintone/Cybozuアカウントとの認証

3. 認証フロー

  1. MCPクライアントが接続
  2. ユーザーが承認画面で許可
  3. kintoneのOAuth画面へリダイレクト
  4. kintoneでの認証完了後、アクセストークンを取得
  5. 安全な接続が確立

🏗️ アーキテクチャ

  • Cloudflare Workers - サーバーレスでスケーラブル
  • KV Storage - OAuth状態の永続化
  • 暗号化されたCookie - 承認済みクライアントの記憶

💡 メリット

  1. セキュア - APIキーの共有不要
  2. マルチユーザー対応 - 1つのデプロイで複数ユーザーが利用可能
  3. ブラウザ/デスクトップ対応 - Claude WebやClaude Desktopから利用可能
  4. コスト効率 - サーバーレスで必要な時だけ実行

このプロジェクトは、GitHubのOAuthテンプレートをベースに、kintone専用にカスタマイズされた本格的なMCPサーバー実装となっています。

このプロジェクトの由来

このプロジェクトは、もともとCloudflareのGitHub OAuthテンプレートを使用して作成されました:

npm create cloudflare@latest -- kintone-oauth-mcp-server-cfw --template=cloudflare/ai/demos/remote-mcp-github-oauth

このテンプレート(CloudflareのRemote MCP Serverガイドで説明あり)は、OAuth認証を備えたMCPサーバーの構築基盤を提供します。本プロジェクトでは、このテンプレートを Cybozu/kintone OAuth 用に改修し、CybozuのOAuth 2.0実装に対応した認証フローを実現しています。

元のテンプレートからの主な変更点

GitHub OAuthテンプレートをkintoneに対応させるため、以下の変更を行いました:

  1. OAuthハンドラー: src/cybozu-handler.ts を新規作成し、kintoneのOAuthフローを処理( github-handler.ts を置き換え)
  2. OAuthエンドポイント: Cybozu OAuthのエンドポイントに変更:
    • 認可: https://{subdomain}.cybozu.com/oauth2/authorization
    • トークン: https://{subdomain}.cybozu.com/oauth2/token
  3. 認証方式: kintoneのOAuth 2.0仕様に合わせ(クレデンシャルはリクエストボディに含める)
  4. 環境変数: GitHub用からkintone用に変更:
    • GITHUB_CLIENT_IDCYBOZU_CLIENT_ID
    • GITHUB_CLIENT_SECRETCYBOZU_CLIENT_SECRET
    • CYBOZU_SUBDOMAIN を追加(kintoneのサブドメイン用)
  5. スコープ: kintone APIのスコープを使用
    • k:app_record:read - レコード読み取り権限
    • k:app_record:write - レコード書き込み権限
    • k:app_settings:read - アプリ設定読み取り権限
    • k:app_settings:write - アプリ設定書き込み権限(カスタマイズ更新用)
    • k:file:read - ファイル読み取り権限
    • k:file:write - ファイル書き込み権限

ローカル開発とテスト

HTTPSを有効にしてサーバーを起動:

wrangler dev --local-protocol https

Inspectorで https://localhost:8788/sse に接続してテスト。

注意: 初回アクセス時には、ブラウザで自己署名証明書の警告を受け入れる必要があります。

OAuth設定トラブルシューティング

401エラーが発生する場合

以下の点を確認してください:

  1. Cybozu Developer Networkでの設定

    • リダイレクトURIが完全一致していることを確認
      • 本番環境: https://<your-subdomain>.workers.dev/callback
      • 開発環境: https://localhost:8788/callback
    • OAuthアプリケーションが「有効」になっている
    • client_idとclient_secretが正しくコピーされている
    • 必要なスコープが設定されている: k:app_record:read k:app_record:write k:app_settings:read k:app_settings:write k:file:read k:file:write
  2. 環境変数の確認

    # .dev.varsファイルまたはwrangler secretsで以下を確認
    CYBOZU_CLIENT_ID=<your-client-id>
    CYBOZU_CLIENT_SECRET=<your-client-secret>
    CYBOZU_SUBDOMAIN=<your-subdomain>
    COOKIE_ENCRYPTION_KEY=<random-32-char-string>
    
  3. ログの確認 開発サーバー起動時のコンソールで以下を確認:

    • OAuth Callback Received - コールバックが正しく受信されているか
    • Starting Token Exchange - トークン交換が開始されているか
    • エラーレスポンスの詳細内容
  4. kintone OAuth仕様

    • 認可エンドポイント: https://{subdomain}.cybozu.com/oauth2/authorization
    • トークンエンドポイント: https://{subdomain}.cybozu.com/oauth2/token
    • 認証方式: リクエストボディにclient_idとclient_secretを含める
    • レスポンス形式: JSON
  5. デバッグモード 詳細なログを確認するには、開発サーバーを起動して実行できます:

    npm run dev
    

仕組みの概要

OAuthプロバイダー

OAuth Providerライブラリは、Cloudflare Workers向けのOAuth 2.1サーバー実装です。 このライブラリがOAuthフロー全体(トークン発行、検証、管理)を担当しています。具体的には:

  • MCPクライアントの認証
  • kintone OAuthサービスへの接続管理
  • KVストレージでのトークン・認証状態の安全な保存

MCP Remote

MCP Remoteライブラリは、サーバーがクライアントにツールを提供できるようにします:

  • クライアントとサーバー間の通信プロトコルを定義
  • ツールの定義方法を提供
  • リクエスト/レスポンスのシリアライズ・デシリアライズを管理
  • クライアントとサーバー間のServer-Sent Events (SSE)接続を維持

MCP Server を使用するリスク

他人が作成・実装した MCP server を使用する際には一定のリスクがあることを必ず念頭において利用してください。

「kintone」はサイボウズ株式会社の登録商標です。

ここに記載している内容は情報提供を目的としており、個別のサポートはできません。 設定内容についてのご質問やご自身の環境で動作しないといったお問い合わせをいただいても対応はできませんので、ご了承ください。

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选