Jeff-Bouchard/emercoin-mcp-server
If you are the rightful owner of emercoin-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The Emercoin MCP Server is a protocol server designed to facilitate secure and efficient communication between clients and servers using the Model Context Protocol (MCP).
Emercoin MCP Server v0.2
A comprehensive Model Context Protocol (MCP) server that provides HTTP/JSON access to all Emercoin CLI functionality with integrated formatting utilities.
Features
- Complete RPC Coverage: All 100+ Emercoin RPC endpoints organized by category
- Formatting Integration: Built-in support for
emercoin-format.py
andemercoin-value.py
utilities - Multiple API Styles: Category-based routes, generic RPC calls, and legacy compatibility
- Enhanced Error Handling: Detailed error responses with stderr output and exit codes
- Auto-Discovery:
/endpoints
route lists all available methods by category - Health Monitoring: Comprehensive health check with endpoint count
- CORS Support: Cross-origin requests enabled
- High Performance: Uses
spawn
for better process management
Prerequisites
- Node.js 14.0.0 or higher
- Python 3 (for formatting utilities)
- Emercoin daemon (emercoind) running with RPC enabled
- emercoin-cli in your PATH or specified via environment variable
Installation
git clone <repository>
cd emercoin-mcp-server
npm install
Configuration
Configure using environment variables:
export PORT=7331 # Server port (default: 7331)
export EMERCOIN_CLI_PATH=emercoin-cli # Path to emercoin-cli
export RPC_USER=your_rpc_username # RPC username
export RPC_PASSWORD=your_rpc_password # RPC password
export RPC_PORT=6662 # RPC port (default: 6662)
export RPC_HOST=127.0.0.1 # RPC host (default: 127.0.0.1)
Running the Server
npm start
# or for development with auto-reload:
npm run dev
API Endpoints
Discovery & Health
GET /health
- Server health and statisticsGET /endpoints
- List all available RPC methods by category
Category-Based Routes
All RPC methods are available via category-based routes:
Blockchain Operations
POST /blockchain/getblockchaininfo
POST /blockchain/getblockcount
POST /blockchain/getbestblockhash
POST /blockchain/getblock
- params:["blockhash", verbosity]
- And 20+ more blockchain endpoints...
Name Operations (Emercoin's unique feature)
POST /names/name_show
- params:["name", "valuetype", "filepath"]
POST /names/name_new
- params:["name", "value", days, "toaddress", "valuetype"]
POST /names/name_update
- params:["name", "value", days, "toaddress", "valuetype"]
POST /names/name_filter
- params:["regexp", maxage, from, nb, "stat", "valuetype"]
- And 10+ more name endpoints...
Wallet Operations
POST /wallet/getbalance
POST /wallet/getnewaddress
- params:["label", "address_type"]
POST /wallet/sendtoaddress
- params:["address", amount, "comment", "comment_to", ...]
POST /wallet/listtransactions
- And 40+ more wallet endpoints...
Other Categories
- Control:
getinfo
,stop
,uptime
, etc. - Mining:
getmininginfo
,getblocktemplate
, etc. - Network:
getpeerinfo
,getnetworkinfo
, etc. - Raw Transactions:
createrawtransaction
,signrawtransaction
, etc. - Utilities:
validateaddress
,estimatesmartfee
, etc. - Randpay: Emercoin's micropayment system
- ZMQ: Notification system
Generic RPC Routes
POST /rpc/:method
- Call any RPC method directlyPOST /rpc
- Legacy RPC passthrough
Request Format
All endpoints accept JSON with optional formatting:
{
"params": ["param1", "param2"],
"format": true, // Apply emercoin-format.py
"extractValue": true // Apply emercoin-value.py
}
Examples
Get blockchain info:
curl -X POST http://localhost:7331/blockchain/getblockchaininfo \
-H "Content-Type: application/json" \
-d '{}'
Show name with formatting:
curl -X POST http://localhost:7331/names/name_show \
-H "Content-Type: application/json" \
-d '{"params": ["dns:emercoin.com"], "format": true}'
Extract value from name:
curl -X POST http://localhost:7331/names/name_show \
-H "Content-Type: application/json" \
-d '{"params": ["dns:emercoin.com"], "extractValue": true}'
Send EMC:
curl -X POST http://localhost:7331/wallet/sendtoaddress \
-H "Content-Type: application/json" \
-d '{"params": ["EMC_ADDRESS", 1.0, "Payment", "To John"]}'
Formatting Utilities
The server integrates two Python utilities:
emercoin-format.py
Cleans text output by replacing literal \n
with actual line breaks.
emercoin-value.py
Extracts the value
field from JSON responses, useful for name operations.
Enable formatting by adding "format": true
or "extractValue": true
to your request body.
Security Considerations
- Network Security: Run behind HTTPS reverse proxy
- Access Control: Use firewall rules to limit access
- Credentials: Use strong RPC credentials, consider
rpcauth
- Port Security: Default port 7331 avoids common conflicts
- Input Validation: All user input is properly escaped
Error Handling
Detailed error responses include:
- Error message
- stderr output from emercoin-cli
- Exit code
- Method name for context
Development
npm run dev # Auto-reload on changes
License
MIT