Skip to main content
Glama
kilkelly

Nano Currency MCP Server

by kilkelly

Nano Currency MCP Server

Nano Currency MCP Server gives MCP-compatible clients (including AI agents) the ability to send Nano currency and retrieve account & block information via the Nano node RPC.

AI agents are increasingly adopting the MCP standard and this server gives them the ability to send Nano at their owner's request or possibly autonomously in some setups πŸ€–

Nano Currency MCP Server also allows for the creation of x402-compatible headers, giving AI agents the ability to pay for APIs/resources using Nano.

❔ What is MCP?

The Model Context Protocol (MCP) is an open framework that defines a standardized approach for applications to deliver context to Large Language Models (LLMs).

Related MCP server: NANO MCP Server

❔ What is Nano Currency?

Nano is a digital currency designed to enable fast, scalable, and feeless transactions. It aims to address common issues in traditional cryptocurrencies, such as high fees and slow processing times, making it an efficient option for everyday peer-to-peer payments. Learn more at nano.org

❔ What is x402?

x402 is an internet-native payment protocol that revives the unused HTTP 402 Payment Required status code to enable instant, programmatic, and permissionless payments over the web. Learn more at x402.org. Nano-specific x402 schemes and implementation code can be found at the x402nano GitHub resource.

🚨 Before Proceeding 🚨

Caution: LLMs can hallucinate and not always perform as you want, so test this server with small amounts of Nano. Use either the RAW_MAX_SEND_AMOUNT or NANO_MAX_SEND_AMOUNT environment variables described later to restrict the maximum amount of Nano that can be sent at a time.

πŸ› οΈ Tools Provided by Nano Currency MCP Server

πŸ”§ raw_send - Send a specified amount of raw units from a predefined Nano account to a destination Nano account.

πŸ”§ nano_send - Send a specified amount of nano units from a predefined Nano account to a destination Nano account.

πŸ”§ nano_account_info - Retrieve detailed information about a specific Nano account, including balance (in both nano and raw units), representative, and frontier block.

πŸ”§ nano_my_account_info - Retrieve detailed information about my Nano account, including balance (in both nano and raw units), representative, and frontier block. This is the account that is used to send Nano from.

πŸ”§ block_info - Retrieve detailed information about a specific Nano block.

πŸ”§ x402_payment_signature_exact_scheme_create - Create the PAYMENT-SIGNATURE header for a Nano x402 transaction conforming to the exact scheme.

πŸ”Œ Installation

Make sure you have Node.js with NPM installed on your system.

git clone https://github.com/kilkelly/nano-currency-mcp-server.git
cd nano-currency-mcp-server
npm install

You will need an MCP client to connect to Nano Currency MCP Server. Each client will have its own way to connect to MCP servers. For your chosen client you will have to find out how environment variables for a MCP server are set. When you know how you will need to set the following environment variables to use the Nano Currency MCP Server.

βš™οΈ Environment Variables

NANO_RPC_URL (required) - URL which should be used to communicate with a Nano node RPC. This can be a local or remotely hosted endpoint.

NANO_WORK_GENERATION_URL - URL which should be used to communicate with an endpoint that supports the work_generate RPC command for work generation. If not specified, defaults to NANO_RPC_URL. Used by tools πŸ”§ nano_send πŸ”§ raw_send πŸ”§ x402_payment_signature_exact_scheme_create

NANO_PRIVATE_KEY - Nano private key which will be used to sign send transactions and to derive the Nano account from. Caution: 🚨NOT THE WALLET SEED🚨. Test with the private key of an account with a small Nano balance. Used by tools πŸ”§ nano_send πŸ”§ raw_send πŸ”§ nano_my_account_info πŸ”§ x402_payment_signature_exact_scheme_create

RAW_MAX_SEND_AMOUNT - Maximum amount (in raw units) which can be sent in a single transaction. For safety purposes the default maximum send amount is 10000000000000000000000000000 raw (ΣΎ0.01). You must set this variable explicitly to grant the power to send higher amounts. Used by tools πŸ”§ raw_send πŸ”§ x402_payment_signature_exact_scheme_create

