mcpField
I
InstaNode-dev

InstaNode-dev

ローカル
instanode.devクラウド・インフラ017 週間前に更新

InstaNode-dev について

InstaNode-devは、AIコーディングエージェント向けにデータベース、メッセージング、ストレージ、Webhook、コンテナを用意するMCPサーバーです。接続情報を返し、複数サービスのスタックにも対応します。匿名リソースは期限切れ前に請求できます。

主な機能

  1. 01Postgres、Redis、MongoDBの作成
  2. 02NATSキューとS3ストレージの作成
  3. 03受信Webhookの用意
  4. 04コンテナとサービススタックのデプロイ
  5. 05リソースの管理と請求

活用シーン

  1. 01プロトタイプ用データベースの作成
  2. 02リソースを結合したアプリのデプロイ
  3. 03受信Webhook処理のテスト

MCP 対応

リソース作成、デプロイ、スタック状態確認、アカウント管理のツールをMCPクライアントに公開します。匿名でリソースを作成でき、認証トークンにより追加の管理・デプロイ操作が利用できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"instanode-dev": {
"command": "npx",
"args": [
"-y",
"@instanode/mcp"
],
"env": {
"INSTANODE_TOKEN": "<INSTANODE_TOKEN>",
"INSTANODE_API_BASE": "<INSTANODE_API_BASE>"
}
}
}
}
起動コマンドnpx -y @instanode/mcp
設定が必要な環境変数
INSTANODE_TOKENシークレットOptional bearer JWT for paid-tier callers. Mint at https://instanode.dev/dashboard → 'API token for CLI / agent'. Lifts the free-tier 5-per-subnet-per-day provisioning cap and auto-links new resources to your account. Leave unset to use the free tier anonymously.
INSTANODE_API_BASEOverride the API base URL. Defaults to https://api.instanode.dev. Useful for self-hosted deployments.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@instanode/mcp0.7.2

ツール

6

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
namestringはいこのデータベースの人が読めるラベル(1~64 文字)。例:'prospector-agent' または 'test-pgpid-123'。

詳細

instanode-mcp

instanode.dev 向けの MCP サーバーです。AI コーディングエージェント (Claude Code、Cursor、Windsurf、Continue など)が、HTTPS 経由で一時的な開発者向けインフラ一式を プロビジョニングできます。Docker は不要で、無料の匿名利用枠ではサインアップも必要ありません。

