SPIRAL ver.2のデータベースを、AIと自然言語で操作できたら便利だと思いませんか?
本記事では、MCP(Model Context Protocol)を使ってSPIRAL ver.2のAPIをMCPサーバーとして実装し、Claude DesktopやClaude CodeなどのAIクライアントから自然言語でSPIRALのレコードを検索・作成・更新・削除できる仕組みを構築する方法を解説します。
「未対応のお問い合わせを一覧で出して」「ステータスを対応中に更新して」といった指示をチャットに打ち込むだけで、AIがSPIRAL APIを自律的に呼び出し、結果を返してくれます。
実装はTypeScript(Node.js)で行い、Claude Desktopに接続して動作確認するまでの手順を解説します。
注意点
claude_desktop_config.jsonの
envセクション)で管理します。
・ 削除操作(
delete_record・
bulk_delete_records)は取り消せません。ツールの設計上、確認フラグ(
confirmed: true)なしには実行しないよう安全設計しています。
・ AIとの会話内容はAnthropicのサーバーを経由します。個人情報や機密データを含むDBを接続する場合は、社内ポリシーを確認してください。
・ SPIRAL ver.2 APIにはレート制限があります。同期型の一括登録・更新(
bulk_create_records/
bulk_update_records)は最大1,000件/リクエストです。ファイルアップロードが必要な非同期の一括登録・一括更新依頼APIは
multipart/form-data仕様のため、本MCPサーバーではツール化していません(必要な場合はAPIリファレンスから直接呼び出してください)。
・ MCPサーバーはNode.js 20以上が必要です。
MCPとは?
MCP(Model Context Protocol)は、Anthropicが2024年に発表したオープンプロトコルです。
AIモデルが外部サービスのデータやツールを安全に呼び出すための共通規格で、現在はOpenAI・Google・Microsoft・AWSも採用しており、AI業界の事実上の標準となっています。
MCPサーバーを一度実装すれば、Claude Desktop・Claude Code・Cursorなど複数のAIクライアントから同じインターフェースで利用できます。
| 登場名称 | 役割 | 本記事での該当 |
|---|---|---|
| MCP Host | AIを操作するアプリ | Claude Desktop / Claude Code |
| MCP Server | 外部APIをラップしてツールを提供 | 本記事で実装するNode.jsサーバー |
| MCP Client | Host内のMCP接続クライアント | (Host内部で自動処理) |
実装の概要
全体の流れは以下のとおりです。
1. 配布用ZIP(ソース一式)を取得し、任意フォルダに展開
2. 依存パッケージをインストールしてTypeScriptをビルド
3. Claude Desktopの設定にMCPサーバーを登録(ZIP同梱テンプレートを利用)
4. Claude Desktopを再起動して動作確認
事前準備
以下を用意してください。
| 必要なもの | 確認場所・取得方法 |
|---|---|
| Node.js 20以上 | nodejs.org からインストール。node -vで確認。 |
| SPIRAL ver.2 APIキー | SPIRAL管理画面 > APIエージェント からAPIエージェントを作成してAPIキーを取得。 |
| SPIRAL アプリID | SPIRAL管理画面のURLまたはアプリ設定から確認。 |
| Claude Desktop | claude.ai/download からインストール(無料プランでOK)。 |
設定方法
配布用ZIPは以下からダウンロードしてください。
spiral-mcp.zip をダウンロード
① 作業フォルダの作成
任意の場所で、作業用フォルダを作成して移動します。
mkdir spiral-mcp
cd spiral-mcp
② ダウンロードしたZIPを展開
ダウンロードしたspiral-mcp.zip(名称は任意)を作業フォルダに配置し、展開します。以下はPowerShellの例です。
Copy-Item ".\spiral-mcp.zip" ".\tmp\spiral-mcp.zip"
Expand-Archive ".\tmp\spiral-mcp.zip" ".\tmp" -Force
Copy-Item ".\tmp\spiral-mcp\*" ".\" -Recurse -Force
package.json、
src/、
tsconfig.jsonが存在することを確認してください。
③ 依存インストールとビルド
展開したプロジェクトディレクトリで、依存パッケージをインストールしてビルドします。
npm install
npm run build
④ Claude Desktop設定ファイルを開く
claude_desktop_config.jsonを開き、ZIPに同梱されたテンプレートをベースに
mcpServersを設定します。設定ファイルを開くコマンド例は以下です。
notepad %APPDATA%\Claude\claude_desktop_config.json
code %APPDATA%\Claude\claude_desktop_config.json
Windows の場合
%APPDATA%\Claude\claude_desktop_config.json
Mac の場合
~/Library/Application Support/Claude/claude_desktop_config.json
テンプレートの
SPIRAL_API_KEY、
SPIRAL_APP_ID、
argsを実環境に合わせて編集してください。
⑤ Claude Desktop再起動と接続確認
設定を反映するためClaude Desktopを再起動し、MCPサーバーを確認します。
taskkill /IM "Claude.exe" /F
start "" "%LocalAppData%\AnthropicClaude\Claude.exe"
argsの
C:/path/to/spiral-mcp/dist/index.jsは例示です。自分のPC上でビルド後の
dist/index.jsへの絶対パス(例:
C:/Users/名前/spiral-mcp/dist/index.js)に必ず置き換えてください。ZIPは展開後のフォルダ構成を変更しないでください。
実装したMCPツール一覧(全15種)
| ツール名 | 機能 | フェーズ |
|---|---|---|
list_databases |
DB一覧取得 | 基本 |
get_database_fields |
DB定義・フィールド一覧取得(DB取得API。専用の /fields エンドポイントはありません) | 基本 |
search_records |
レコード検索(where・ページネーション等)。fieldsにメタ情報( _id等)は指定不可(API仕様。レスポンスには含まれる)。ソートは field:asc|desc形式 |
基本 |
get_record |
1件取得(JOIN対応) | 基本 |
create_record |
レコード作成 | 基本 |
update_record |
レコード部分更新 | 基本 |
delete_record |
レコード削除(確認フラグ必須) | 基本 |
bulk_create_records |
同期型・最大1,000件一括作成(API上限に準拠) | 一括操作 |
bulk_update_records |
同期型・最大1,000件一括更新(数値・真偽は文字列に正規化して送信) | 一括操作 |
bulk_delete_records |
一括削除(確認フラグ必須) | 一括操作 |
get_email_logs |
メール配信ログ取得 | 分析 |
get_click_logs |
クリックカウントログ取得 | 分析 |
get_open_logs |
メール開封ログ取得 | 分析 |
run_action |
POST .../actions/{actionId}/run。成功時は多くの場合204。リクエストボディはアクション種別ごとに異なる(例: DBトリガの非同期メールは recordId)。アクション実行APIのREQUEST BODY を参照 |
応用 |
issue_one_time_login_url |
認証エリアのワンタイムURLを発行 | 応用 |
エラーハンドリング(失敗時の動き)
isError: trueフラグとエラーメッセージをAIに返します。AIは自動的に内容を解釈して「エラーが発生しました:〇〇」と回答します。
・ APIキーが無効な場合は
401 Unauthorizedが返ります。APIエージェントの権限設定とキーを確認してください。
・ 削除ツールは
confirmed: falseの場合、削除を実行せず確認メッセージを返します。AIが自動的に「本当に削除しますか?」と聞いてから実行する安全設計です。
・
search_recordsの取得上限は200件です。200件を超えるデータは
offsetを使ったページネーションで取得してください。
・
run_actionで存在しないアクションIDを指定すると
404などになり得ます。メールアクションIDは管理画面の詳細で確認してください。
実行結果
Claude Desktopを再起動すると、MCPサーバーが自動的に接続されます。
接続確認は Settings(設定)> 開発者 から行えます。インストール済みのMCPサーバーとその状態(有効/無効)が一覧表示されます。
また、チャット入力欄左下の 「+」ボタン > コネクタ から接続中のMCPサーバーが確認できます。
AIがツールを使用する際は、チャット内にツール実行の内容が折りたたまれたブロックとして表示され、実行結果もその場で確認できます。
実際にClaude Desktopで以下のように操作できます。
list_databasesが呼ばれ、アプリ内のDB名・IDが一覧表示される
・ 「お問い合わせDBからステータスが未対応のレコードを10件出して」→
search_recordsが呼ばれ、条件に合うレコードが返る
・ 「ID:4521のレコードのステータスを対応中に更新して」→
update_recordが呼ばれ、更新結果が返る
・ 「先月のメール開封率を集計して」→
get_open_logsでログを取得し、AIが集計・分析して回答する
まとめ
今回は、SPIRAL ver.2のAPIをMCPサーバーとして実装し、Claude DesktopからAIで自然言語操作できる仕組みを構築しました。
一度MCPサーバーを実装すれば、Claude Desktop・Claude Codeなど複数のAIクライアントから共通して利用でき、非エンジニアのスタッフでもSPIRALのデータを自然言語で参照・更新できる社内ツールとして活用できます。
不具合が発生した場合は以下を確認してください。
claude_desktop_config.jsonの
argsがビルド後の
dist/index.jsを指しているか、
dist以下が欠けていないか、プロジェクトフォルダのパスに全角文字・特殊記号が含まれていないかを確認してください。Windowsではパスのバックスラッシュのエスケープ漏れや、先頭のドライブレター欠落(
C:が抜ける等)に注意してください。
・ APIエラーが返る:SPIRAL管理画面でAPIエージェントの権限(対象DBへのアクセス許可)を確認してください。
・ ツールが表示されない:Claude Desktopの設定ファイルのJSONが壊れていないか、パスが正しいかを確認してください。Settings > 開発者 でサーバーがエラー状態になっていないかも確認できます。
・ 詳細ログが必要なとき:環境変数
SPIRAL_MCP_LOG_FILEにログファイルの絶対パスを指定すると、起動・ツール登録などの行が追記されます(任意)。HTTPタイムアウトを延ばす場合は
SPIRAL_HTTP_TIMEOUT_MS(ミリ秒)、ベータAPIを使う場合は
SPIRAL_BASE_URLを設定できます。