@manifest-network/manifest-mcp-node 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,11 +2,12 @@
2
2
 
3
3
  Node.js CLI entry points for the Manifest MCP servers with stdio transport and encrypted keyfile wallet.
4
4
 
5
- Provides four binaries:
5
+ Provides five binaries:
6
6
  - **`manifest-mcp-chain`** -- Chain MCP server (6 tools, +1 optional `request_faucet`: queries, transactions, fee estimation, module discovery)
7
7
  - **`manifest-mcp-lease`** -- Lease MCP server (8 tools: credit balance, funding, lease queries, custom-domain claim/lookup, SKUs, providers)
8
8
  - **`manifest-mcp-fred`** -- Fred MCP server (11 tools, plus 3 resources & 3 prompts: catalog, deployment readiness, manifest preview, deployment, ready polling, status, logs, restart, update, diagnostics, releases)
9
9
  - **`manifest-mcp-cosmwasm`** -- CosmWasm MCP server (2 tools: MFX-to-PWR rate query, token conversion)
10
+ - **`manifest-mcp-agent`** -- Agent MCP server (5 orchestrated tools via MCP elicitation: deploy, manage-domain, lookup-domain, troubleshoot, close-lease)
10
11
 
11
12
  ## Setup
12
13
 
@@ -18,7 +19,7 @@ npm run build
18
19
 
19
20
  ## Wallet setup
20
21
 
21
- All four servers need a wallet to sign transactions. Choose one of the options below.
22
+ All five servers need a wallet to sign transactions. Choose one of the options below.
22
23
 
23
24
  ### Option A -- Generate a new keyfile (recommended)
24
25
 
@@ -26,7 +27,7 @@ All four servers need a wallet to sign transactions. Choose one of the options b
26
27
  npx manifest-mcp-chain keygen
27
28
  ```
28
29
 
29
- All CLIs share the same keyfile (`~/.manifest/key.json`), so any of the four commands works for `keygen` and `import`. You will be prompted for an encryption password. The keyfile is written with mode `0600`.
30
+ All CLIs share the same keyfile (`~/.manifest/key.json`), so any of the five commands works for `keygen` and `import`. You will be prompted for an encryption password. The keyfile is written with mode `0600`.
30
31
 
31
32
  ### Option B -- Import an existing mnemonic
32
33
 
@@ -64,6 +65,10 @@ manifest-mcp-fred import Import a mnemonic into an encrypted keyfile
64
65
  manifest-mcp-cosmwasm Start the cosmwasm MCP server (stdio)
65
66
  manifest-mcp-cosmwasm keygen Generate a new encrypted keyfile
66
67
  manifest-mcp-cosmwasm import Import a mnemonic into an encrypted keyfile
68
+
69
+ manifest-mcp-agent Start the agent MCP server (stdio)
70
+ manifest-mcp-agent keygen Generate a new encrypted keyfile
71
+ manifest-mcp-agent import Import a mnemonic into an encrypted keyfile
67
72
  ```
68
73
 
69
74
  ## MCP client integration
