@instanode/mcp
v0.7.3
Published
MCP server for instanode.dev — lets AI coding agents provision ephemeral Postgres databases and webhook receivers over HTTPS, with optional bearer-token auth for paid users.
Maintainers
Readme
@instanode/mcp
MCP server for instanode.dev. Lets AI coding agents (Claude Code, Cursor, Windsurf, Continue, etc.) provision ephemeral Postgres databases and webhook receivers over HTTPS — no Docker, no signup required for the free tier.
- One tool call → one
postgres://URL, usable immediately asDATABASE_URL. - pgvector is pre-installed on every database.
- Free tier: 10 MB / 2 conn / 24h TTL. Paid (optional): 500 MB / 5 conn /
permanent, unlocked by setting
INSTANODE_TOKEN.
Install
Claude Code
claude mcp add instanode -- npx -y @instanode/mcp@latestTo authenticate (unlock paid tier, list_resources, delete_resource):
claude mcp add instanode \
--env INSTANODE_TOKEN=<paste from https://instanode.dev/dashboard> \
-- npx -y @instanode/mcp@latestCursor
Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"instanode": {
"command": "npx",
"args": ["-y", "@instanode/mcp@latest"],
"env": {
"INSTANODE_TOKEN": "<optional — paste from dashboard for paid tier>"
}
}
}
}Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"instanode": {
"command": "npx",
"args": ["-y", "@instanode/mcp@latest"],
"env": {
"INSTANODE_TOKEN": "<optional>"
}
}
}
}Continue.dev
Add to your ~/.continue/config.yaml:
mcpServers:
- name: instanode
command: npx
args: ["-y", "@instanode/mcp@latest"]
env:
INSTANODE_TOKEN: "<optional>"For a drop-in CLAUDE.md / .cursorrules that tells the agent exactly when
to reach for this MCP, see https://instanode.dev/agent.html.
Environment
| Variable | Required | Default | Purpose |
|---------------------|----------|--------------------------------|-------------------------------------------------------------------------------------------------------------|
| INSTANODE_TOKEN | No | — | Bearer JWT minted at https://instanode.dev/dashboard. Required for list_resources, claim_token, delete_resource, get_api_token. Unlocks paid-tier limits on create_*. |
| INSTANODE_API_URL | No | https://api.instanode.dev | Override the API base URL. Only set this for local development. |
Tools
| Tool | Description |
|-------------------|---------------------------------------------------------------------------------------------------|
| create_postgres | Provision a Postgres database (pgvector included). Returns a postgres:// URL. name required. |
| create_webhook | Provision an inbound webhook receiver URL. name required. |
| list_resources | List resources on the caller's account. Requires INSTANODE_TOKEN. |
| claim_token | Attach an anonymous token to the authenticated account. Requires INSTANODE_TOKEN. |
| delete_resource | Hard-delete a resource you own. Paid tier only. Requires INSTANODE_TOKEN. |
| get_api_token | Mint a fresh 30-day bearer JWT (for rotation). Requires an existing INSTANODE_TOKEN. |
Example agent interactions
1. "I need a Postgres for this project"
You: Claude, I need a Postgres database for this project.
Claude: calls
create_postgres({ name: "my-side-project" })Returns a
connection_urllikepostgres://usr_a1b2:[email protected]:5432/db_a1b2?sslmode=require.Claude then: writes
DATABASE_URL=...to.env, adds.envto.gitignore, runs your migrations.
2. "Set up a webhook to catch Stripe events"
You: Give me a webhook URL I can point Stripe at.
Claude: calls
create_webhook({ name: "stripe-sandbox" })Returns a
receive_urlthat captures every request.curl $receive_urlpulls back the stored log.
3. "Make last night's database permanent"
You: I want to keep the database you made yesterday past 24h.
Claude: (with
INSTANODE_TOKENset) callsclaim_token({ token: "a1b2c3d4-..." })→ resource is now linked to your account withtier=paidand no expiry.
Authentication
The free tier works without any setup. To unlock permanent resources, paid
limits, and the list_resources / delete_resource tools:
- Sign up at https://instanode.dev with GitHub.
- Visit the dashboard and copy your bearer token.
- Set it as
INSTANODE_TOKENin the MCP server'senvblock (see examples above).
Rotate any time by calling get_api_token, which mints a fresh 30-day JWT.
Development
npm install
npm run build
# Integration test (optional — requires a running instanode.dev server):
INSTANODE_API_URL=http://localhost:30080 npm testLicense
MIT — (c) instanode.dev