NANO_MAX_SEND_AMOUNT - Maximum amount (in nano units) which can be sent in a single transaction. For safety purposes the default maximum send amount is 0.01 nano (ΣΎ0.01). You must set this variable explicitly to grant the power to send higher amounts. Used by tools πŸ”§ nano_send πŸ”§ x402_payment_signature_exact_scheme_create

X402_NANO_NETWORK - The Nano network that an x402 Nano transaction is being created for. The default network is "nano:mainnet". Used by tools πŸ”§ x402_payment_signature_exact_scheme_create

Setup Example

The following is an example of a setup for Nano Currency MCP Server in Claude Desktop.

{
  "mcpServers": {
    "nano_currency": {
      "command": "ENTER FULL FILE PATH TO node.exe ON YOUR SYSTEM",
      "args": [
        "ENTER FULL FILE PATH TO nano-currency.js FILE FROM THIS REPOSITORY"
      ],
      "env": {
        "NANO_RPC_URL": "ENTER YOUR NANO_RPC_URL",
        "NANO_WORK_GENERATION_URL": "ENTER YOUR NANO_WORK_GENERATION_URL",
        "NANO_PRIVATE_KEY": "ENTER YOUR NANO_PRIVATE_KEY",
        "RAW_MAX_SEND_AMOUNT": "ENTER A RAW_MAX_SEND_AMOUNT (in raw units, example 10000000000000000000000000000)",
        "NANO_MAX_SEND_AMOUNT": "ENTER A NANO_MAX_SEND_AMOUNT (in nano units, example 0.001, 1.000)",
        "X402_NANO_NETWORK": "ENTER YOUR X402_NANO_NETWORK"
      }      
    }    
  }
}

🚨 Disclaimer 🚨

As always when working with real world value, in this case Nano, be careful when using this software. The authors and contributors shall not be held liable for any use of this software's functionality, intentional or unintentional, that leads to an undesired loss of funds.

πŸ“„ License

MIT

Available Tools

4 tools
block_infoB

Retrieve detailed information about a specific Nano block.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashYesHash for the Nano block to get information about

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action is to 'Retrieve' information, implying a read-only operation, but doesn't clarify aspects like authentication needs, rate limits, error handling, or what 'detailed information' entails. This leaves significant gaps in understanding the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and appropriately sized, making it easy to parse and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (single parameter, no output schema, no annotations), the description is minimally adequate. However, it lacks details on return values or behavioral traits, which could be important for an AI agent to use it effectively, especially with no output schema to clarify results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'hash' parameter clearly documented. The description adds no additional meaning beyond the schema, such as format examples or constraints, so it meets the baseline for high schema coverage without compensating value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Retrieve' and the resource 'detailed information about a specific Nano block', making the purpose evident. However, it doesn't explicitly differentiate from sibling tools like 'nano_account_info' or 'nano_my_account_info', which likely retrieve different types of information, so it misses full sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as 'nano_account_info' or 'nano_send'. It lacks context about prerequisites, scenarios, or exclusions, leaving the agent with no usage direction beyond the basic purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nano_account_infoA

Retrieve detailed information about a specific Nano account/address, including balance (in Nano and raw units), representative, and frontier block.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesNano address/account to get information about

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions retrieval of information but doesn't disclose behavioral traits such as whether this is a read-only operation, potential rate limits, authentication needs, or error handling. For a tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the purpose and details without waste. Every part earns its place by specifying what is retrieved and the included data points.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 parameter, no output schema, no annotations), the description is adequate for basic use. However, it lacks completeness for more advanced needs, such as explaining return values or behavioral aspects, which could be important in a broader context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the parameter 'address' documented as 'Nano address/account to get information about.' The description adds minimal value beyond this, as it doesn't provide additional context like format examples or constraints. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Retrieve') and resource ('Nano account/address') with specific details about what information is returned ('balance, representative, and frontier block'). It distinguishes from sibling tools like 'block_info' (which retrieves block information) and 'nano_send' (which sends transactions).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by specifying 'specific Nano account/address,' suggesting it's for querying individual accounts. However, it doesn't explicitly state when to use this versus alternatives like 'nano_my_account_info' (which might retrieve info for a predefined account) or provide exclusions, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nano_my_account_infoA

