dero-mcp-server 0.1.0 → 0.1.2

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/dist/server.js CHANGED
@@ -1,11 +1,52 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import { z } from 'zod';
3
3
  import { deroJsonRpc, jsonRpcEndpoint } from './rpc.js';
4
+ import { DERO_DOC_PRODUCTS, getDeroDocPage, listDeroDocs, searchDeroDocs, } from './docs.js';
4
5
  const scRpcArgSchema = z.object({
5
6
  name: z.string(),
6
7
  datatype: z.enum(['S', 'U', 'H']),
7
8
  value: z.union([z.string(), z.number()]),
8
9
  });
10
+ const hex64Schema = z
11
+ .string()
12
+ .regex(/^[0-9a-fA-F]{64}$/, 'Expected 64-character hex string');
13
+ const deroAddressSchema = z
14
+ .string()
15
+ .regex(/^(dero1|deto1)[0-9a-z]+$/i, 'Expected DERO address starting with dero1 or deto1');
16
+ const NAME_REGISTRY_SCID = '0000000000000000000000000000000000000000000000000000000000000001';
17
+ const DERO_TOOL_NAMES = [
18
+ 'dero_daemon_ping',
19
+ 'dero_daemon_echo',
20
+ 'dero_get_info',
21
+ 'dero_get_height',
22
+ 'dero_get_block_count',
23
+ 'dero_get_last_block_header',
24
+ 'dero_get_block',
25
+ 'dero_get_block_header_by_topo_height',
26
+ 'dero_get_block_header_by_hash',
27
+ 'dero_get_tx_pool',
28
+ 'dero_get_random_address',
29
+ 'dero_get_transaction',
30
+ 'dero_get_encrypted_balance',
31
+ 'dero_get_sc',
32
+ 'dero_get_gas_estimate',
33
+ 'dero_name_to_address',
34
+ 'dero_get_block_template',
35
+ 'dero_docs_search',
36
+ 'dero_docs_get_page',
37
+ 'dero_docs_list',
38
+ ];
39
+ const DERO_RESOURCE_URIS = [
40
+ 'dero://mcp/server-info',
41
+ 'dero://mcp/safety-boundary',
42
+ 'dero://mcp/example-flows',
43
+ ];
44
+ const DERO_PROMPT_NAMES = [
45
+ 'network_health_check',
46
+ 'inspect_smart_contract',
47
+ 'trace_transaction',
48
+ ];
49
+ const deroDocProductSchema = z.enum(DERO_DOC_PRODUCTS);
9
50
  function toolText(data) {
10
51
  return {
11
52
  content: [
@@ -16,39 +57,148 @@ function toolText(data) {
16
57
  ],
17
58
  };
18
59
  }
60
+ function classifyToolError(error) {
61
+ const message = error instanceof Error ? error.message : String(error);
62
+ if (message.includes('Provide either hash or height')) {
63
+ return {
64
+ code: 'INVALID_INPUT',
65
+ hint: 'Pass exactly one of "hash" or "height".',
66
+ retryable: false,
67
+ };
68
+ }
69
+ if (message.includes('DERO docs unavailable') ||
70
+ message.includes('bundled docs index is missing')) {
71
+ return {
72
+ code: 'DOCS_UNAVAILABLE',
73
+ hint: 'Bundled docs index is missing from this install. Reinstall dero-mcp-server or set DERO_DOCS_ROOT for local dev override.',
74
+ retryable: false,
75
+ };
76
+ }
77
+ if (message.includes('DERO docs search requires a non-empty query')) {
78
+ return {
79
+ code: 'INVALID_INPUT',
80
+ hint: 'Pass a non-empty "query" string for dero_docs_search.',
81
+ retryable: false,
82
+ };
83
+ }
84
+ if (message.includes('DERO docs get page requires a non-empty slug')) {
85
+ return {
86
+ code: 'INVALID_INPUT',
87
+ hint: 'Pass a non-empty "slug" for dero_docs_get_page.',
88
+ retryable: false,
89
+ };
90
+ }
91
+ if (message.includes('Doc page not found')) {
92
+ return {
93
+ code: 'DOC_NOT_FOUND',
94
+ hint: 'Use dero_docs_search or dero_docs_list to discover valid slugs, then retry.',
95
+ retryable: false,
96
+ };
97
+ }
98
+ if (message.includes('RPC error -32601')) {
99
+ return {
100
+ code: 'RPC_METHOD_NOT_FOUND',
101
+ hint: 'Your daemon may be outdated or not a Stargate endpoint. Verify DERO_DAEMON_URL.',
102
+ retryable: false,
103
+ };
104
+ }
105
+ if (message.includes('RPC error -32602')) {
106
+ return {
107
+ code: 'RPC_INVALID_PARAMS',
108
+ hint: 'Verify argument names and types for this tool.',
109
+ retryable: false,
110
+ };
111
+ }
112
+ const httpMatch = message.match(/HTTP (\d{3})/);
113
+ if (httpMatch) {
114
+ const status = Number(httpMatch[1]);
115
+ return {
116
+ code: 'RPC_HTTP_ERROR',
117
+ hint: status >= 500
118
+ ? 'Daemon is reachable but errored; retry after checking node health.'
119
+ : 'Check DERO_DAEMON_URL and ensure /json_rpc is accessible.',
120
+ retryable: status >= 500,
121
+ };
122
+ }
123
+ if (message.toLowerCase().includes('fetch failed') ||
124
+ message.toLowerCase().includes('network') ||
125
+ message.toLowerCase().includes('econnrefused') ||
126
+ message.toLowerCase().includes('aborted')) {
127
+ return {
128
+ code: 'RPC_UNREACHABLE',
129
+ hint: 'Confirm daemon is running and reachable, then rerun `npm run doctor`.',
130
+ retryable: true,
131
+ };
132
+ }
133
+ if (message.includes('Invalid JSON from node')) {
134
+ return {
135
+ code: 'RPC_INVALID_RESPONSE',
136
+ hint: 'Daemon returned malformed JSON. Check reverse proxies or node health.',
137
+ retryable: true,
138
+ };
139
+ }
140
+ return {
141
+ code: 'TOOL_EXECUTION_ERROR',
142
+ hint: 'Retry once, then inspect daemon logs and tool input values.',
143
+ retryable: false,
144
+ };
145
+ }
146
+ function toolError(tool, error) {
147
+ const structured = classifyToolError(error);
148
+ const raw = error instanceof Error ? error.message : String(error);
149
+ return toolText({
150
+ ok: false,
151
+ tool,
152
+ _meta: {
153
+ error: {
154
+ ...structured,
155
+ raw,
156
+ },
157
+ },
158
+ });
159
+ }
160
+ function withStructuredErrors(tool, handler) {
161
+ return async (args) => {
162
+ try {
163
+ return toolText(await handler(args));
164
+ }
165
+ catch (error) {
166
+ return toolError(tool, error);
167
+ }
168
+ };
169
+ }
19
170
  export function createDeroMcpServer(daemonBaseUrl) {
20
171
  const endpoint = jsonRpcEndpoint(daemonBaseUrl);
21
172
  const rpc = async (method, params) => deroJsonRpc(endpoint, method, params);
22
173
  const server = new McpServer({
23
174
  name: 'dero-daemon-mcp',
24
- version: '0.1.0',
175
+ version: '0.1.2',
25
176
  });
26
177
  server.registerTool('dero_daemon_ping', {
27
178
  description: 'DERO daemon connectivity check. Calls DERO.Ping. No parameters.',
28
- }, async () => toolText(await rpc('DERO.Ping')));
179
+ }, withStructuredErrors('dero_daemon_ping', async () => rpc('DERO.Ping')));
29
180
  server.registerTool('dero_daemon_echo', {
30
181
  description: 'Echo strings through the daemon (DERO.Echo).',
31
182
  inputSchema: {
32
183
  words: z.array(z.string()).describe('Strings to echo back'),
33
184
  },
34
- }, async ({ words }) => toolText(await rpc('DERO.Echo', words)));
185
+ }, withStructuredErrors('dero_daemon_echo', async ({ words }) => rpc('DERO.Echo', words)));
35
186
  server.registerTool('dero_get_info', {
36
187
  description: 'Get daemon / chain info: height, difficulty, version, mempool size, etc. (DERO.GetInfo).',
37
- }, async () => toolText(await rpc('DERO.GetInfo')));
188
+ }, withStructuredErrors('dero_get_info', async () => rpc('DERO.GetInfo')));
38
189
  server.registerTool('dero_get_height', {
39
190
  description: 'Get top block height and stable/topo heights (DERO.GetHeight).',
40
- }, async () => toolText(await rpc('DERO.GetHeight')));
191
+ }, withStructuredErrors('dero_get_height', async () => rpc('DERO.GetHeight')));
41
192
  server.registerTool('dero_get_block_count', {
42
193
  description: 'Total block count (DERO.GetBlockCount).',
43
- }, async () => toolText(await rpc('DERO.GetBlockCount')));
194
+ }, withStructuredErrors('dero_get_block_count', async () => rpc('DERO.GetBlockCount')));
44
195
  server.registerTool('dero_get_last_block_header', {
45
196
  description: 'Header of the tip block (DERO.GetLastBlockHeader).',
46
- }, async () => toolText(await rpc('DERO.GetLastBlockHeader')));
197
+ }, withStructuredErrors('dero_get_last_block_header', async () => rpc('DERO.GetLastBlockHeader')));
47
198
  server.registerTool('dero_get_block', {
48
199
  description: 'Fetch a full block by height or hash (DERO.GetBlock). Provide one of hash or height.',
49
200
  inputSchema: {
50
- hash: z
51
- .string()
201
+ hash: hex64Schema
52
202
  .optional()
53
203
  .describe('64-char hex block hash'),
54
204
  height: z
@@ -58,7 +208,7 @@ export function createDeroMcpServer(daemonBaseUrl) {
58
208
  .optional()
59
209
  .describe('Block height'),
60
210
  },
61
- }, async (args) => {
211
+ }, withStructuredErrors('dero_get_block', async (args) => {
62
212
  if (!args.hash && args.height === undefined) {
63
213
  throw new Error('Provide either hash or height');
64
214
  }
@@ -67,8 +217,8 @@ export function createDeroMcpServer(daemonBaseUrl) {
67
217
  params.hash = args.hash;
68
218
  if (args.height !== undefined)
69
219
  params.height = args.height;
70
- return toolText(await rpc('DERO.GetBlock', params));
71
- });
220
+ return rpc('DERO.GetBlock', params);
221
+ }));
72
222
  server.registerTool('dero_get_block_header_by_topo_height', {
73
223
  description: 'Block header by topological height (DERO.GetBlockHeaderByTopoHeight).',
74
224
  inputSchema: {
@@ -78,30 +228,29 @@ export function createDeroMcpServer(daemonBaseUrl) {
78
228
  .nonnegative()
79
229
  .describe('Topological height'),
80
230
  },
81
- }, async ({ topoheight }) => toolText(await rpc('DERO.GetBlockHeaderByTopoHeight', { topoheight })));
231
+ }, withStructuredErrors('dero_get_block_header_by_topo_height', async ({ topoheight }) => rpc('DERO.GetBlockHeaderByTopoHeight', { topoheight })));
82
232
  server.registerTool('dero_get_block_header_by_hash', {
83
233
  description: 'Block header by hash (DERO.GetBlockHeaderByHash).',
84
234
  inputSchema: {
85
- hash: z.string().describe('Block top hash (hex)'),
235
+ hash: hex64Schema.describe('Block top hash (hex)'),
86
236
  },
87
- }, async ({ hash }) => toolText(await rpc('DERO.GetBlockHeaderByHash', { hash })));
237
+ }, withStructuredErrors('dero_get_block_header_by_hash', async ({ hash }) => rpc('DERO.GetBlockHeaderByHash', { hash })));
88
238
  server.registerTool('dero_get_tx_pool', {
89
239
  description: 'Pending mempool transaction hashes (DERO.GetTxPool).',
90
- }, async () => toolText(await rpc('DERO.GetTxPool')));
240
+ }, withStructuredErrors('dero_get_tx_pool', async () => rpc('DERO.GetTxPool')));
91
241
  server.registerTool('dero_get_random_address', {
92
242
  description: 'Random registered addresses from chain (for ring construction); optional asset scid (DERO.GetRandomAddress).',
93
243
  inputSchema: {
94
- scid: z
95
- .string()
244
+ scid: hex64Schema
96
245
  .optional()
97
246
  .describe('Optional asset smart-contract id (hex)'),
98
247
  },
99
- }, async (args) => toolText(await rpc('DERO.GetRandomAddress', args.scid != null ? { scid: args.scid } : undefined)));
248
+ }, withStructuredErrors('dero_get_random_address', async (args) => rpc('DERO.GetRandomAddress', args.scid != null ? { scid: args.scid } : undefined)));
100
249
  server.registerTool('dero_get_transaction', {
101
250
  description: 'Fetch transactions by tx hashes (DERO.GetTransaction).',
102
251
  inputSchema: {
103
252
  txs_hashes: z
104
- .array(z.string())
253
+ .array(hex64Schema)
105
254
  .min(1)
106
255
  .describe('List of transaction hashes (hex)'),
107
256
  decode_as_json: z
@@ -110,32 +259,32 @@ export function createDeroMcpServer(daemonBaseUrl) {
110
259
  .optional()
111
260
  .describe('Optional: decode each tx as JSON when non-zero'),
112
261
  },
113
- }, async ({ txs_hashes, decode_as_json }) => {
262
+ }, withStructuredErrors('dero_get_transaction', async ({ txs_hashes, decode_as_json }) => {
114
263
  const params = { txs_hashes };
115
264
  if (decode_as_json !== undefined)
116
265
  params.decode_as_json = decode_as_json;
117
- return toolText(await rpc('DERO.GetTransaction', params));
118
- });
266
+ return rpc('DERO.GetTransaction', params);
267
+ }));
119
268
  server.registerTool('dero_get_encrypted_balance', {
120
269
  description: 'Encrypted balance blob for an address at a topo height (DERO.GetEncryptedBalance). Not cleartext balance.',
121
270
  inputSchema: {
122
- address: z.string().describe('DERO address (deto1…)'),
271
+ address: deroAddressSchema.describe('DERO address (dero1… or deto1…)'),
123
272
  topoheight: z
124
273
  .number()
125
274
  .int()
126
275
  .describe('Use -1 for latest chain tip'),
127
- scid: z.string().optional().describe('Asset SCID hex; omit for native DERO'),
276
+ scid: hex64Schema.optional().describe('Asset SCID hex; omit for native DERO'),
128
277
  },
129
- }, async ({ address, topoheight, scid }) => {
278
+ }, withStructuredErrors('dero_get_encrypted_balance', async ({ address, topoheight, scid }) => {
130
279
  const params = { address, topoheight };
131
280
  if (scid)
132
281
  params.scid = scid;
133
- return toolText(await rpc('DERO.GetEncryptedBalance', params));
134
- });
282
+ return rpc('DERO.GetEncryptedBalance', params);
283
+ }));
135
284
  server.registerTool('dero_get_sc', {
136
285
  description: 'Read smart contract code and/or variables by SCID (DERO.GetSC).',
137
286
  inputSchema: {
138
- scid: z.string().describe('64-char hex Smart Contract ID'),
287
+ scid: hex64Schema.describe('64-char hex Smart Contract ID'),
139
288
  code: z
140
289
  .boolean()
141
290
  .optional()
@@ -150,7 +299,7 @@ export function createDeroMcpServer(daemonBaseUrl) {
150
299
  .optional()
151
300
  .describe('Topo height; omit or use -1 for latest'),
152
301
  },
153
- }, async ({ scid, code, variables, topoheight }) => {
302
+ }, withStructuredErrors('dero_get_sc', async ({ scid, code, variables, topoheight }) => {
154
303
  const params = {
155
304
  scid,
156
305
  code: code ?? true,
@@ -158,8 +307,8 @@ export function createDeroMcpServer(daemonBaseUrl) {
158
307
  };
159
308
  if (topoheight !== undefined)
160
309
  params.topoheight = topoheight;
161
- return toolText(await rpc('DERO.GetSC', params));
162
- });
310
+ return rpc('DERO.GetSC', params);
311
+ }));
163
312
  server.registerTool('dero_get_gas_estimate', {
164
313
  description: 'Estimate gas (compute + storage) for transfers, deploy, or SC call (DERO.GetGasEstimate).',
165
314
  inputSchema: {
@@ -177,7 +326,7 @@ export function createDeroMcpServer(daemonBaseUrl) {
177
326
  .optional()
178
327
  .describe('Signer address used for estimation'),
179
328
  },
180
- }, async (args) => {
329
+ }, withStructuredErrors('dero_get_gas_estimate', async (args) => {
181
330
  const params = {};
182
331
  if (args.transfers)
183
332
  params.transfers = args.transfers;
@@ -187,36 +336,235 @@ export function createDeroMcpServer(daemonBaseUrl) {
187
336
  params.sc_rpc = args.sc_rpc;
188
337
  if (args.signer)
189
338
  params.signer = args.signer;
190
- return toolText(await rpc('DERO.GetGasEstimate', params));
191
- });
339
+ return rpc('DERO.GetGasEstimate', params);
340
+ }));
192
341
  server.registerTool('dero_name_to_address', {
193
342
  description: 'Resolve a DERO on-chain name to address (DERO.NameToAddress).',
194
343
  inputSchema: {
195
- name: z.string().describe('Registered name'),
344
+ name: z.string().min(1).describe('Registered name'),
196
345
  topoheight: z
197
346
  .number()
198
347
  .int()
199
348
  .describe('Use -1 for latest'),
200
349
  },
201
- }, async ({ name, topoheight }) => toolText(await rpc('DERO.NameToAddress', { name, topoheight })));
350
+ }, withStructuredErrors('dero_name_to_address', async ({ name, topoheight }) => rpc('DERO.NameToAddress', { name, topoheight })));
202
351
  server.registerTool('dero_get_block_template', {
203
352
  description: 'Mining: get block template for a miner address (DERO.GetBlockTemplate).',
204
353
  inputSchema: {
205
- wallet_address: z.string().describe('Miner payout DERO address'),
354
+ wallet_address: deroAddressSchema.describe('Miner payout DERO address'),
206
355
  block: z
207
356
  .boolean()
208
357
  .optional()
209
358
  .describe('Include block blob'),
210
359
  miner: z.string().optional().describe('Optional miner id / label'),
211
360
  },
212
- }, async ({ wallet_address, block, miner }) => {
361
+ }, withStructuredErrors('dero_get_block_template', async ({ wallet_address, block, miner }) => {
213
362
  const params = { wallet_address };
214
363
  if (block !== undefined)
215
364
  params.block = block;
216
365
  if (miner)
217
366
  params.miner = miner;
218
- return toolText(await rpc('DERO.GetBlockTemplate', params));
219
- });
367
+ return rpc('DERO.GetBlockTemplate', params);
368
+ }));
369
+ server.registerTool('dero_docs_search', {
370
+ description: 'Search bundled DERO documentation (derod/tela/hologram/deropay). Ships with npm package; optional DERO_DOCS_ROOT overrides for local dev.',
371
+ inputSchema: {
372
+ query: z
373
+ .string()
374
+ .min(1)
375
+ .describe('Search text (e.g., "wallet rpc", "tela deployment", "deropay webhooks")'),
376
+ product: deroDocProductSchema
377
+ .optional()
378
+ .describe('Optional docs product filter: derod | tela | hologram | deropay'),
379
+ section: z
380
+ .string()
381
+ .optional()
382
+ .describe('Optional section slug prefix (e.g., "rpc-api", "guides", "dero-pay")'),
383
+ limit: z
384
+ .number()
385
+ .int()
386
+ .min(1)
387
+ .max(25)
388
+ .optional()
389
+ .describe('Max matches (default 8, max 25)'),
390
+ },
391
+ }, withStructuredErrors('dero_docs_search', async ({ query, product, section, limit }) => searchDeroDocs({ query, product, section, limit })));
392
+ server.registerTool('dero_docs_get_page', {
393
+ description: 'Get one docs page by slug (optionally scoped by product). Returns headings and normalized plain-text content.',
394
+ inputSchema: {
395
+ slug: z
396
+ .string()
397
+ .min(1)
398
+ .describe('Doc slug relative to pages/ (e.g., "rpc-api/daemon-rpc-api", "tutorials/first-app", "dero-pay/quick-start")'),
399
+ product: deroDocProductSchema
400
+ .optional()
401
+ .describe('Optional product scope to disambiguate duplicate slugs'),
402
+ },
403
+ }, withStructuredErrors('dero_docs_get_page', async ({ slug, product }) => getDeroDocPage({ slug, product })));
404
+ server.registerTool('dero_docs_list', {
405
+ description: 'List indexed docs pages across derod/tela/hologram/deropay with slugs and canonical URLs.',
406
+ inputSchema: {
407
+ product: deroDocProductSchema
408
+ .optional()
409
+ .describe('Optional docs product filter: derod | tela | hologram | deropay'),
410
+ limit: z
411
+ .number()
412
+ .int()
413
+ .min(1)
414
+ .max(500)
415
+ .optional()
416
+ .describe('Max pages returned (default 120, max 500)'),
417
+ },
418
+ }, withStructuredErrors('dero_docs_list', async ({ product, limit }) => {
419
+ const docsIndex = await listDeroDocs(product);
420
+ const capped = Math.max(1, Math.min(limit ?? 120, 500));
421
+ return {
422
+ ...docsIndex,
423
+ returned: Math.min(capped, docsIndex.pages.length),
424
+ pages: docsIndex.pages.slice(0, capped),
425
+ };
426
+ }));
427
+ server.registerResource('dero_mcp_server_info', 'dero://mcp/server-info', {
428
+ description: 'Server metadata, tool list, resource list, and prompt names.',
429
+ mimeType: 'application/json',
430
+ }, async (uri) => ({
431
+ contents: [
432
+ {
433
+ uri: uri.toString(),
434
+ mimeType: 'application/json',
435
+ text: JSON.stringify({
436
+ name: 'dero-daemon-mcp',
437
+ version: '0.1.2',
438
+ mode: 'read-only',
439
+ endpoint: endpoint,
440
+ docs_products: DERO_DOC_PRODUCTS,
441
+ docs_delivery: 'bundled-index',
442
+ docs_dev_override_env: 'DERO_DOCS_ROOT',
443
+ tools: DERO_TOOL_NAMES,
444
+ resources: DERO_RESOURCE_URIS,
445
+ prompts: DERO_PROMPT_NAMES,
446
+ }, null, 2),
447
+ },
448
+ ],
449
+ }));
450
+ server.registerResource('dero_mcp_safety_boundary', 'dero://mcp/safety-boundary', {
451
+ description: 'Explicit read-only safety boundaries and escalation guidance for write actions.',
452
+ mimeType: 'application/json',
453
+ }, async (uri) => ({
454
+ contents: [
455
+ {
456
+ uri: uri.toString(),
457
+ mimeType: 'application/json',
458
+ text: JSON.stringify({
459
+ read_only: true,
460
+ excluded_methods: [
461
+ 'transfer',
462
+ 'scinvoke',
463
+ 'DERO.SendRawTransaction',
464
+ 'DERO.SubmitBlock',
465
+ ],
466
+ reasoning: 'These methods can move funds or mutate chain state.',
467
+ write_path: [
468
+ 'Use wallet RPC tooling (curl/XSWD/Engram) for writes.',
469
+ 'Use dero-mcp-server for live chain reads and analysis.',
470
+ ],
471
+ }, null, 2),
472
+ },
473
+ ],
474
+ }));
475
+ server.registerResource('dero_mcp_example_flows', 'dero://mcp/example-flows', {
476
+ description: 'Compact agent flow recipes for common DERO investigations.',
477
+ mimeType: 'text/markdown',
478
+ }, async (uri) => ({
479
+ contents: [
480
+ {
481
+ uri: uri.toString(),
482
+ mimeType: 'text/markdown',
483
+ text: [
484
+ '# DERO MCP Example Flows',
485
+ '',
486
+ '- Network health: `dero_daemon_ping` -> `dero_get_info` -> `dero_get_height`',
487
+ `- Inspect SC state: \`dero_get_sc\` with SCID (name registry: \`${NAME_REGISTRY_SCID}\`)`,
488
+ '- Trace transaction: `dero_get_transaction` with `decode_as_json: 1`',
489
+ '- Read-only boundary: no wallet writes or raw tx submission',
490
+ ].join('\n'),
491
+ },
492
+ ],
493
+ }));
494
+ server.registerPrompt('network_health_check', {
495
+ description: 'Guide the model through a DERO daemon sync and health check sequence.',
496
+ argsSchema: {
497
+ reference_topoheight: z
498
+ .number()
499
+ .int()
500
+ .positive()
501
+ .optional(),
502
+ },
503
+ }, async ({ reference_topoheight }) => ({
504
+ description: 'Prompt for sync health investigation.',
505
+ messages: [
506
+ {
507
+ role: 'user',
508
+ content: {
509
+ type: 'text',
510
+ text: [
511
+ 'Check DERO daemon health using MCP tools.',
512
+ '1) Call dero_daemon_ping.',
513
+ '2) Call dero_get_info and dero_get_height.',
514
+ '3) Report topoheight, stableheight, version, and network.',
515
+ reference_topoheight
516
+ ? `4) Compare topoheight against reference_topoheight=${reference_topoheight}.`
517
+ : '4) If no reference topoheight is provided, state that external comparison is still needed for final sync confidence.',
518
+ ].join('\n'),
519
+ },
520
+ },
521
+ ],
522
+ }));
523
+ server.registerPrompt('inspect_smart_contract', {
524
+ description: 'Inspect contract code/variables and explain likely state model.',
525
+ argsSchema: {
526
+ scid: hex64Schema,
527
+ },
528
+ }, async ({ scid }) => ({
529
+ description: 'Prompt for smart contract inspection.',
530
+ messages: [
531
+ {
532
+ role: 'user',
533
+ content: {
534
+ type: 'text',
535
+ text: [
536
+ `Inspect DERO smart contract ${scid}.`,
537
+ '1) Call dero_get_sc with variables=true and code=true.',
538
+ '2) Summarize key stringkeys and balances.',
539
+ '3) Explain likely data model and any assumptions.',
540
+ '4) Include topoheight context from response.',
541
+ ].join('\n'),
542
+ },
543
+ },
544
+ ],
545
+ }));
546
+ server.registerPrompt('trace_transaction', {
547
+ description: 'Trace one transaction and summarize confirmation + SC activity.',
548
+ argsSchema: {
549
+ tx_hash: hex64Schema,
550
+ },
551
+ }, async ({ tx_hash }) => ({
552
+ description: 'Prompt for transaction tracing.',
553
+ messages: [
554
+ {
555
+ role: 'user',
556
+ content: {
557
+ type: 'text',
558
+ text: [
559
+ `Trace DERO transaction ${tx_hash}.`,
560
+ '1) Call dero_get_transaction with txs_hashes=[tx_hash] and decode_as_json=1.',
561
+ '2) Summarize confirmation status, block height, transfers, and SC invokes.',
562
+ '3) If not confirmed, mention mempool status uncertainty and next check timing.',
563
+ ].join('\n'),
564
+ },
565
+ },
566
+ ],
567
+ }));
220
568
  return server;
