The Neo N3 MCP Server is a production-ready Model Context Protocol server that provides comprehensive Neo N3 blockchain integration with 34 tools and 9 resources for blockchain operations.
Core Capabilities:
Network Management: Get current network mode and switch between mainnet/testnet
Blockchain Queries: Retrieve blockchain information, block counts, specific blocks by height/hash, and transaction details
Wallet Operations: Create new wallets with secure private key management and import existing wallets using private keys or WIF format
Asset Management: Check NEO, GAS, and NEP-17 token balances, transfer assets between addresses, estimate transfer fees, and claim accumulated GAS rewards
Contract Interactions: List famous contracts (NEO, GAS, NEP-17 tokens), get detailed contract information including manifest and methods, invoke smart contracts with parameters, and estimate gas costs for invocations
Resources (Read-Only Access): Network status monitoring, blockchain data access, contract registry, and asset information via
neo://URLs
Key Features:
Multi-network support for both mainnet and testnet
Enterprise-grade security with input validation and error handling
Built-in rate limiting and network resilience
Multiple deployment options via NPM, Docker, and direct integration with MCP clients like Claude Desktop
Enables containerized deployment of the Neo N3 MCP server, supporting isolated and consistent execution environments across different platforms.
Hosts the source code repository for the Neo N3 MCP server, enabling version control and collaboration on the codebase.
Supports comprehensive testing of the Neo N3 MCP server functionality, ensuring reliability of blockchain interactions.
Hosts the Neo N3 MCP documentation website, providing users with comprehensive guides and API references for interacting with the Neo N3 blockchain.
Provides tools for running the Neo N3 MCP server as an NPM package using Node.js, offering a simple way to access the blockchain functionality.
Allows installation and distribution of the Neo N3 MCP server as a package through the NPM registry, making it easily accessible to users.
Used for implementing the Neo N3 MCP server with strong typing, providing enhanced development experience and code reliability.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Neo N3 MCP Servercheck my wallet balance on testnet"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Neo N3 MCP Server
MCP Server for Neo N3 Blockchain Integration | Version 1.6.4
A production-ready MCP server providing Neo N3 blockchain integration with 26 tools, 3 fixed resources, and a parameterized block resource for wallet management, transaction lifecycle tracking, asset transfers, contract deployment, contract interactions, and blockchain queries.
š Quick Start
Install from NPM
# Install globally
npm install -g @r3e/neo-n3-mcp
# Or install locally
npm install @r3e/neo-n3-mcpBasic Usage
# Run with default configuration
npx @r3e/neo-n3-mcp
# Or if installed globally
neo-n3-mcpRelated MCP server: Salesforce MCP Server
āļø Configuration
1. Environment Variables
The MCP stdio server reads configuration from environment variables.
NEO_NETWORK=both \
NEO_MAINNET_RPC=https://mainnet1.neo.coz.io:443 \
NEO_TESTNET_RPC=http://seed1t5.neo.org:20332 \
LOG_LEVEL=info \
LOG_FILE=./logs/neo-n3-mcp.log \
npx @r3e/neo-n3-mcpBackward-compatible aliases are also accepted:
NEO_MAINNET_RPC_URLNEO_TESTNET_RPC_URLNEO_NETWORK_MODE
When NEO_NETWORK=both, stdio tool calls without an explicit network default to mainnet. The HTTP entrypoint requires NEO_NETWORK=mainnet or NEO_NETWORK=testnet.
2. MCP Client Configuration
Example Claude/Cursor configuration:
{
"mcpServers": {
"neo-n3": {
"command": "npx",
"args": ["-y", "@r3e/neo-n3-mcp"],
"disabled": false,
"env": {
"NEO_NETWORK": "testnet",
"NEO_TESTNET_RPC": "http://seed1t5.neo.org:20332",
"LOG_LEVEL": "info"
}
}
}
}3. Docker Configuration
Using Docker Hub Image
# Basic run
docker run -p 3000:3000 \
-e NEO_NETWORK=mainnet \
-e LOG_CONSOLE=false \
-e LOG_FILE=/app/logs/neo-n3-mcp.log \
r3enetwork/neo-n3-mcp:1.6.4
# With environment variables
docker run -p 3000:3000 \
-e NEO_NETWORK=mainnet \
-e NEO_MAINNET_RPC=https://mainnet1.neo.coz.io:443 \
-e NEO_TESTNET_RPC=http://seed1t5.neo.org:20332 \
-e LOG_LEVEL=info \
r3enetwork/neo-n3-mcp:1.6.4
# With volume for persistent data
docker run -p 3000:3000 \
-v $(pwd)/wallets:/app/wallets \
-v $(pwd)/logs:/app/logs \
-e NEO_NETWORK=testnet \
r3enetwork/neo-n3-mcp:1.6.4Docker Compose
Create a docker-compose.yml:
version: '3.8'
services:
neo-mcp:
image: r3enetwork/neo-n3-mcp:1.6.4
ports:
- "3000:3000"
environment:
- NEO_NETWORK=mainnet
- NEO_MAINNET_RPC=https://mainnet1.neo.coz.io:443
- NEO_TESTNET_RPC=http://seed1t5.neo.org:20332
- LOG_LEVEL=info
- LOG_FILE=/app/logs/neo-n3-mcp.log
volumes:
- ./wallets:/app/wallets
- ./logs:/app/logs
- ./config:/app/config
restart: unless-stoppedRun with:
docker-compose up -dš³ Docker Quick Start
# Quick start with Docker Compose
git clone https://github.com/r3e-network/neo-n3-mcp.git
cd neo-n3-mcp
docker-compose -f docker/docker-compose.yml up -d
# Or build and run manually
npm run docker:build
npm run docker:run
# Development mode
npm run docker:up:devProduction Docker Setup
# Build production image
./scripts/docker-build.sh --tag v1.6.4
# Run with custom configuration
docker run -d \
--name neo-mcp-prod \
-p 3000:3000 \
-e NEO_NETWORK=mainnet \
-v neo-mcp-logs:/app/logs \
neo-n3-mcp:v1.6.4Development Docker Setup
# Build development image
./scripts/docker-build.sh --dev
# Run with hot reload and debugging
docker-compose -f docker/docker-compose.dev.yml up -dš§ Configuration Options
Environment Variables
Variable | Description | Default |
| Network mode: |
|
| Mainnet RPC endpoint |
|
| Testnet RPC endpoint |
|
| Logging level |
|
| Log file path |
|
| Enable HTTP rate limiting |
|
| Per-minute limit |
|
| Per-hour limit |
|
Legacy aliases accepted:
NEO_MAINNET_RPC_URLNEO_TESTNET_RPC_URLNEO_NETWORK_MODE
š ļø MCP Client Integration
Claude Desktop / Cursor
{
"mcpServers": {
"neo-n3": {
"command": "npx",
"args": ["-y", "@r3e/neo-n3-mcp"],
"disabled": false,
"env": {
"NEO_NETWORK": "mainnet",
"NEO_MAINNET_RPC": "https://mainnet1.neo.coz.io:443",
"NEO_TESTNET_RPC": "http://seed1t5.neo.org:20332",
"LOG_LEVEL": "info"
}
}
}
}Custom MCP Client
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
const transport = new StdioClientTransport({
command: 'npx',
args: ['-y', '@r3e/neo-n3-mcp'],
env: {
NEO_NETWORK: 'mainnet',
NEO_MAINNET_RPC: 'https://mainnet1.neo.coz.io:443',
NEO_TESTNET_RPC: 'http://seed1t5.neo.org:20332',
},
});
const client = new Client(
{ name: 'my-neo-client', version: '1.0.0' },
{ capabilities: {} }
);
await client.connect(transport);š Available Tools & Resources
š ļø Tools (26 available)
Network:
get_network_mode,set_network_modeBlockchain:
get_blockchain_info,get_block_count,get_block,get_transaction,get_application_log,wait_for_transactionWallets:
create_wallet,import_wallet,get_walletAssets:
get_balance,get_unclaimed_gas,get_nep17_transfers,get_nep11_balances,get_nep11_transfers,transfer_assets,estimate_transfer_feesContracts:
invoke_contract,deploy_contract,list_famous_contracts,get_contract_infoNeoFS:
neofs_create_container,neofs_get_containersAdvanced:
claim_gas,estimate_invoke_fees
š HTTP Endpoints
Health & metrics:
/health,/metricsTransactions:
/api/transactions/:txid,/api/transactions/:txid/application-log,/api/transactions/:txid/waitAccounts:
/api/accounts/:address/balance,/api/accounts/:address/unclaimed-gas,/api/accounts/:address/nep17-transfers,/api/accounts/:address/nep11-balances,/api/accounts/:address/nep11-transfers,POST /api/accounts/claim-gasBlocks:
GET /api/blocks/:hashOrHeightTransfers:
POST /api/transfers,POST /api/transfers/estimate-feesContracts:
POST /api/contracts/invoke,POST /api/contracts/invoke/estimate-fees,POST /api/contracts/:name/invoke,POST /api/contracts/deploy(requiresconfirm=true)Wallets:
POST /api/wallets,POST /api/wallets/import,GET /api/wallets/:address
š Resources (3 fixed + 1 template)
Status:
neo://network/status,neo://mainnet/status,neo://testnet/statusParameterized Block:
neo://block/{height}
š Security
Input Validation: All inputs validated and sanitized
Confirmation Required: Sensitive operations require explicit confirmation
Private Key Security: Keys encrypted and stored securely
Network Isolation: Separate configurations for mainnet/testnet
Rate Limiting: Configurable rate limiting for production deployments
Secure Logging: No sensitive data exposed in logs
ā” Performance & Reliability
Rate Limiting: Built-in rate limiting with configurable thresholds
Error Handling: Comprehensive error handling with proper MCP error codes
Network Resilience: Automatic fallback mechanisms for RPC calls
Production Ready: Systemd service configuration and monitoring support
š Version Management & Release Process
Current Version: 1.6.4
This project follows Semantic Versioning with automated CI/CD pipeline for releases. See our Version Management Guide for detailed information.
š How to Trigger Next Version Release
Method 1: Automated Release Script (Recommended)
# 1. First, do a dry run to see what will happen
./scripts/prepare-release.sh --type minor --dry-run
# 2. If everything looks good, run the actual release preparation
./scripts/prepare-release.sh --type minor
# 3. Push the changes (script will guide you)
git push
# 4. Create GitHub release (triggers full CI/CD pipeline)
gh release create v1.7.0 --generate-notesMethod 2: Manual NPM Version Commands
# Check current version
npm run version:check
# Bump version manually
npm run version:patch # 1.6.4 ā 1.6.5 (bug fixes)
npm run version:minor # 1.6.4 ā 1.7.0 (new features)
npm run version:major # 1.6.4 ā 2.0.0 (breaking changes)
# Then commit and push
git add . && git commit -m "chore: bump version to 1.7.0"
git pushMethod 3: GitHub Release (Direct)
# Using GitHub CLI
gh release create v1.7.0 --generate-notes
# Or manually through GitHub web interface:
# 1. Go to https://github.com/r3e-network/neo-n3-mcp/releases
# 2. Click "Create a new release"
# 3. Tag: v1.7.0, Title: "Release v1.7.0"
# 4. Auto-generate release notes
# 5. Publish releaseš What Happens When You Create a Release
The automated CI/CD pipeline triggers the following workflow:
Phase 1: Testing & Validation ā”
ā Multi-version testing: Node.js 18.x, 20.x, 22.x on ubuntu-latest
ā Code quality: Linting and type checking
ā Unit tests: Core functionality validation
ā Coverage reporting: Automatic upload to Codecov
Phase 2: Build & Docker šØ
ā TypeScript compilation: Build validation
ā Docker builds: Both development and production images
ā Container testing: Docker functionality validation
ā Compose validation: Configuration testing
Phase 3: Security & Audit š
ā Security audit: npm audit for vulnerabilities
ā Dependency check: audit-ci for security issues
ā Package updates: Check for outdated dependencies
Phase 4: Publishing š¦ (Only on release)
š NPM Publishing: Automatic package publishing to npm registry
š³ Docker Publishing: Multi-tag image publishing to Docker Hub
š Versioned tags: Semantic versioning with proper tagging
Phase 5: Deployment š (Only on release)
šÆ Production deployment: Automated deployment notification
š Release tracking: Version monitoring and validation
š Release Types
Type | Version Change | Use Case | Example |
patch | 1.6.4 ā 1.6.5 | Bug fixes, security patches |
|
minor | 1.6.4 ā 1.7.0 | New features, enhancements |
|
major | 1.6.4 ā 2.0.0 | Breaking changes |
|
šÆ Quick Release Commands
# For next minor release (recommended for new features)
./scripts/prepare-release.sh --type minor
# For patch release (bug fixes)
./scripts/prepare-release.sh --type patch
# For major release (breaking changes)
./scripts/prepare-release.sh --type major
# Test what would happen (dry run)
./scripts/prepare-release.sh --type minor --dry-runš Latest Changes (v1.6.4)
ā Release Surface Hardening: npm packaging now publishes only the intended runtime assets and consumer metadata
ā Built Artifact CI Smoke Test: CI now starts the compiled MCP server and validates core MCP surfaces after build
ā Resource Handler Extraction: MCP resource registration now lives in a focused handler module without changing public URIs or payloads
ā Clean Checkout Packaging:
prepacknow rebuildsdistbeforenpm pack, preventing release tarballs from missing compiled outputā Versioning Documentation Refresh: release docs and helper scripts now reflect package-driven versioning via
src/version.ts
š Release Documentation
CHANGELOG.md - Complete version history
VERSION_MANAGEMENT.md - Detailed release process
WORKFLOW.md - CI/CD pipeline documentation
š Required Secrets (Already Configured)
ā
NPM_TOKEN- For NPM registry publishingā
DOCKER_USERNAME- Docker Hub usernameā
DOCKER_PASSWORD- Docker Hub access token
š Documentation
API Reference - Complete API documentation
Architecture - System design and components
Examples - Practical usage examples and best practices
Docker Guide - Comprehensive Docker deployment guide
Production Checklist - Production deployment guide
Deployment - Deployment configuration
Testing - Testing and validation
Networks - Network configuration details
Version Management - Release process and versioning
Release Guide - Quick reference for triggering releases
Workflow Guide - CI/CD pipeline documentation
Changelog - Version history and changes
š License
MIT License - see LICENSE file for details.
š Links
NPM Package: https://www.npmjs.com/package/@r3e/neo-n3-mcp
Neo N3 Documentation: https://docs.neo.org/
MCP Protocol: https://modelcontextprotocol.io/