開発情報・ナレッジ

投稿者: ShiningStar株式会社 2026年3月26日 (木)

「ステータスを対応中に更新して」でSPIRALが動く — MCP連携実装

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に接続して動作確認するまでの手順を解説します。



注意点

APIキーをコードに直書きしないでください。本記事では環境変数(
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内部で自動処理)

実装の概要

全体の流れは以下のとおりです。

事前準備. Node.js・npmのインストール、SPIRAL APIキーの取得、Claude Desktopのインストール
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
        
※ フォルダ名に全角文字や特殊記号(×・*など)を使うと、Node.jsのESMモジュール解決で問題が発生する場合があります。半角英数字のフォルダ名を推奨します。

② ダウンロードした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を発行 応用

エラーハンドリング(失敗時の動き)

SPIRAL APIがエラーを返した場合(4xx・5xx)、ツールは
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で以下のように操作できます。

「SPIRALのDB一覧を教えて」→
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のデータを自然言語で参照・更新できる社内ツールとして活用できます。

不具合が発生した場合は以下を確認してください。

サーバーが起動しない:Node.jsのバージョン(20以上か)、
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
を設定できます。

解決しない場合はこちら コンテンツに関しての
要望はこちら