221
569
  }
222
570
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "dero-mcp-server",
3
- "version": "0.1.0",
4
- "description": "Model Context Protocol (MCP) server exposing DERO Stargate daemon JSON-RPC to Claude and other MCP clients",
3
+ "mcpName": "io.github.DHEBP/dero-mcp-server",
4
+ "version": "0.1.2",
5
+ "description": "Model Context Protocol (MCP) server exposing DERO Stargate daemon JSON-RPC and bundled documentation to Claude and other MCP clients",
5
6
  "type": "module",
6
7
  "license": "MIT",
7
8
  "engines": {
@@ -11,11 +12,23 @@
11
12
  "bin": {
12
13
  "dero-mcp-server": "./dist/index.js"
13
14
  },
15
+ "files": [
16
+ "dist",
17
+ "data",
18
+ "README.md",
19
+ "LICENSE"
20
+ ],
14
21
  "scripts": {
15
22
  "build": "tsc",
23
+ "build:docs": "npx tsx scripts/build-docs-index.ts",
16
24
  "start": "node dist/index.js",
17
25
  "dev": "node --import tsx src/index.ts",
18
- "prepack": "npm run build"
26
+ "prepack": "npm run build:docs && npm run build",
27
+ "doctor": "./scripts/doctor.sh",
28
+ "smoke:mcp": "npx tsx scripts/mcp-smoke-probes.ts",
29
+ "smoke:docs": "npx tsx scripts/docs-smoke-probes.ts",
30
+ "test:flows": "npx tsx scripts/flow-test.ts",
31
+ "typecheck": "tsc --noEmit"
19
32
  },
20
33
  "dependencies": {
21
34
  "@modelcontextprotocol/sdk": "^1.29.0",