Model Context Protocol (MCP) server for interacting with Flow blockchain
Flow MCP server has 9 tools with complete input schemas and descriptions, but quality is inconsistent. Tool names follow verb_noun convention (get_*, send_*, resolve_*, execute_*, find_). Descriptions are present but generic (avg ~80 chars, below 194-char baseline). Parameters lack depth: no enums for network selection, no format constraints, no validation guidance. Critical security issue: send_transaction exposes signerPrivateKey as a parameter, this violates secret-injection pattern and will leak credentials into logs. Output schemas are undocumented. Error handling is minimal. Most tools are read-only (8/9), reducing risk, but composition and chaining support is weak.
Execute a Cadence script on the Flow blockchain
Find Cadence Owned Accounts (COA) associated with Flow-EVM addresses
Get detailed information about a Flow account
Get NFT collections owned by a Flow account
Get the FLOW token balance for a Flow address
Get the balance of a specific token for a Flow address
Get all token balances from storage for a Flow address
send_transaction exposes signerPrivateKey as a required parameter. Private keys must never appear in tool parameters, they will be logged, traced, and potentially echoed to users. Use server-side secret injection via environment variables or a secure vault.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields without knowing what each tool returns. Document return types for all 9 tools.
network parameter lacks enum constraint. Accepts 'mainnet' or 'testnet' but no validation. Add enum: ['mainnet', 'testnet'] to prevent hallucinated network names.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Resolve a Flow domain (.find or .fn) to a Flow address
Send a signed transaction to the Flow blockchain
Descriptions are generic and lack context. 'Get the FLOW token balance for a Flow address' (60 chars) does not explain when to use this vs get_token_balance or get_token_balances_storage. Add dependency hints and use cases.
No error handling guidance. Tools return raw errors without recovery hints. If a domain resolution fails, the LLM has no guidance on what to try next. Add actionable error messages.