Apideck MCP Server について
Apideck MCP Serverは、会計、CRM、人事などにわたるApideck Unified APIの操作を、単一のMCPエンドポイントからエージェントに提供します。段階的なツール探索や、簡潔なコード実行向けモードを選べます。
主な機能
- 0110種類のAPIにまたがる330ツール
- 02段階的なツール探索
- 03静的モードとコード実行モード
- 04HTTPメソッドによるツール絞り込み
- 05ホスト型HTTPとローカルstdio
活用シーン
- 01会計記録やレポートの管理
- 02CRM連絡先の検索と更新
- 03ファイルや人事データの操作
- 04読み取りや書き込み操作に制限
MCP 対応
会計、CRM、人事、ファイルストレージなどのApideck Unified API操作をMCPツールとして公開します。クライアントはホスト型HTTPエンドポイントに接続するか、ローカルでstdio経由で実行できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.apideck.dev/mcpclaude mcp add --transport http apideck-libraries https://mcp.apideck.dev/mcp{"mcpServers":{"apideck-libraries":{"type":"http","url":"https://mcp.apideck.dev/mcp"}}}Cursor で開く{"servers":{"apideck-libraries":{"type":"http","url":"https://mcp.apideck.dev/mcp"}}}VS Code で開く{"mcpServers":{"apideck-libraries":{"type":"http","url":"https://mcp.apideck.dev/mcp"}}}{"mcpServers":{"apideck-libraries":{"serverUrl":"https://mcp.apideck.dev/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://mcp.apideck.dev/mcp認証が必要ツール
4| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| scope | enum | いいえ | 変更範囲で絞り込みます:"read"(書き込みなし)、"write"(作成/更新)、または "destructive"(削除/上書き)。省略すると、すべての範囲が含まれます。read | write | destructive |
| domain | string | いいえ | 結果を単一のツールドメインに限定します(例:"accounting"、"hris")。省略すると、ドメイン横断インデックスを取得します。引数なしの前回の呼び出しで返されたキーを使用します。 |
| search_terms | array | いいえ | ツール名/説明内で、大文字と小文字を区別しない部分文字列条件を AND で照合します(例:["invoice","create"])。省略すると、そのドメインのすべてのツールを一覧表示します。 |
詳細
Apideck MCP サーバー
Apideck Unified API 用の Model Context Protocol サーバーです。あらゆる MCP 対応エージェントを、会計システム、HRIS プラットフォーム、CRM、ファイルストレージなど、200 以上のコネクターに 1 つのインテグレーションで接続できます。
クイック接続
Claude Desktop(.mcpb バンドル)
おすすめ — ビルド済みバンドル:
ビルド済みの mcp-server.mcpb を Claude Desktop にドラッグ&ドロップします。Claude が manifest.json を読み込み、認証情報の入力を求めてサーバーを起動するため、手動で設定する必要はありません。
メモ
デスクトップ拡張機能の詳細をご覧ください。
ローカル stdio(npx)を使う方法:
~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows)を編集します。
{
"mcpServers": {
"apideck": {
"command": "npx",
"args": ["-y", "@apideck/mcp", "start"],
"env": {
"APIDECK_API_KEY": "YOUR_API_KEY",
"APIDECK_CONSUMER_ID": "YOUR_CONSUMER_ID",
"APIDECK_APP_ID": "YOUR_APP_ID"
}
}
}
}
保存後、Claude Desktop を再起動します。特定のバージョンを固定するには、@apideck/mcp を @apideck/[email protected] に置き換えます。
Claude Code CLI
シェルで認証情報を設定します。
export APIDECK_API_KEY="..."
export APIDECK_CONSUMER_ID="..."
export APIDECK_APP_ID="..."
ホスト型(おすすめ):
claude mcp add --transport http apideck https://mcp.apideck.dev/mcp \
--header "Authorization: Bearer $APIDECK_API_KEY" \
--header "x-apideck-consumer-id: $APIDECK_CONSUMER_ID" \
--header "x-apideck-app-id: $APIDECK_APP_ID"
ローカル stdio(npx):
claude mcp add apideck \
-e APIDECK_API_KEY="$APIDECK_API_KEY" \
-e APIDECK_CONSUMER_ID="$APIDECK_CONSUMER_ID" \
-e APIDECK_APP_ID="$APIDECK_APP_ID" \
-- npx -y @apideck/mcp start
start コマンドは環境変数からのみ認証情報を読み込みます。--api-key / --consumer-id / --app-id フラグは受け付けません。
Windsurf
Settings → Cascade → Manage MCPs → View raw config の順に選択し、次を貼り付けます。
{
"mcpServers": {
"apideck": {
"url": "https://mcp.apideck.dev/mcp",
"headers": {
"x-apideck-api-key": "YOUR_API_KEY",
"x-apideck-consumer-id": "YOUR_CONSUMER_ID",
"x-apideck-app-id": "YOUR_APP_ID"
}
}
}
}
任意の MCP クライアント(JSON を手動で設定)
{
"mcpServers": {
"apideck": {
"url": "https://mcp.apideck.dev/mcp",
"headers": {
"x-apideck-api-key": "YOUR_API_KEY",
"x-apideck-consumer-id": "YOUR_CONSUMER_ID",
"x-apideck-app-id": "YOUR_APP_ID"
}
}
}
}
Claude Desktop(.mcpb プラグインバンドル)
Apideck は Claude プラグインバンドル(.mcpb — Anthropic の Model Context Protocol Bundle 形式)を提供しています。これを Claude Desktop にドロップすると、標準のプラグイン UI から API キー/コンシューマー ID/アプリ ID の入力を求める、完全なサーバー(330 個のエンドポイントツール + 4 個のワークフローツール)を利用できます。
pnpm mcpb:build # → dist/mcp-server.mcpb (~590 KB)
バンドルはローカルでビルドされます。GitHub Releases への CI による公開は延期されています。.mcpb を Claude Desktop のプラグインインストーラーで開くと、Claude Desktop が manifest.json を読み込んで認証情報を設定し、サーバーを起動します。
ツール
10 種類の統合 API にわたる 330 個のツール:
| API | ツール数 | 対応範囲 |
|---|---|---|
| Accounting | 143 | 請求書、買掛金、支払い、サプライヤー、顧客、仕訳、元帳勘定、発注書、税率、損益計算書、貸借対照表など |
| CRM | 50 | 企業、連絡先、見込み客、商談、パイプライン、メモ、アクティビティ、ユーザー |
| File Storage | 32 | ファイル、フォルダー、ドライブ、共有リンク、アップロードセッション |
| HRIS | 25 | 従業員、企業、部門、給与、休暇申請 |
| Vault | 23 | 接続、コンシューマー、セッション、カスタムマッピング、ログ |
| ATS | 15 | 応募者、応募、求人 |
| Issue Tracking | 15 | コレクション、チケット、ユーザー、タグ、コメント |
| Connector | 8 | API、コネクター、リソース、対応範囲のメタデータ |
| Ecommerce | 7 | 顧客、注文、商品、ストア |
| Webhook | 6 | Webhook サブスクリプション、ログ |
| Proxy | 6 | GET、POST、PUT、PATCH、DELETE、OPTIONS |
ワークフローツール
意図ごとにまとめられたワークフローでは、複数の呼び出しを単一の MCP ツールの背後で実行します。エージェントが頻繁に誤る往復処理やフィールドの受け渡しを省けます。
| ツール | 機能 | 呼び出し数 |
|---|---|---|
apideck-month-end-close-check | 滞留買掛金、滞留売掛金、貸借対照表、損益計算書を並列で呼び出します。一部のレポートがコネクターでサポートされていない場合は、部分的な結果を返します。 | 4 |
ホスト型
サーバーは次の場所で稼働しています。
https://mcp.apideck.dev/mcp
ヘッダーで認証情報を渡します。
| ヘッダー | 説明 |
|---|---|
x-apideck-api-key | Apideck API キー |
x-apideck-consumer-id | アプリ内のエンドユーザー/顧客 ID(任意。詳細は以下を参照) |
x-apideck-app-id | Apideck アプリケーション ID |
x-apideck-auth-type | 任意。API キーの代わりに Vault セッショントークンで認証するには、JWT を設定します |
Vault セッショントークン(JWT)
エンドユーザーのブラウザーやエージェントが API キーを使わずにツールを呼び出せるようにするには、バックエンドで
Vault セッション
を作成し、代わりに session_token を渡します。
Authorization: Bearer <session_token>
x-apideck-auth-type: JWT
x-apideck-app-id: <your app ID>
x-apideck-consumer-id: <the session's consumer ID>
サーバーは API Explorer によるセッション認証と同様に、すべての Apideck API 呼び出しに x-apideck-auth-type: JWT を転送します。それ以外の値では API キー認証が維持されます。いくつかの制限があります。
- このヘッダーは、リクエストにベアラートークンが含まれている場合にのみ有効です。サーバー自身の
APIDECK_API_KEYが JWT として送信されることはありません。 - セッショントークンでは新しい Vault セッションを作成できません。接続の再認証が必要な場合、ツールは再認証リンクではなく、通常のエラーメッセージを返します。
- JWT 認証は HTTP でのみ機能します。stdio CLI では常に API キーが使用されます。
コンシューマーのスコープ設定(任意)
接続時にコンシューマー ID を指定する必要はありません。APIDECK_CONSUMER_ID/
x-apideck-consumer-id を設定せずにサーバーをスコープなしで起動し、各ツールに consumer_id 引数を渡すことで、呼び出しごとにコンシューマーを指定または上書きできます。
execute_tool({ name: "crm-contacts-all", input: { consumer_id: "acme-inc" } })
優先順位:呼び出しごとの consumer_id 引数が、APIDECK_CONSUMER_ID 環境変数/x-apideck-consumer-id ヘッダーより優先されます。
- スコープなしの呼び出しは、Webhook ログ(
webhook-event-logs-all)やvault-connections-allなど、コンシューマーを必要としないアプリケーションスコープのエンドポイントで機能します。 - コンシューマースコープのエンドポイントをコンシューマーなしで呼び出すと、Apideck の「consumer required」エラーが返されます。そのため、これらのエンドポイントでは
consumer_id(または環境変数/ヘッダー)を設定してください。
ID の固定(オプトイン)
起動時のヘッダー/環境変数で ID を固定し、エージェントが呼び出しごとにコンシューマーや接続を切り替えられないようにするには、--lock-identity(CLI)を指定するか、?lock_identity=true(ホスト型)を追加して起動します。固定した呼び出しでは、呼び出しごとの consumer_id/service_id 引数は無視されます。デフォルトでは無効です。consumer_id をパスパラメーターとして受け取る Vault のコンシューマーツール(例:vault-consumers-one)では、固定されたコンシューマーのみが受け付けられます。それ以外の値や、コンシューマーが固定されていない場合は拒否されます。service_id パスパラメーター(例:vault-connections-one)には影響しません。
3 つのモード
| モード | 公開されるツール | 初期トークン数 | 最適な用途 |
|---|---|---|---|
dynamic(デフォルト) | 4 つのメタツール | ~1,300 | 汎用エージェント、トークンに制約のあるコンテキスト |
static | 330 個すべてのツール | ~35–55K | 特定の API に特化して作業するエージェント |
code | apideck_search + apideck_run | ~600 | JS 経由でエンドポイントをプログラムから呼び出すエージェント |
Dynamic モード
エージェントはツールを段階的に検出します。330 個すべてのスキーマを最初に読み込む場合と比べて、トークンを約 85% 削減できます。
list_tools({})
→ { total: 330, domains: [{ name: "accounting", count: 143 }, ...],
hint: "Call list_tools(domain=X) or list_tools(search_terms=[...])" }
list_tools({"search_terms": ["invoices"]})
→ accounting-invoices-all, accounting-invoices-add, accounting-invoices-one, ...
describe_tool_input({"name": "accounting-invoices-all"})
→ Full JSON Schema with all parameters
execute_tool({"name": "accounting-invoices-all", "input": {"limit": 10}})
→ Invoice data from the connected accounting system
describe_tool_input が返す契約に従い、操作フィールドを input に直接指定してください。Dynamic モードでの実行では、ディスパッチ前に引数が検証されます。ラッパーの形式が不正な場合やスキーマに違反している場合は、下流への呼び出しを行わず、フィールドパスまたは問題のパスとともに isError: true および code: "invalid_tool_input" が返されます。書き込みツールでは、トップレベルに未知のフィールドがある場合も拒否されるため、宣言されていない内容が API に渡ることはありません。検証エラーでは、送信された値は返されません。呼び出しごとの consumer_id および service_id による上書きは引き続きサポートされますが、ID ロックのルールは引き続き適用されます。リクエストスキーマでは読み取り専用のレスポンスフィールドは省略されますが、書き込み可能なリンク ID と必須のパス ID は保持されます。これによって冪等性が追加されるわけではなく、書き込みの再試行が安全になるわけでもありません。
Dynamic モードはスコープフィルターと組み合わせることもできます。
{
"mcpServers": {
"apideck": {
"command": "node",
"args": ["dist/bin/mcp.js", "--mode", "dynamic", "--scope", "read"],
"env": { "APIDECK_API_KEY": "...", "APIDECK_CONSUMER_ID": "...", "APIDECK_APP_ID": "..." }
}
}
}
Code モード
Code モードでは、330 個以上のツールの代わりに 2 つのツールを公開します。ツール呼び出しではなく、メソッドとしてエンドポイントを呼び出したいエージェント向けに設計されています。
apideck_search— 部分文字列でエンドポイントを検索し、camelCase のメソッド名を返しますapideck_run— ライブのエンドポイントディスパッチャーにバインドされたapideck.<methodName>を使って JS スクリプトを実行し、node:vmでサンドボックス化します
apideck_search("invoices")
→ {
count: 4,
endpoints: [
{ name: "accounting-invoices-list", method: "accountingInvoicesList" },
{ name: "accounting-invoices-create", method: "accountingInvoicesCreate" },
{ name: "accounting-invoices-get", method: "accountingInvoicesGet" },
{ name: "accounting-invoices-delete", method: "accountingInvoicesDelete" }
]
}
apideck_run({
script: "return await apideck.accountingInvoicesList({ request: { limit: 5 } })"
})
→ Invoice data from the connected accounting system
サンドボックスでは process、require、fs、child_process、その他の Node グローバルが除去され、スクリプトからアクセスできるのは apideck オブジェクトのみです。
スコープ
HTTP メソッドの種類でツールを絞り込みます。
| スコープ | HTTP メソッド | フラグ |
|---|---|---|
read | GET、HEAD | --scope read |
write | POST、PUT、PATCH | --scope write |
destructive | DELETE | --scope destructive |
フラグを繰り返すと、スコープを組み合わせられます(--scope read --scope write)。ホステッドエンドポイントでは、カンマ区切りのクエリパラメーターを使用します:?scopes=read,write。無効な値や空の値は拒否されます(CLI の解析エラー/HTTP 400)。スコープは code を含むすべてのモードに適用されます。
あらゆるエージェントフレームワークから接続
リモート(ホステッド — ローカルへのインストール不要)
# OpenAI Agents SDK
from agents import Agent
from agents.mcp import MCPServerHTTP
agent = Agent(
name="Apideck Agent",
mcp_servers=[MCPServerHTTP(
url="https://mcp.apideck.dev/mcp",
headers={
"x-apideck-api-key": "...",
"x-apideck-consumer-id": "...",
"x-apideck-app-id": "..."
}
)]
)
# Pydantic AI
from pydantic_ai import Agent
from pydantic_ai.mcp import MCPServerHTTP
agent = Agent("anthropic:claude-sonnet-4-5", mcp_servers=[
MCPServerHTTP(
url="https://mcp.apideck.dev/mcp",
headers={
"x-apideck-api-key": "...",
"x-apideck-consumer-id": "...",
"x-apideck-app-id": "..."
}
)
])
# LangChain / LangGraph
from langchain_mcp_adapters.client import MultiServerMCPClient
client = MultiServerMCPClient({
"apideck": {
"url": "https://mcp.apideck.dev/mcp",
"transport": "streamable_http",
"headers": {
"x-apideck-api-key": "...",
"x-apideck-consumer-id": "...",
"x-apideck-app-id": "..."
}
}
})
tools = await client.get_tools()
ローカル stdio(開発用)
pnpm install
pnpm build
# Dynamic mode (default)
APIDECK_API_KEY=... APIDECK_CONSUMER_ID=... APIDECK_APP_ID=... node dist/bin/mcp.js start
# Static mode (all 330 tools)
APIDECK_API_KEY=... node dist/bin/mcp.js start --mode static
# Code mode
APIDECK_API_KEY=... node dist/bin/mcp.js start --mode code
# Read-only
APIDECK_API_KEY=... node dist/bin/mcp.js start --scope read
# OpenAI Agents SDK (local stdio)
from agents import Agent
from agents.mcp import MCPServerStdio
mcp = MCPServerStdio(name="apideck", params={
"command": "node",
"args": ["dist/bin/mcp.js", "start", "--mode", "dynamic"],
"env": {
"APIDECK_API_KEY": "...",
"APIDECK_CONSUMER_ID": "...",
"APIDECK_APP_ID": "..."
}
})
agent = Agent(name="Apideck Agent", mcp_servers=[mcp])
信頼性
ランタイムは失敗したリクエストを自動的に再試行するため、一時的なエラーがエージェントに通知されることはありません。
- 再試行されるステータスコード:408、500、502、503、504
- 再試行されるネットワークエラー:
ECONNRESET、ECONNREFUSED、ETIMEDOUTなど - 方式:指数バックオフ。最大 4 回まで試行し、間隔は最大 30 秒
- 冪等性:再試行は GET、HEAD、PUT、DELETE、OPTIONS、TRACE でのみ実行されます。POST/PATCH は自動的に再試行されません
バイナリーコンテンツ
画像や音声を返す File Storage エンドポイントは、JSON 内の base64 文字列ではなく、ネイティブの MCP コンテンツブロックとして送信します。
{ "type": "image", "data": "<base64>", "mimeType": "image/png" }
{ "type": "audio", "data": "<base64>", "mimeType": "audio/mpeg" }
マルチモーダル MCP コンテンツに対応したエージェント(Claude、GPT-4o)は、生のバイト列を受け取るため、追加のデコード処理は不要です。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。