Retrieve detailed information about my Nano account/address, including balance (in Nano and raw units), representative, and frontier block. This is the account that is used to send Nano from.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It clearly indicates this is a read-only operation ('retrieve'), but doesn't disclose behavioral traits like authentication requirements, rate limits, error conditions, or response format. The description adds some context about the account being used for sending Nano, but lacks comprehensive behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly concise with two sentences that each earn their place. The first sentence states the purpose and specific data returned, while the second provides important contextual clarification about which account is being referenced.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read tool with no annotations and no output schema, the description is adequate but has gaps. It explains what information will be retrieved but doesn't describe the response format, error conditions, or authentication requirements. Given the simplicity of the tool (0 params), it's minimally viable but could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, focusing instead on what information will be retrieved about the account.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific verb 'retrieve' and resource 'detailed information about my Nano account/address', listing specific data fields (balance, representative, frontier block). It distinguishes from sibling tools by specifying 'my account' (vs. nano_account_info for general accounts) and clarifying this is the sending account.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: to get information about the user's own Nano account. It distinguishes from nano_account_info (general accounts) and nano_send (sending transactions), though doesn't explicitly state when NOT to use it or mention block_info as an alternative for block-level data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nano_sendC

Send a specified amount of Nano currency from a predefined account to a destination Nano address.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount of Nano to send (max 0.05 by default)
destination_addressYesNano address to send the nano to

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the action is a send (mutation) and mentions a default max amount (0.05), but lacks critical behavioral details: whether it requires specific permissions, if transactions are reversible, rate limits, error handling, or what the response contains. The 'predefined account' hint is vague about ownership or setup.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It front-loads the core action and includes key constraints (predefined account, destination address) without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what happens on success/failure, return values, or error conditions. The 'predefined account' is ambiguous, and behavioral risks (e.g., irreversible transactions) are unaddressed, leaving gaps for safe agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds no additional meaning beyond implying the amount has a default max (0.05), which is already in the schema's description for 'amount'. No syntax or format details beyond the schema are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Send') and resource ('Nano currency'), specifying it's from a predefined account to a destination address. It distinguishes from siblings like 'block_info' or 'nano_account_info' which are read operations, but doesn't explicitly differentiate from potential send alternatives (none listed).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives is provided. The description mentions a 'predefined account' but doesn't clarify if this is the only sending method available or if there are prerequisites like authentication. Sibling tools are all read-only, so usage context is implied but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv1.0.0
    • First observedblock_info
    • First observednano_account_info
    • First observednano_my_account_info
    • First observednano_send

TDQS

B3.1/5.0

Scored across 4 tools

Disambiguation2/5

There is significant overlap between 'nano_account_info' and 'nano_my_account_info', as both retrieve account information with only the source differing (specific vs. predefined). This ambiguity could lead to misselection, especially since 'nano_my_account_info' is essentially a subset of 'nano_account_info' with a fixed account. The other tools are distinct, but this core overlap reduces clarity.

Naming Consistency4/5

The naming follows a consistent snake_case pattern with 'nano_' prefix for most tools, making them readable and predictable. However, 'block_info' deviates by lacking the 'nano_' prefix, which slightly breaks the convention. Overall, the naming is mostly consistent with only minor deviations.

Tool Count3/5

With 4 tools, the count is borderline thin for a currency server, as it covers only basic retrieval and sending. While it includes essential operations, it feels slightly under-scoped for a full Nano currency interface, lacking tools for transactions like receiving, history, or network status, which might be expected in this domain.

Completeness2/5

The tool set has significant gaps for a Nano currency server. It includes account info retrieval and sending, but misses critical operations such as receiving transactions, checking transaction history, monitoring network status, or managing multiple accounts. This incompleteness could cause agent failures when trying to perform common currency-related tasks beyond basic queries and transfers.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables secure interactions with cryptocurrency daemon RPC interfaces through AI assistants, supporting transaction management, wallet operations, and daemon monitoring for Bitcoin-derived cryptocurrencies.
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for NANO cryptocurrency operations, enabling AI agents to generate wallets, send/receive transactions, check balances, and more via JSON-RPC.
    14
    3
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Exposes Nerve blockchain JSON-RPC and REST APIs as MCP tools, enabling AI agents to receive, pay, swap, and query balances with local account management and no gas fees.
    1
    -