リソースの種類ごとに 1 回のツール呼び出しで、すぐに使える接続文字列が返されます。

  • Postgres(create_postgres)→ pgvector がプリインストールされた postgres://...
  • Redis(create_cache)→ ACL でユーザーと名前空間が制限された redis://...
  • MongoDB(create_nosql)→ データベースにスコープを限定したロールを備えた mongodb://...
  • NATS JetStream(create_queue)→ サブジェクト名前空間が制限された nats://...
  • S3 互換ストレージ(create_storage)→ エンドポイント + キー + プレフィックス (DigitalOcean Spaces が基盤です)
  • Webhook レシーバー(create_webhook)→ 受信したすべてのリクエストを保存する公開 URL
  • コンテナデプロイ(create_deploy)→ base64 gzip tarball(Dockerfile + ソース)をアップロードすると、 約 30 秒で公開 URL が返されます。resource_bindings に上記リソースのトークンを渡すと、 それらのリソースをバインドできます。API がサーバー側でトークンを接続 URL に解決します。
  • マルチサービススタック(create_stack)→ instant.yaml マニフェストで 1~N 個のサービスを宣言し、 1 回の MCP 呼び出しでバンドルとしてデプロイします。匿名ユーザーには、カード登録不要で、 ライブ URL(*.deployment.instanode.dev)が付いた TTL 6 時間のスタックが提供されます。 サービス間参照(service://<name>)はデプロイ時にクラスター内で解決されます。 get_stack でステータスを確認できます。

匿名で作成したリソースはすべて 24 時間で自動的に期限切れになります。プロビジョニングの応答には note フィールドと upgrade フィールドが含まれます。MCP サーバーは両方をそのまま返すため、 リソースを永続的に利用するために必要な正確な CTA とクレーム URL をエージェントがユーザーに提示できます。 返された upgrade_jwt に対して claim_resource を実行すると、ダッシュボードのクレーム URL を取得できます。

インストール

Claude Code
claude mcp add instanode -- npx -y instanode-mcp@latest

認証するには(有料プランの制限とアカウント管理ツールを利用可能にします):

claude mcp add instanode \
  --env INSTANODE_TOKEN=<paste from https://instanode.dev/dashboard> \
  -- npx -y instanode-mcp@latest
Cursor

.cursor/mcp.json(プロジェクト)または ~/.cursor/mcp.json(グローバル)に追加します:

{
  "mcpServers": {
    "instanode": {
      "command": "npx",
      "args": ["-y", "instanode-mcp@latest"],
      "env": {
        "INSTANODE_TOKEN": "<optional — paste from dashboard for paid tier>"
      }
    }
  }
}
Windsurf

~/.codeium/windsurf/mcp_config.json に追加します:

{
  "mcpServers": {
    "instanode": {
      "command": "npx",
      "args": ["-y", "instanode-mcp@latest"],
      "env": {
        "INSTANODE_TOKEN": "<optional>"
      }
    }
  }
}
Continue.dev

~/.continue/config.yaml に追加します:

mcpServers:
  - name: instanode
    command: npx
    args: ["-y", "instanode-mcp@latest"]
    env:
      INSTANODE_TOKEN: "<optional>"

この MCP をいつ使うべきかをエージェントに正確に伝える、すぐに使える CLAUDE.md / .cursorrules については、 https://instanode.dev/agent.html をご覧ください。

環境変数

変数必須デフォルト用途
INSTANODE_TOKENいいえ—https://instanode.dev/dashboard で発行される Bearer JWT です。list_resources、claim_token、delete_resource、get_api_token、およびすべてのデプロイツール(create_deploy、list_deployments、get_deployment、redeploy、delete_deployment)に必要です。すべての create_* で有料プランの制限が解除されます。
INSTANODE_API_URLいいえhttps://api.instanode.devAPI のベース URL を上書きします。k3s クラスターに対するローカル開発の場合にのみ設定してください。
INSTANODE_DASHBOARD_URLいいえhttps://instanode.devclaim_resource がクレーム URL の生成に使用するダッシュボードのホストを上書きします。ステージングの場合にのみ設定してください。

ツール

ツール説明
create_postgresPOST /db/new — Postgres データベース(pgvector を含む)をプロビジョニングします。connection_url と note/upgrade の申請 URL を返します。name は必須です。
create_vectorPOST /vector/new — pgvector 対応の Postgres データベース(埋め込みストア)をプロビジョニングします。connection_url と extension/dimensions、note/upgrade を返します。name は必須です。省略可能な dimensions はドキュメント用のヒントです。
create_cachePOST /cache/new — Redis キャッシュ(ACL でスコープ設定されたユーザーと名前空間)をプロビジョニングします。connection_url と note/upgrade を返します。name は必須です。
create_nosqlPOST /nosql/new — MongoDB データベース(リソースごとのユーザーとデータベース単位のロール)をプロビジョニングします。connection_url と note/upgrade を返します。name は必須です。
create_queuePOST /queue/new — NATS JetStream キュー(スコープ設定されたサブジェクト名前空間)をプロビジョニングします。connection_url と note/upgrade を返します。name は必須です。
create_storagePOST /storage/new — S3 互換バケットのプレフィックス(DigitalOcean Spaces)をプロビジョニングします。エンドポイント、アクセスキー、プレフィックス、および note/upgrade を返します。name は必須です。
create_webhookPOST /webhook/new — インバウンド Webhook 受信 URL をプロビジョニングします。receive_url と note/upgrade を返します。name は必須です。
create_deployPOST /deploy/new — base64 gzip tarball(Dockerfile を含む)をアップロードして、コンテナをデプロイします。deploy_id、status、url、build_logs_url を返します。name は必須です。redeploy: true(同じ name を指定)を渡すと、既存のデプロイをその場で更新します(同じ app_id と URL を維持します)。INSTANODE_TOKEN が必要です。
create_stackPOST /stacks/new — 複数サービスのバンドルです。instant.yaml マニフェストと、サービスごとに 1 つの base64 gzip tarball をアップロードします。stack_id、サービスごとの URL、および匿名ティアでの 6 時間 TTL の申請ブロックを返します。匿名利用に適しています(主な強みです)。name、manifest、service_tarballs は必須です。
get_stackGET /stacks/{stack_id} — スタックのサービスごとのステータスと URL をポーリングします。匿名利用に適しています。stack_id は必須です。
list_deploymentsGET /api/v1/deployments — 呼び出し元のチームにあるすべてのデプロイを一覧表示します。INSTANODE_TOKEN が必要です。
get_deploymentGET /api/v1/deployments/:id — 1 つのデプロイを取得します(status="running" になるまでポーリングします)。INSTANODE_TOKEN が必要です。
get_deployment_eventsGET /api/v1/deployments/:id/events — デプロイの失敗タイムラインの分析結果(kind/reason/exit_code/event/last_lines/hint/created_at、新しい順)を読み取り、エージェントが壊れた Dockerfile を自力で修正できるようにします。limit は省略可能です。INSTANODE_TOKEN が必要です。
redeployPOST /deploy/:id/redeploy — ID を指定して、既存のデプロイに更新済みコードをプッシュします。同じ URL を維持し、新しいビルドを行います。tarball_base64(create_deploy と同じ形式)が必要です。API は元の tarball を再利用しません。より一般的な「名前で更新」する方法として、create_deploy({ name, redeploy: true, tarball_base64 }) を推奨します。INSTANODE_TOKEN が必要です。
delete_deploymentDELETE /deploy/:id — 実行中のデプロイを削除します。元に戻せません。INSTANODE_TOKEN が必要です。
claim_resourceヘルパー — 任意の create_* レスポンスに含まれる upgrade_jwt を、ユーザーがクリックするダッシュボード申請 URL に変換します。API 呼び出しはありません。認証は不要です。
claim_tokenPOST /claim — プログラムによる申請です。upgrade_jwt と email を使って、匿名リソースを認証済みアカウントに紐付けます。認証は不要です。
list_resourcesGET /api/v1/resources — 呼び出し元のアカウントにあるリソースを一覧表示します。INSTANODE_TOKEN が必要です。
delete_resourceDELETE /api/v1/resources/{token} — 所有するリソースを完全に削除します。有料ティアのみ利用できます。INSTANODE_TOKEN が必要です。
get_api_tokenPOST /api/v1/auth/api-keys — 新しいベアラー Personal Access Token(PAT)を発行します。既存のユーザーセッション用 INSTANODE_TOKEN が必要です(PAT から別の PAT を発行することはできず、その場合 API は 403 を返します)。
get_capabilitiesGET /api/v1/capabilities — ティアごとの最新の機能マトリックス(ストレージ/接続/リソース数/デプロイの上限、料金、バックアップ、および RPO/RTO の保証)をアップグレード順に読み取り、エージェントが呼び出し時に 402 が発生する前にプロビジョニングを計画できるようにします。認証は省略可能(公開された情報確認用エンドポイント)。
set_vault_keyPUT /api/v1/vault/{env}/{key} — チームの Vault にシークレットを書き込みます(常に新しいバージョンを作成します)。デプロイの env_vars で vault://{env}/{key} として参照すると、デプロイ時に API が復号します。Vault は有料です(Hobby+ は 20 件、Pro/Team は無制限。Hobby/Pro では環境は production に制限されます)。INSTANODE_TOKEN が必要です。
rotate_vault_keyPOST /api/v1/vault/{env}/{key}/rotate — Vault シークレットの値をローテーションします(新しいバージョンを作成し、別の監査アクションとして記録されます)。適用するには、参照しているアプリを再デプロイしてください。INSTANODE_TOKEN が必要です。
update_deploy_envPATCH /deploy/{id}/env — 既存のデプロイに環境変数をマージします(受信した値が優先されます。値には vault://env/KEY の参照を指定できます)。シークレットを伏せ字にしたマージ後のマップを返します。適用するには再デプロイしてください。INSTANODE_TOKEN が必要です。
update_stack_envPATCH /stacks/{slug}/env — 既存のスタックに環境変数をマージします(行ロックされます。空文字列の値を指定するとキーが削除されます)。適用するにはスタックを再デプロイしてください。INSTANODE_TOKEN が必要です。
presign_storagePOST /storage/{token}/presign — ストレージプレフィックスにスコープ設定された、有効期間の短い(≤1h)事前署名付き S3 URL(GET/PUT/HEAD)を発行します。認証にはパス内のストレージトークンを使用するため、匿名ティアのストレージでも利用できます。DELETE は提供されません(URL が漏れてもプレフィックスを消去できないようにするためです)。
pause_resourcePOST /api/v1/resources/{id}/pause — リソースを削除せずに一時停止します(ストレージと接続 URL は維持され、新しい接続は拒否されます)。Pro ティア以上が必要です。INSTANODE_TOKEN が必要です。
resume_resourcePOST /api/v1/resources/{id}/resume — リソースの一時停止を解除します(同じ接続 URL が引き続き機能します)。Pro ティア以上が必要です。INSTANODE_TOKEN が必要です。
rotate_credentialsPOST /api/v1/resources/{id}/rotate-credentials — リソースのパスワードをローテーションします。新しい connection_url をプレーンテキストで返します(ホストと DB は変更されません)。漏洩した古い URL を無効にします。INSTANODE_TOKEN が必要です。
wake_deploymentPOST /deploy/{id}/wake — ゼロまでスケールダウンされたデプロイを明示的に起動します(レプリカ数を 1 にスケールし、サービス開始前にコールドスタートします)。プラットフォームのフラグで有効化されている必要があります。機能がオフの場合は 501 scale_to_zero_disabled を返します。INSTANODE_TOKEN が必要です。
コンテナのデプロイ(create_deploy)

デプロイは、プロジェクト(Dockerfile とソース)の base64 エンコードされた gzip 圧縮 tarball を含む、単一の multipart/form-data POST で行います。エンコードの処理は MCP ツールが担当するため、エージェントが行うのは tarball の作成だけです。

tarball の作成(任意の言語):

import base64, subprocess
tar = subprocess.check_output(["tar", "czf", "-", "-C", project_dir, "."])
tarball_base64 = base64.b64encode(tar).decode()
import { execFileSync } from "node:child_process";
const tar = execFileSync("tar", ["czf", "-", "-C", projectDir, "."]);
const tarball_base64 = tar.toString("base64");

上限は、デコード後で 50 MB です。.dockerignore を遵守し、docker build に必要なものだけを含めてください。name フィールドは必須です(1〜64 文字、英字/数字/スペース/ダッシュ)。これはダッシュボードに表示される、人が読めるラベルです。

プロビジョニング済みリソースのバインド:

まず create_postgres / create_cache などでリソースをプロビジョニングしてトークン(UUID)を取得し、そのトークンを resource_bindings として渡します。

{
  "tarball_base64": "...",
  "name": "my-app",
  "port": 8080,
  "resource_bindings": {
    "DATABASE_URL": "<token from create_postgres>",
    "REDIS_URL":    "<token from create_cache>"
  }
}

エージェントが渡すのはリソーストークンであり、接続 URL ではありません。API はデプロイ時にサーバー側で各トークンを接続 URL に解決します。MCP サーバーがトークンを事前に解決することはありません。事前に解決すると、すべてのバインドについて GET /credentials を経由してやり取りし、生のシークレットがツールのパラメーターに含まれることになり、エージェントホストによってログに記録される可能性があるためです。

ポーリング:

create_deploy はすぐに status="building" を返します。ステータスが "running" に変わるまで、数秒おきに get_deployment({ id: deploy_id }) をポーリングしてください(通常は約30秒)。その時点で、url フィールドに稼働中の URL が設定されます。

既存のデプロイを更新する(同じ URL で新しいビルド)

すでにデプロイしたアプリの v2 を、URL や app_id を変更せずに公開するには、同じ name と redeploy: true を指定して、もう一度 create_deploy を呼び出します。

{
  "tarball_base64": "...",
  "name": "my-app",
  "redeploy": true
}

api は (team_id, name) を使って既存のデプロイを見つけ、その場で更新します。app_id と *.deployment.instanode.dev の URL はそのまま維持され、新しいイメージの展開中はステータスが再び building に変わります。

redeploy: true を指定せず、以前に使用した名前で create_deploy を呼び出すと、新しい app_id と新しい URL が発行されます(従来の動作)。これが、同じアプリに対してエージェントが稼働中のデプロイと URL を2つ持ってしまう AGENT-UX の問題の原因となった落とし穴です。

単独の redeploy ツール(name ではなく id を指定)も引き続き使用でき、tarball_base64 も必要です。api が元の tarball を再利用することはありません。名前がわかっている場合は create_deploy({ name, redeploy: true }) を優先してください。デプロイ ID しかわからない場合は redeploy({ id, tarball_base64 }) を使用してください。

プライベートデプロイ

private: true を設定し、allowed_ips を渡すと、Ingress で特定の IP アドレスまたは CIDR ブロックからのアクセスに制限できます。CRM、社内ダッシュボード、ステージングアプリなど、ユーザーだけがアクセスできるようにすべきアプリのデプロイをエージェントから依頼された場合に便利です。

Pro ティア以上が必要です。 Hobby プランの呼び出し元には agent_action フィールドを含む HTTP 402 が返されます。MCP サーバーはアップグレード URL を提示するため、エージェントからユーザーにアップグレードを促せます。

プロンプトの例(Claude Code に貼り付けます):

「CRM をプライベートアプリとしてデプロイし、1.2.3.4 とオフィスのサブネット 10.0.0.0/8 からのみアクセスできるようにしてください」

その後、エージェントは次のように呼び出します。

{
  "tarball_base64": "...",
  "name": "my-crm",
  "private": true,
  "allowed_ips": ["1.2.3.4", "10.0.0.0/8"]
}

get_deployment と list_deployments は private と allowed_ips をエージェントに返すため、エージェントはユーザーにポリシーを確認できます。プライベートデプロイをパブリックにするには、フラグを付けずに再デプロイしてください。

匿名からアカウントへの紐付けの仕組み

すべての create_* ツールは3つのフィールドを返します。エージェントはこれらを重要な情報として扱ってください。

  • token — リソースの UUID(claim_token と delete_resource で使用します)。
  • note — アップグレード URL にも触れた、人が読める1文の CTA です。
  • upgrade — 完全な紐付け URL(https://instanode.dev/start?t=<jwt>)です。ユーザーがこの URL をクリックし、GitHub/Google またはマジックリンクでサインインすると、リソースがアカウントに紐付けられます。

独自の UI を作成して紐付けフローを提供したい呼び出し元には、upgrade_jwt も返されます。claim_resource ツールはこの JWT を受け付け、同じダッシュボード URL を返します。元の応答が会話のコンテキストから外れた後に、エージェントが紐付け URL を再提示したい場合に便利です。

エージェントとのやり取りの例

1. 「このプロジェクト用の Postgres が必要です」

あなた: Claude、このプロジェクト用の Postgres データベースが必要です。

Claude: 呼び出し create_postgres({ name: "my-side-project" })

postgres://usr_a1b2:[email protected]:5432/db_a1b2?sslmode=require のような connection_url と、 note: "Works for 24h free. Claim to keep — from $9/mo: https://instanode.dev/start?t=..." を返します。

続いて Claude: .env に DATABASE_URL=... を書き込み、.env を .gitignore に追加して、マイグレーションを実行します。さらに、24 時間を過ぎてもデータベースを保持する方法がわかるように、 ユーザーに請求 URL をそのまま表示します。

2. 「レート制限用の Redis キャッシュを起動してください」

あなた: API にレート制限をかけられるよう、Redis キャッシュを追加してください。

Claude: 呼び出し create_cache({ name: "api-ratelimit" })

redis://usr_b2c3:[email protected]:6379/0 のような connection_url を返します。

3. 「Stripe イベントを受け取る Webhook を設定してください」

あなた: Stripe の送信先に指定できる Webhook URL をください。

Claude: 呼び出し create_webhook({ name: "stripe-sandbox" })

すべてのリクエストを記録する receive_url を返します。curl $receive_url を実行すると、保存されたログを取得できます。

4. 「ユーザーのアップロード用のオブジェクトストレージ」

あなた: アップロードされたアバター用に S3 互換ストレージが必要です。

Claude: 呼び出し create_storage({ name: "user-avatars" })

エンドポイント、アクセスキー、シークレットキー、プレフィックスを返します。Claude は返された認証情報を使って AWS SDK を設定します。

5. 「昨夜作成したデータベースを永続化してください」

あなた: 昨日作成してもらったデータベースを、24 時間を過ぎても保持したいです。

Claude(INSTANODE_TOKEN なし): 呼び出し claim_resource({ upgrade_jwt: "<the upgrade_jwt from yesterday's response>" }) → ダッシュボードの請求 URL を表示します。クリックしてサインインすると、リソースがアカウントに紐付けられます。

Claude(INSTANODE_TOKEN あり): 呼び出し claim_token({ token: "a1b2c3d4-..." }) → リソースが認証済みアカウントに紐付けられます。 ブラウザーを介したやり取りは不要です。

認証

匿名利用枠は、設定なしで利用できます。有料枠、永続リソース、アカウント管理ツール(list_resources、 delete_resource、claim_token、get_api_token)を利用するには、次の手順に従ってください。

  1. GitHub で https://instanode.dev にサインアップします。
  2. ダッシュボードにアクセスし、ベアラートークンをコピーします。
  3. MCP サーバーの env ブロックで INSTANODE_TOKEN として設定します(上記の例を参照)。

get_api_token を呼び出すと、POST /api/v1/auth/api-keys を通じて新しい Personal Access Token が発行され、いつでもローテーションできます。PAT は有効期限ではなく、失効によって管理されます。注:PAT から別の PAT を発行することはできません。get_api_token には、ユーザーセッショントークン(ダッシュボードからサインインして取得)が必要です。既存の PAT を使用すると、API は 403 を返します。

開発

npm install
npm run build
# Integration test (optional — requires a running instanode.dev server.
# For local k8s, port-forward first: kubectl port-forward -n instant svc/instant-api 8080:8080):
INSTANODE_API_URL=http://localhost:8080 npm test

ライセンス

MIT — (c) instanode.dev

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。