Chainstack
Deploy and manage blockchain nodes across 70+ protocols, search docs, request testnet funds.
我該用這個嗎
品質與安全性
發現項目(6)
- HIGH
- MEDIUM在 contact_chainstack 中
- MEDIUM在 request_testnet_funds 中
- LOW在 update_node 中
- LOW在 contact_chainstack 中
- LOW在 get_chainstack_pricing 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"chainstack": {
"url": "https://mcp.chainstack.com/mcp"
}
}
}遠端端點
https://mcp.chainstack.com/mcpstreamable-http它能做什麼
工具清單
工具(18)
🟢get_organization
Get organization name and ID.
輸入結構描述
{
"type": "object",
"properties": {},
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
]
}🟢get_deployment_options
List blockchain/cloud/network combinations for node deployment. Call before create_node to get valid blockchain and cloud IDs.
輸入結構描述
{
"type": "object",
"properties": {},
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"items": {
"properties": {
"blockchain": {
"type": "string"
},
"cloud": {
"type": "string"
},
"protocol": {
"type": "string"
},
"network": {
"type": "string"
},
"node_tier": {
"type": "string"
},
"region": {
"type": "string"
},
"features": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"blockchain",
"cloud",
"protocol",
"network",
"node_tier",
"region",
"features"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"result"
],
"x-fastmcp-wrap-result": true
}🟢list_projects
List all projects. Projects are containers for nodes.
輸入結構描述
{
"type": "object",
"properties": {},
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"items": {
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"networks": {
"type": "integer"
},
"created_at": {
"type": "string"
},
"creator": {
"additionalProperties": true,
"type": "object"
}
},
"required": [
"id",
"name"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"result"
],
"x-fastmcp-wrap-result": true
}🟡create_project(name, description)
Create a new project. Args: name: Project name. description: Optional description.
輸入結構描述
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"default": "",
"type": "string"
}
},
"required": [
"name"
],
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"networks": {
"type": "integer"
},
"created_at": {
"type": "string"
},
"creator": {
"additionalProperties": true,
"type": "object"
}
},
"required": [
"id",
"name"
]
}🟢list_nodes(project_id)
List nodes with status and connection endpoints. Args: project_id: Optional project ID to filter by (e.g., PR-123-456-789). If omitted, returns all nodes in the organization.
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"default": "",
"type": "string"
}
},
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"items": {
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"protocol": {
"type": "string"
},
"network": {
"type": "string"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"node_tier": {
"type": "string"
},
"project": {
"type": "string"
},
"region": {
"type": "string"
},
"https_endpoint": {
"type": "string"
},
"wss_endpoint": {
"type": "string"
},
"beacon_endpoint": {
"type": "string"
},
"cloud": {
"type": "string"
},
"blockchain": {
"type": "string"
},
"api_namespaces": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"id",
"name",
"protocol",
"network",
"status",
"node_tier",
"project",
"region"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"result"
],
"x-fastmcp-wrap-result": true
}🟢get_node(node_id)
Get a node's full details including endpoints and cloud info. Args: node_id: Node ID (e.g., ND-123-456-789).
輸入結構描述
{
"type": "object",
"properties": {
"node_id": {
"type": "string"
}
},
"required": [
"node_id"
],
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"protocol": {
"type": "string"
},
"network": {
"type": "string"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"node_tier": {
"type": "string"
},
"project": {
"type": "string"
},
"region": {
"type": "string"
},
"https_endpoint": {
"type": "string"
},
"wss_endpoint": {
"type": "string"
},
"beacon_endpoint": {
"type": "string"
},
"cloud": {
"type": "string"
},
"blockchain": {
"type": "string"
},
"api_namespaces": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"id",
"name",
"protocol",
"network",
"status",
"node_tier",
"project",
"region"
]
}🟡create_node(name, project, blockchain, cloud)
Deploy a new blockchain node. Call get_deployment_options first for valid IDs. Trader nodes are region-bound (e.g., London, Ashburn, Singapore). Always confirm the region with the user before deploying — region cannot be changed after deployment. Args: name: Node name. project: Project ID from list_projects (e.g., PR-123-456-789). blockchain: Blockchain ID from get_deployment_options (e.g., BC-000-000-008). cloud: Cloud ID from get_deployment_options (e.g., CC-0016 for Global, CC-0020 for London).
輸入結構描述
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"project": {
"type": "string"
},
"blockchain": {
"type": "string"
},
"cloud": {
"type": "string"
}
},
"required": [
"name",
"project",
"blockchain",
"cloud"
],
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"protocol": {
"type": "string"
},
"network": {
"type": "string"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"node_tier": {
"type": "string"
},
"project": {
"type": "string"
},
"region": {
"type": "string"
},
"https_endpoint": {
"type": "string"
},
"wss_endpoint": {
"type": "string"
},
"beacon_endpoint": {
"type": "string"
},
"cloud": {
"type": "string"
},
"blockchain": {
"type": "string"
},
"api_namespaces": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"id",
"name",
"protocol",
"network",
"status",
"node_tier",
"project",
"region"
]
}🟢get_project(project_id)
Get project details. Args: project_id: Project ID (e.g., PR-123-456-789).
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"type": "string"
}
},
"required": [
"project_id"
],
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"networks": {
"type": "integer"
},
"created_at": {
"type": "string"
},
"creator": {
"additionalProperties": true,
"type": "object"
}
},
"required": [
"id",
"name"
]
}🔴update_project(project_id, name, description)
Update a project's name or description. Args: project_id: Project ID (e.g., PR-123-456-789). name: New name. description: New description.
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null
}
},
"required": [
"project_id"
],
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"networks": {
"type": "integer"
},
"created_at": {
"type": "string"
},
"creator": {
"additionalProperties": true,
"type": "object"
}
},
"required": [
"id",
"name"
]
}🔴delete_project(project_id)
Delete a project (irreversible). Args: project_id: Project ID (e.g., PR-123-456-789).
輸入結構描述
{
"type": "object",
"properties": {
"project_id": {
"type": "string"
}
},
"required": [
"project_id"
],
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"x-fastmcp-wrap-result": true
}🔴update_node(node_id, name)
Rename a node. Args: node_id: Node ID (e.g., ND-123-456-789). name: New name.
輸入結構描述
{
"type": "object",
"properties": {
"node_id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"node_id",
"name"
],
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"protocol": {
"type": "string"
},
"network": {
"type": "string"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"node_tier": {
"type": "string"
},
"project": {
"type": "string"
},
"region": {
"type": "string"
},
"https_endpoint": {
"type": "string"
},
"wss_endpoint": {
"type": "string"
},
"beacon_endpoint": {
"type": "string"
},
"cloud": {
"type": "string"
},
"blockchain": {
"type": "string"
},
"api_namespaces": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"id",
"name",
"protocol",
"network",
"status",
"node_tier",
"project",
"region"
]
}🔴delete_node(node_id)
Delete a node (irreversible). Args: node_id: Node ID (e.g., ND-123-456-789).
輸入結構描述
{
"type": "object",
"properties": {
"node_id": {
"type": "string"
}
},
"required": [
"node_id"
],
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"x-fastmcp-wrap-result": true
}🟢search_docs(query)
Search Chainstack docs — blockchain RPC methods, node infrastructure, Web3 APIs, deployment guides, and code examples. Args: query: Search query (e.g., "deploy ethereum node", "eth_call").
輸入結構描述
{
"type": "object",
"properties": {
"query": {
"type": "string"
}
},
"required": [
"query"
],
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"items": {
"properties": {
"title": {
"type": "string"
},
"link": {
"type": "string"
},
"snippet": {
"type": "string"
},
"page": {
"type": "string"
}
},
"required": [
"title",
"link",
"snippet"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"result"
],
"x-fastmcp-wrap-result": true
}🟢get_doc_page(page)
Get the full content of a Chainstack documentation page. Use after search_docs to fetch the complete page when a snippet isn't enough. Args: page: Page path from search results — pass the `page` field from a search_docs result (e.g., "docs/ethereum-trader-nodes"). The leading slash, the `.mdx` extension, and the docs.chainstack.com URL prefix are all optional and stripped if present.
輸入結構描述
{
"type": "object",
"properties": {
"page": {
"type": "string"
}
},
"required": [
"page"
],
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
],
"x-fastmcp-wrap-result": true
}🟢get_platform_status(network)
Check platform status, active incidents, and maintenances. Args: network: Optional filter (e.g., "ethereum"). Without it, returns overall status and incidents only.
輸入結構描述
{
"type": "object",
"properties": {
"network": {
"default": "",
"type": "string"
}
},
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"incidents": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
"maintenances": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
"components": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
}
},
"required": [
"status",
"incidents",
"maintenances"
]
}🔴contact_chainstack(message, email, name, category)
Submit a message to Chainstack's sales and support team. Use when the user wants to ask about pricing, get a custom quote, request a plan upgrade, request node customizations (Enterprise), report a problem, or reach Chainstack for any reason. Posts to the same contact form as chainstack.com/contact/. ## Before calling this tool CRITICAL — follow these steps EVERY time: 1. Draft the message based on your conversation context. 2. Show the user the EXACT message, email, and name you will send. 3. If the user has a Chainstack API key configured, tell them: "I'll also include your Chainstack account info (org name and ID) so the team can pull up your account immediately — this means significantly faster handling and a more tailored response." 4. Ask: "Shall I send this to Chainstack? Please confirm there's no sensitive information you'd like removed." 5. Only call this tool after the user explicitly confirms. NEVER include in the message: - API keys, tokens, passwords, private keys, wallet seeds, mnemonics - RPC endpoint URLs (Chainstack or any other provider) - Wallet addresses, transaction hashes, or on-chain account details the user hasn't approved sharing - Any information the user hasn't explicitly approved sharing If the user shared sensitive data during the conversation, do NOT include it unless they specifically approve it in the review step. ## Writing an effective message A great message gets the user a faster, more tailored response. Include what you already know from the conversation: - What they're building and at what scale - Current plan and usage (e.g., "Pro plan, ~80M RU/month on Base") - What they need (upgrade, custom pricing, migration help, etc.) - What they've tried or what's not working - Specific numbers when available Bad: "I have a question about pricing." Good: "Pro plan user running 200M RU/month across Base and Ethereum, evaluating Business plan for archive access and higher RPS. Looking for annual pricing or a trial." The difference between a generic reply and a tailored proposal is the context you include. Not for incidents or urgent outages — point users to https://support.chainstack.com/hc/en-us/requests/new to file a support ticket, and https://status.chainstack.com for live status. For feature requests, do NOT use this tool — point users to https://ideas.chainstack.com (product) or https://github.com/chainstacklabs/mcp-server/issues/new (MCP server). Works with or without a Chainstack API key. With a key, the submission includes the user's Chainstack org info for faster account identification and handling. Args: message: The full message to send. Compose from conversation context — what the user is building, their plan and usage, what they need — so the Chainstack team can respond with a tailored answer instead of a generic one. category: Routing hint. One of: - sales — pricing, quotes, plan upgrades, custom terms. - support — errors, bugs, how-to, "something isn't working". - general — everything else. Case-insensitive. Unknown values fall back to "general". Default: "general". email: User's contact email. Required. Ask the user if you don't already have it. name: User's name (full name is fine, will be split on first space). Required. Ask the user if you don't have it on hand.
輸入結構描述
{
"type": "object",
"properties": {
"message": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
},
"category": {
"default": "general",
"type": "string"
}
},
"required": [
"message",
"email",
"name"
],
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"submitted": {
"type": "boolean"
},
"lead_source": {
"type": "string"
},
"estimated_response_time": {
"type": "string"
},
"alternative_channels": {
"items": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"type": "array"
}
},
"required": [
"submitted",
"lead_source",
"estimated_response_time",
"alternative_channels"
]
}🔴request_testnet_funds(network, address)
Top up a testnet address from Chainstack's faucet. The faucet does not send a fixed amount — it tops the address up to the per-network maximum (e.g. 0.5 ETH for sepolia). If the address already sits above the cap, the call fails with an insufficient-balance error. Describe the behavior to the user as "top up" not "give", and surface the returned `amountSent` so they see the actual delta. Supported networks and their native assets: - sepolia, hoodi — Ethereum testnets (ETH) - base — Base Sepolia (ETH) - amoy — Polygon Amoy (POL) - bnb-testnet — BNB Smart Chain testnet (BNB) - zksync-testnet — zkSync Sepolia (ETH) - robinhood — Robinhood Chain testnet (ETH) - hyperevm — HyperEVM testnet (HYPE) - plasma — Plasma testnet (XPL) - monad — Monad testnet (MON) - ton — TON testnet (TON) - solana — Solana devnet (SOL) Per-address cooldown applies after each successful drip. On cooldown the faucet returns a `nextFaucetAvailable` timestamp (ISO 8601) that this tool surfaces in the error message. Requires a Chainstack API key. The key is also the rate-limiting identity — the faucet tracks usage per organization. Get a key at https://console.chainstack.com/user/settings/api-keys and add it as `Authorization: Bearer <key>` in the MCP client config. Never ask the user to paste their API key in chat. Args: network: Canonical testnet id (the schema `enum` advertises the set). Case-insensitive; common aliases are normalized to the canonical id. address: Destination address. EVM hex address for EVM networks, a TON address for `ton`, or a base58 Solana public key for `solana`. Validated server-side — format errors surface as 400. Returns: On success: `{network, amountSent, transaction}`. `amountSent` is a string in the network's native unit (not wei/lamports).
輸入結構描述
{
"type": "object",
"properties": {
"network": {
"description": "Testnet to fund. Must be one of the canonical ids in `enum`. Common aliases (ethereum-sepolia, base-sepolia, solana-devnet, ...) are accepted and normalized to the canonical id.",
"enum": [
"sepolia",
"hoodi",
"base",
"amoy",
"bnb-testnet",
"zksync-testnet",
"robinhood",
"hyperevm",
"plasma",
"monad",
"ton",
"solana"
],
"examples": [
"sepolia",
"base",
"solana"
],
"type": "string"
},
"address": {
"type": "string"
}
},
"required": [
"network",
"address"
],
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"network": {
"type": "string"
},
"amountSent": {
"type": "string"
},
"transaction": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "string"
}
]
}
},
"required": [
"network"
]
}🟢get_chainstack_pricing
Fetch Chainstack's public pricing and return a normalized snapshot. Use this to answer pricing questions before quoting the user: plan fit, overage math, per-chain dedicated-node costs, and add-on pricing (Unlimited Node flat-fee tiers, Yellowstone gRPC streams, Warp transactions, dedicated-node base rates). This tool returns the menu, not the bill — the calling agent does the arithmetic. All prices are list prices in USD; disclaimers are surfaced in the `disclaimers` field. Design: we pass pricing.md through as raw markdown. Marketing owns that file and its structure changes freely; parsing it server-side would couple us to heading text and table column names we don't control. The LLM reads markdown natively, so handing the raw text to the agent keeps us correct regardless of how the page is restructured. pricing_current.json is parsed into `dedicated_catalog` because it has a stable engineering-owned schema, and the catalog benefits from filtering (to user-orderable SKUs only), unit conversion (cents → USD, milli-cores → cores), and region humanization (via `region_legend`). Per-method RU billing rules are NOT in these sources. Plan-level rates (Full Node = 1 RU, Archive Node = 2 RU) are in the markdown, but some EVM archive-state methods (eth_getBalance, eth_call, eth_getProof, eth_getStorageAt, eth_getCode, eth_getTransactionCount, eth_callMany, eth_createAccessList) and all debug_* / trace_* methods are billed at 2 RU on a full node when called against old blocks. For method-level detail, call `search_docs` with "request units" or `get_doc_page("docs/request-units")`. No API key required — sources are fully public. Each call fetches both sources fresh (no caching), so a stale result isn't possible. Returns: A dict with fields: - `pricing_markdown`: raw markdown from chainstack.com/pricing.md. Read this for plan tiers, feature matrix, add-on pricing, support levels, PAYG details, and provider comparisons. - `dedicated_catalog`: user-orderable per-chain dedicated-node SKUs with flavor, regions (as infra slugs like "sgp1"), hourly and monthly prices in USD. Already filtered to the ~87 orderable SKUs and unit-converted. - `region_legend`: slug → human city name map covering every region slug that appears in `dedicated_catalog`. Use `region_legend[slug]` to translate for display; `regions` keeps the slug as the canonical identifier. - `disclaimers`: list-price caveats (Enterprise "from" pricing, etc.). - `sources`: URL + ok/error per source; the JSON source carries its own `updated_at`. - `warnings`: populated when a source is unreachable or the JSON parser failed. The tool still returns best-effort results. - `fetched_at`: UTC timestamp of this call.
輸入結構描述
{
"type": "object",
"properties": {},
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"fetched_at": {
"type": "string"
},
"sources": {
"additionalProperties": true,
"type": "object"
},
"warnings": {
"items": {
"type": "string"
},
"type": "array"
},
"pricing_markdown": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"dedicated_catalog": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
]
},
"region_legend": {
"anyOf": [
{
"additionalProperties": {
"type": "string"
},
"type": "object"
},
{
"type": "null"
}
]
},
"disclaimers": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"fetched_at",
"sources",
"warnings",
"pricing_markdown",
"dedicated_catalog",
"region_legend",
"disclaimers"
]
}社群
證據