1Money Network MCP
Official# 1Money Network MCP
<img src="./public/logo.png" alt="1Money Logo" width="200"/>
MCP (stdio) server for the 1Money Network Protocol, backed by `@1money/protocol-ts-sdk`.
## What This MCP Server Does
- Exposes protocol API endpoints (accounts, tokens, transactions, checkpoints, chain) as MCP tools.
- Includes utility tools for signing, hashing, RLP encoding, and address derivation.
- Uses the SDK client configuration and respects network/base URL/timeouts.
## Configuration
Environment variables:
- `ONEMONEY_PROTOCOL_NETWORK`: `testnet`, `mainnet`, or `local` (default: `testnet`)
- `ONEMONEY_PROTOCOL_BASE_URL`: override the network base URL
- `ONEMONEY_PROTOCOL_TIMEOUT_MS`: request timeout in ms (default: `10000`)
- `ONEMONEY_PROTOCOL_HEADERS`: optional JSON string of headers to include in all requests (only needed for custom gateways/proxies)
Example `.env` file (see `.env.example`):
```bash
export ONEMONEY_PROTOCOL_NETWORK=testnet
export ONEMONEY_PROTOCOL_TIMEOUT_MS=15000
```
Most users can omit `ONEMONEY_PROTOCOL_HEADERS`.
## Integration
### Cursor (one-click install)
After installation, add your configuration to `~/.cursor/mcp.json`:
```json
{
"mcpServers": {
"1money-network": {
"command": "npx",
"args": ["-y", "@1money/network-mcp"],
"env": {
"ONEMONEY_PROTOCOL_NETWORK": "testnet"
}
}
}
}
```
### Claude Code
Run the following command in your terminal:
```bash
claude mcp add --transport stdio 1money-network --env ONEMONEY_PROTOCOL_NETWORK=testnet -- npx -y @1money/network-mcp
```
### Claude Desktop
Add to your Claude Desktop configuration file:
macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
Windows: `%APPDATA%\\Claude\\claude_desktop_config.json`
```json
{
"mcpServers": {
"1money-network": {
"command": "npx",
"args": ["-y", "@1money/network-mcp"],
"env": {
"ONEMONEY_PROTOCOL_NETWORK": "testnet"
}
}
}
}
```
### Codex Integration
Add the MCP server to your Codex config file, then restart Codex:
```toml
[mcp_servers.1money-network]
command = "npx"
args = ["-y", "@1money/network-mcp"]
env = { ONEMONEY_PROTOCOL_NETWORK = "testnet" }
```
## Example Tool Calls
```json
{
"tool": "accounts.get_nonce",
"input": {
"address": "0x9E1E9688A44D058fF181Ed64ddFAFbBE5CC74ff3"
}
}
```
```json
{
"tool": "transactions.estimate_fee",
"input": {
"from": "0x9E1E9688A44D058fF181Ed64ddFAFbBE5CC74ff3",
"value": "1000000000",
"token": "0x2cd8999Be299373D7881f4aDD11510030ad1412F"
}
}
```
```json
{
"tool": "utils.sign_message",
"input": {
"payload": [
1212101,
2,
"0x0000000000000000000000000000000000000000",
"1000000000000000000",
"0x0000000000000000000000000000000000000000"
],
"private_key": "0xYOUR_PRIVATE_KEY"
}
}
```
Note: `utils.sign_message` accepts a private key directly. Avoid using real keys in shared environments.
## Example Prompts
- "Get the current chain id."
- "Fetch the latest checkpoint number on testnet."
- "Estimate fee for sending 1000000000 units from 0x... with token 0x...."
- "Get token metadata for 0x...."
- "Derive the token account address for wallet 0x... and mint 0x...."
## Tools
### accounts
- `accounts.get_nonce`
- `accounts.get_bbnonce`
- `accounts.get_token_account`
### chain
- `chain.get_chain_id`
### checkpoints
- `checkpoints.get_number`
- `checkpoints.get_by_hash`
- `checkpoints.get_by_number`
- `checkpoints.get_receipts_by_number`
### tokens
- `tokens.get_token_metadata`
- `tokens.manage_blacklist`
- `tokens.manage_whitelist`
- `tokens.burn`
- `tokens.grant_authority`
- `tokens.issue`
- `tokens.mint`
- `tokens.pause`
- `tokens.update_metadata`
- `tokens.bridge_and_mint`
- `tokens.burn_and_bridge`
### transactions
- `transactions.get_by_hash`
- `transactions.get_receipt_by_hash`
- `transactions.get_finalized_by_hash`
- `transactions.estimate_fee`
- `transactions.payment`
### utils
- `utils.derive_token_address`
- `utils.sign_message`
- `utils.encode_payload`
- `utils.to_hex`
- `utils.calc_tx_hash`
- `utils.typeof`
- `utils.safe_promise_all`
- `utils.safe_promise_line`
Batch tools (`utils.safe_promise_all` and `utils.safe_promise_line`) accept a `calls` array of `{ tool, input }` objects. The `safe_promise_all` variant executes in parallel and fails on the first error. The `safe_promise_line` variant executes sequentially and ignores errors.
## Schema
`schemas/tools.json` is the JSON Schema source for all tools.
TDQS
Scored across 32 tools
Tools are mostly distinct by domain area (accounts, chain, checkpoints, tokens, transactions, utils). A few pairs like tokens_issue vs tokens_mint or accounts_get_nonce vs accounts_get_bbnonce could be ambiguous without descriptions, but the verb/object division generally clarifies purpose.
All tool names follow a consistent group_verb_object pattern with snake_case throughout (e.g., accounts_get_nonce, tokens_burn, transactions_estimate_fee). Even compound actions like bridges_and_mints maintain the same style, so the naming is highly predictable.
With 32 tools, the server feels overloaded. Many utilities (utils_typeof, utils_safe_promise_all, utils_safe_promise_line) are not domain-specific and could be omitted, while the core token and transaction areas are well-covered. The count exceeds a comfortable scope for an MCP server.
The tool surface covers core blockchain operations: account nonces, chain ID, checkpoint queries, token lifecycle (issue, mint, burn, pause, whitelist/blacklist, metadata, authority), and transaction submission/estimation/retrieval. Minor gaps exist, such as an explicit token transfer tool (though payment may cover that) and no direct block query, but overall coverage is strong.