@@ -1 +1 @@
1
- {"version":3,"file":"keygen.js","names":[],"sources":["../src/keygen.ts"],"sourcesContent":["import { existsSync, mkdirSync, writeFileSync } from 'node:fs';\nimport { dirname } from 'node:path';\nimport { createInterface } from 'node:readline';\nimport { DirectSecp256k1HdWallet } from '@cosmjs/proto-signing';\nimport { loadKeyfileConfig } from './config.js';\n\nfunction prompt(question: string): Promise<string> {\n if (!process.stdin.isTTY) {\n throw new Error(\n 'Interactive terminal required for key management commands. Cannot prompt for input in non-interactive mode.',\n );\n }\n const rl = createInterface({\n input: process.stdin,\n output: process.stderr,\n });\n return new Promise((resolve, reject) => {\n let answered = false;\n rl.question(question, (answer) => {\n answered = true;\n rl.close();\n resolve(answer);\n });\n rl.on('close', () => {\n if (!answered) {\n reject(new Error('Input stream closed before response was received.'));\n }\n });\n });\n}\n\nfunction promptPassword(question: string): Promise<string> {\n if (!process.stdin.isTTY) {\n throw new Error(\n 'Interactive terminal required for key management commands. Cannot prompt for input in non-interactive mode.',\n );\n }\n return new Promise((resolve, reject) => {\n let password = '';\n process.stderr.write(question);\n process.stdin.setRawMode(true);\n process.stdin.resume();\n process.stdin.setEncoding('utf8');\n\n const cleanup = (): void => {\n process.stdin.setRawMode(false);\n process.stdin.pause();\n process.stdin.removeListener('data', onData);\n process.stdin.removeListener('error', onError);\n process.stderr.write('\\n');\n };\n\n const onError = (err: Error): void => {\n cleanup();\n reject(new Error(`stdin error during password prompt: ${err.message}`));\n };\n\n const onData = (ch: string): void => {\n if (ch === '\\r' || ch === '\\n') {\n cleanup();\n resolve(password);\n } else if (ch === '\\u0004') {\n // Ctrl+D (EOF) — reject instead of resolving with partial input\n cleanup();\n reject(new Error('Input stream closed before password was entered.'));\n } else if (ch === '\\u0003') {\n cleanup();\n process.exit(130);\n } else if (ch === '\\u007f' || ch === '\\b') {\n if (password.length > 0) {\n password = [...password].slice(0, -1).join('');\n }\n } else if (ch >= ' ') {\n password += ch;\n }\n };\n\n process.stdin.on('data', onData);\n process.stdin.on('error', onError);\n });\n}\n\nasync function writeKeyfile(\n wallet: DirectSecp256k1HdWallet,\n keyfilePath: string,\n password: string,\n): Promise<void> {\n let serialized: string;\n try {\n serialized = await wallet.serialize(password);\n } catch (err: unknown) {\n throw new Error(\n `Failed to encrypt wallet: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n try {\n mkdirSync(dirname(keyfilePath), { recursive: true, mode: 0o700 });\n writeFileSync(keyfilePath, serialized, { mode: 0o600 });\n } catch (err: unknown) {\n throw new Error(\n `Failed to write keyfile to ${keyfilePath}: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n}\n\nasync function confirmOverwrite(keyfilePath: string): Promise<void> {\n if (existsSync(keyfilePath)) {\n const answer = await prompt(\n `Keyfile already exists at ${keyfilePath}. Overwrite? (yes/no): `,\n );\n if (answer.toLowerCase() !== 'yes') {\n console.error('Aborted. Existing keyfile was not modified.');\n process.exit(0);\n }\n }\n}\n\nexport async function runKeygen(): Promise<void> {\n const config = loadKeyfileConfig();\n const prefix = config.addressPrefix;\n const keyfilePath = config.keyfilePath;\n\n await confirmOverwrite(keyfilePath);\n\n const password = await promptPassword(\n 'Enter password for keyfile encryption: ',\n );\n if (!password) {\n console.error('Error: password cannot be empty.');\n process.exit(1);\n }\n if (password.length < 8) {\n console.error('Error: password must be at least 8 characters.');\n process.exit(1);\n }\n const confirmPassword = await promptPassword('Confirm password: ');\n if (password !== confirmPassword) {\n console.error('Error: passwords do not match.');\n process.exit(1);\n }\n\n let wallet: DirectSecp256k1HdWallet;\n try {\n wallet = await DirectSecp256k1HdWallet.generate(24, { prefix });\n } catch (err: unknown) {\n console.error(\n `Failed to generate wallet: ${err instanceof Error ? err.message : String(err)}`,\n );\n process.exit(1);\n }\n\n await writeKeyfile(wallet, keyfilePath, password);\n console.error(`Keyfile written to ${keyfilePath}`);\n\n try {\n const accounts = await wallet.getAccounts();\n if (accounts.length > 0) {\n console.error(`Address: ${accounts[0].address}`);\n }\n } catch (err) {\n console.error(\n `Note: could not derive address for display (${err instanceof Error ? err.message : String(err)}), but the keyfile was written successfully.`,\n );\n }\n}\n\nexport async function runImport(): Promise<void> {\n const config = loadKeyfileConfig();\n const prefix = config.addressPrefix;\n const keyfilePath = config.keyfilePath;\n\n await confirmOverwrite(keyfilePath);\n\n const mnemonic = await promptPassword('Enter mnemonic (hidden): ');\n if (!mnemonic.trim()) {\n console.error('Error: mnemonic cannot be empty.');\n process.exit(1);\n }\n\n const password = await promptPassword(\n 'Enter password for keyfile encryption: ',\n );\n if (!password) {\n console.error('Error: password cannot be empty.');\n process.exit(1);\n }\n if (password.length < 8) {\n console.error('Error: password must be at least 8 characters.');\n process.exit(1);\n }\n const confirmPassword = await promptPassword('Confirm password: ');\n if (password !== confirmPassword) {\n console.error('Error: passwords do not match.');\n process.exit(1);\n }\n\n let wallet: DirectSecp256k1HdWallet;\n try {\n wallet = await DirectSecp256k1HdWallet.fromMnemonic(mnemonic.trim(), {\n prefix,\n });\n } catch (err: unknown) {\n console.error(\n `Invalid mnemonic: ${err instanceof Error ? err.message : String(err)}\\n` +\n 'Please verify your mnemonic phrase has the correct number of words (12, 15, 18, 21, or 24) ' +\n 'and all words are valid BIP-39 words.',\n );\n process.exit(1);\n }\n\n await writeKeyfile(wallet, keyfilePath, password);\n console.error(`Keyfile written to ${keyfilePath}`);\n\n try {\n const accounts = await wallet.getAccounts();\n if (accounts.length > 0) {\n console.error(`Address: ${accounts[0].address}`);\n }\n } catch (err) {\n console.error(\n `Note: could not derive address for display (${err instanceof Error ? err.message : String(err)}), but the keyfile was written successfully.`,\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"keygen.js","names":[],"sources":["../src/keygen.ts"],"sourcesContent":["import { existsSync, mkdirSync, writeFileSync } from 'node:fs';\nimport { dirname } from 'node:path';\nimport { createInterface } from 'node:readline';\nimport { DirectSecp256k1HdWallet } from '@cosmjs/proto-signing';\nimport { loadKeyfileConfig } from './config.js';\n\nfunction prompt(question: string): Promise<string> {\n if (!process.stdin.isTTY) {\n throw new Error(\n 'Interactive terminal required for key management commands. Cannot prompt for input in non-interactive mode.',\n );\n }\n const rl = createInterface({\n input: process.stdin,\n output: process.stderr,\n });\n return new Promise((resolve, reject) => {\n let answered = false;\n rl.question(question, (answer) => {\n answered = true;\n rl.close();\n resolve(answer);\n });\n rl.on('close', () => {\n if (!answered) {\n reject(new Error('Input stream closed before response was received.'));\n }\n });\n });\n}\n\nfunction promptPassword(question: string): Promise<string> {\n if (!process.stdin.isTTY) {\n throw new Error(\n 'Interactive terminal required for key management commands. Cannot prompt for input in non-interactive mode.',\n );\n }\n return new Promise((resolve, reject) => {\n let password = '';\n process.stderr.write(question);\n process.stdin.setRawMode(true);\n process.stdin.resume();\n process.stdin.setEncoding('utf8');\n\n const cleanup = (): void => {\n process.stdin.setRawMode(false);\n process.stdin.pause();\n process.stdin.removeListener('data', onData);\n process.stdin.removeListener('error', onError);\n process.stderr.write('\\n');\n };\n\n const onError = (err: Error): void => {\n cleanup();\n reject(new Error(`stdin error during password prompt: ${err.message}`));\n };\n\n const onData = (ch: string): void => {\n if (ch === '\\r' || ch === '\\n') {\n cleanup();\n resolve(password);\n } else if (ch === '\\u0004') {\n // Ctrl+D (EOF) — reject instead of resolving with partial input\n cleanup();\n reject(new Error('Input stream closed before password was entered.'));\n } else if (ch === '\\u0003') {\n cleanup();\n process.exit(130);\n } else if (ch === '\\u007f' || ch === '\\b') {\n if (password.length > 0) {\n password = [...password].slice(0, -1).join('');\n }\n } else if (ch >= ' ') {\n password += ch;\n }\n };\n\n process.stdin.on('data', onData);\n process.stdin.on('error', onError);\n });\n}\n\nasync function writeKeyfile(\n wallet: DirectSecp256k1HdWallet,\n keyfilePath: string,\n password: string,\n): Promise<void> {\n let serialized: string;\n try {\n serialized = await wallet.serialize(password);\n } catch (err: unknown) {\n throw new Error(\n `Failed to encrypt wallet: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n try {\n mkdirSync(dirname(keyfilePath), { recursive: true, mode: 0o700 });\n writeFileSync(keyfilePath, serialized, { mode: 0o600 });\n } catch (err: unknown) {\n throw new Error(\n `Failed to write keyfile to ${keyfilePath}: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n}\n\nasync function confirmOverwrite(keyfilePath: string): Promise<void> {\n if (existsSync(keyfilePath)) {\n const answer = await prompt(\n `Keyfile already exists at ${keyfilePath}. Overwrite? (yes/no): `,\n );\n if (answer.toLowerCase() !== 'yes') {\n console.error('Aborted. Existing keyfile was not modified.');\n process.exit(0);\n }\n }\n}\n\nexport async function runKeygen(): Promise<void> {\n const config = loadKeyfileConfig();\n const prefix = config.addressPrefix;\n const keyfilePath = config.keyfilePath;\n\n await confirmOverwrite(keyfilePath);\n\n const password = await promptPassword(\n 'Enter password for keyfile encryption: ',\n );\n if (!password) {\n console.error('Error: password cannot be empty.');\n process.exit(1);\n }\n if (password.length < 8) {\n console.error('Error: password must be at least 8 characters.');\n process.exit(1);\n }\n const confirmPassword = await promptPassword('Confirm password: ');\n if (password !== confirmPassword) {\n console.error('Error: passwords do not match.');\n process.exit(1);\n }\n\n let wallet: DirectSecp256k1HdWallet;\n try {\n wallet = await DirectSecp256k1HdWallet.generate(24, { prefix });\n } catch (err: unknown) {\n console.error(\n `Failed to generate wallet: ${err instanceof Error ? err.message : String(err)}`,\n );\n process.exit(1);\n }\n\n await writeKeyfile(wallet, keyfilePath, password);\n console.error(`Keyfile written to ${keyfilePath}`);\n\n try {\n const accounts = await wallet.getAccounts();\n if (accounts.length > 0) {\n console.error(`Address: ${accounts[0].address}`);\n }\n } catch (err) {\n console.error(\n `Note: could not derive address for display (${err instanceof Error ? err.message : String(err)}), but the keyfile was written successfully.`,\n );\n }\n}\n\nexport async function runImport(): Promise<void> {\n const config = loadKeyfileConfig();\n const prefix = config.addressPrefix;\n const keyfilePath = config.keyfilePath;\n\n await confirmOverwrite(keyfilePath);\n\n const mnemonic = await promptPassword('Enter mnemonic (hidden): ');\n if (!mnemonic.trim()) {\n console.error('Error: mnemonic cannot be empty.');\n process.exit(1);\n }\n\n const password = await promptPassword(\n 'Enter password for keyfile encryption: ',\n );\n if (!password) {\n console.error('Error: password cannot be empty.');\n process.exit(1);\n }\n if (password.length < 8) {\n console.error('Error: password must be at least 8 characters.');\n process.exit(1);\n }\n const confirmPassword = await promptPassword('Confirm password: ');\n if (password !== confirmPassword) {\n console.error('Error: passwords do not match.');\n process.exit(1);\n }\n\n let wallet: DirectSecp256k1HdWallet;\n try {\n wallet = await DirectSecp256k1HdWallet.fromMnemonic(mnemonic.trim(), {\n prefix,\n });\n } catch (err: unknown) {\n console.error(\n `Invalid mnemonic: ${err instanceof Error ? err.message : String(err)}\\n` +\n 'Please verify your mnemonic phrase has the correct number of words (12, 15, 18, 21, or 24) ' +\n 'and all words are valid BIP-39 words.',\n );\n process.exit(1);\n }\n\n await writeKeyfile(wallet, keyfilePath, password);\n console.error(`Keyfile written to ${keyfilePath}`);\n\n try {\n const accounts = await wallet.getAccounts();\n if (accounts.length > 0) {\n console.error(`Address: ${accounts[0].address}`);\n }\n } catch (err) {\n console.error(\n `Note: could not derive address for display (${err instanceof Error ? err.message : String(err)}), but the keyfile was written successfully.`,\n );\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manifest-network/manifest-mcp-node",
3
- "version": "0.10.0",
3
+ "version": "0.11.0",
4
4
  "description": "Node.js MCP servers for Manifest Network with stdio transport and keyfile wallet",
5
5
  "type": "module",
6
6
  "bin": {
@@ -45,12 +45,12 @@
45
45
  "@cosmjs/amino": "0.32.4",
46
46
  "@cosmjs/encoding": "0.32.4",
47
47
  "@cosmjs/proto-signing": "0.32.4",
48
- "@manifest-network/manifest-mcp-agent": "^0.10.0",
49
- "@manifest-network/manifest-mcp-core": "^0.10.0",
50
- "@manifest-network/manifest-mcp-chain": "^0.10.0",
51
- "@manifest-network/manifest-mcp-lease": "^0.10.0",
52
- "@manifest-network/manifest-mcp-cosmwasm": "^0.10.0",
53
- "@manifest-network/manifest-mcp-fred": "^0.10.0",
48
+ "@manifest-network/manifest-mcp-agent": "^0.11.0",
49
+ "@manifest-network/manifest-mcp-core": "^0.11.0",
50
+ "@manifest-network/manifest-mcp-chain": "^0.11.0",
51
+ "@manifest-network/manifest-mcp-lease": "^0.11.0",
52
+ "@manifest-network/manifest-mcp-cosmwasm": "^0.11.0",
53
+ "@manifest-network/manifest-mcp-fred": "^0.11.0",
54
54
  "@modelcontextprotocol/sdk": "1.27.1",
55
55
  "dotenv": "^17.2.3"
56
56
  },