web3-tools-mcp 1.1.0 → 1.2.1

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.
Files changed (68) hide show
  1. package/README.md +28 -4
  2. package/dist/package.json +8 -5
  3. package/dist/src/tools/ens.d.ts +119 -0
  4. package/dist/src/tools/ens.d.ts.map +1 -0
  5. package/dist/src/tools/ens.js +425 -0
  6. package/dist/src/tools/ens.js.map +1 -0
  7. package/dist/src/tools/index.d.ts.map +1 -1
  8. package/dist/src/tools/index.js +3 -1
  9. package/dist/src/tools/index.js.map +1 -1
  10. package/dist/test/tools/ens.test.d.ts +2 -0
  11. package/dist/test/tools/ens.test.d.ts.map +1 -0
  12. package/dist/test/tools/ens.test.js +236 -0
  13. package/dist/test/tools/ens.test.js.map +1 -0
  14. package/package.json +8 -5
  15. package/src/tools/ens.ts +493 -0
  16. package/src/tools/index.ts +3 -1
  17. package/dist/client.d.ts +0 -1653
  18. package/dist/client.d.ts.map +0 -1
  19. package/dist/client.js +0 -142
  20. package/dist/client.js.map +0 -1
  21. package/dist/index.d.ts +0 -3
  22. package/dist/index.d.ts.map +0 -1
  23. package/dist/index.js +0 -88
  24. package/dist/index.js.map +0 -1
  25. package/dist/test/mcp-client.test.d.ts +0 -2
  26. package/dist/test/mcp-client.test.d.ts.map +0 -1
  27. package/dist/test/mcp-client.test.js +0 -376
  28. package/dist/test/mcp-client.test.js.map +0 -1
  29. package/dist/tools/advanced.d.ts +0 -75
  30. package/dist/tools/advanced.d.ts.map +0 -1
  31. package/dist/tools/advanced.js +0 -234
  32. package/dist/tools/advanced.js.map +0 -1
  33. package/dist/tools/balance.d.ts +0 -55
  34. package/dist/tools/balance.d.ts.map +0 -1
  35. package/dist/tools/balance.js +0 -146
  36. package/dist/tools/balance.js.map +0 -1
  37. package/dist/tools/batch.d.ts +0 -122
  38. package/dist/tools/batch.d.ts.map +0 -1
  39. package/dist/tools/batch.js +0 -243
  40. package/dist/tools/batch.js.map +0 -1
  41. package/dist/tools/contract-info.d.ts +0 -79
  42. package/dist/tools/contract-info.d.ts.map +0 -1
  43. package/dist/tools/contract-info.js +0 -450
  44. package/dist/tools/contract-info.js.map +0 -1
  45. package/dist/tools/contract.d.ts +0 -79
  46. package/dist/tools/contract.d.ts.map +0 -1
  47. package/dist/tools/contract.js +0 -140
  48. package/dist/tools/contract.js.map +0 -1
  49. package/dist/tools/index.d.ts +0 -3
  50. package/dist/tools/index.d.ts.map +0 -1
  51. package/dist/tools/index.js +0 -27
  52. package/dist/tools/index.js.map +0 -1
  53. package/dist/tools/logs.d.ts +0 -39
  54. package/dist/tools/logs.d.ts.map +0 -1
  55. package/dist/tools/logs.js +0 -231
  56. package/dist/tools/logs.js.map +0 -1
  57. package/dist/tools/signatures.d.ts +0 -83
  58. package/dist/tools/signatures.d.ts.map +0 -1
  59. package/dist/tools/signatures.js +0 -93
  60. package/dist/tools/signatures.js.map +0 -1
  61. package/dist/types.d.ts +0 -22
  62. package/dist/types.d.ts.map +0 -1
  63. package/dist/types.js +0 -2
  64. package/dist/types.js.map +0 -1
  65. package/dist/utils.d.ts +0 -22
  66. package/dist/utils.d.ts.map +0 -1
  67. package/dist/utils.js +0 -183
  68. package/dist/utils.js.map +0 -1
@@ -2,6 +2,7 @@ import advancedTools from './advanced.js';
2
2
  import balanceTools from './balance.js';
3
3
  import contractTools from './contract.js';
4
4
  import contractInfoTools from './contract-info.js';
5
+ import ensTools from './ens.js';
5
6
  import logTools from './logs.js';
6
7
  import signatureTools from './signatures.js';
7
8
  const allToolDefinitions = {
@@ -10,7 +11,8 @@ const allToolDefinitions = {
10
11
  ...contractInfoTools,
11
12
  ...balanceTools,
12
13
  ...logTools,
13
- ...advancedTools
14
+ ...advancedTools,
15
+ ...ensTools
14
16
  };
15
17
  // Register all tools with the MCP server
16
18
  export function registerAllTools(server) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAGA,OAAO,aAAa,MAAM,eAAe,CAAA;AACzC,OAAO,YAAY,MAAM,cAAc,CAAA;AACvC,OAAO,aAAa,MAAM,eAAe,CAAA;AACzC,OAAO,iBAAiB,MAAM,oBAAoB,CAAA;AAClD,OAAO,QAAQ,MAAM,WAAW,CAAA;AAChC,OAAO,cAAc,MAAM,iBAAiB,CAAA;AAE5C,MAAM,kBAAkB,GAAG;IACzB,GAAG,cAAc;IACjB,GAAG,aAAa;IAChB,GAAG,iBAAiB;IACpB,GAAG,YAAY;IACf,GAAG,QAAQ;IACX,GAAG,aAAa;CACR,CAAA;AAEV,yCAAyC;AACzC,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QAC1D,MAAM,CAAC,YAAY,CACjB,IAAI,EACJ;YACE,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;SAC/B,EACD,KAAK,EAAE,IAAS,EAAE,MAA8D,EAAE,EAAE;YAClF,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACjC,CAAC,CACF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAGA,OAAO,aAAa,MAAM,eAAe,CAAA;AACzC,OAAO,YAAY,MAAM,cAAc,CAAA;AACvC,OAAO,aAAa,MAAM,eAAe,CAAA;AACzC,OAAO,iBAAiB,MAAM,oBAAoB,CAAA;AAClD,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,QAAQ,MAAM,WAAW,CAAA;AAChC,OAAO,cAAc,MAAM,iBAAiB,CAAA;AAE5C,MAAM,kBAAkB,GAAG;IACzB,GAAG,cAAc;IACjB,GAAG,aAAa;IAChB,GAAG,iBAAiB;IACpB,GAAG,YAAY;IACf,GAAG,QAAQ;IACX,GAAG,aAAa;IAChB,GAAG,QAAQ;CACH,CAAA;AAEV,yCAAyC;AACzC,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QAC1D,MAAM,CAAC,YAAY,CACjB,IAAI,EACJ;YACE,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;SAC/B,EACD,KAAK,EAAE,IAAS,EAAE,MAA8D,EAAE,EAAE;YAClF,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACjC,CAAC,CACF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ens.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ens.test.d.ts","sourceRoot":"","sources":["../../../test/tools/ens.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,236 @@
1
+ import { describe, it, expect, beforeAll } from 'vitest';
2
+ import { config } from 'dotenv';
3
+ import { initializeClientManager } from '../../src/client.js';
4
+ import ensTools from '../../src/tools/ens.js';
5
+ // Load environment variables
6
+ config();
7
+ describe('ENS Tools', () => {
8
+ beforeAll(() => {
9
+ // Initialize client manager with config
10
+ initializeClientManager({
11
+ alchemyApiKey: process.env.ALCHEMY_API_KEY,
12
+ infuraApiKey: process.env.INFURA_API_KEY,
13
+ etherscanApiKey: process.env.ETHERSCAN_API_KEY,
14
+ hypersyncApiKey: process.env.HYPERSYNC_API_KEY
15
+ });
16
+ });
17
+ describe('resolve_ens_name', () => {
18
+ it('should resolve vitalik.eth to an address', async () => {
19
+ const result = await ensTools.resolve_ens_name.handler({
20
+ chain: 'mainnet',
21
+ name: 'vitalik.eth'
22
+ });
23
+ const data = JSON.parse(result.content[0].text);
24
+ expect(data.success).toBe(true);
25
+ expect(data.name).toBe('vitalik.eth');
26
+ expect(data.address).toBeTruthy();
27
+ expect(data.address).toMatch(/^0x[a-fA-F0-9]{40}$/);
28
+ }, 30000);
29
+ it('should return null for non-existent ENS name', async () => {
30
+ const result = await ensTools.resolve_ens_name.handler({
31
+ chain: 'mainnet',
32
+ name: 'this-name-definitely-does-not-exist-12345.eth'
33
+ });
34
+ const data = JSON.parse(result.content[0].text);
35
+ expect(data.success).toBe(false);
36
+ expect(data.address).toBeNull();
37
+ }, 30000);
38
+ });
39
+ describe('reverse_resolve_ens', () => {
40
+ it('should reverse resolve vitalik.eth address to name', async () => {
41
+ // First resolve vitalik.eth to get the address
42
+ const resolveResult = await ensTools.resolve_ens_name.handler({
43
+ chain: 'mainnet',
44
+ name: 'vitalik.eth'
45
+ });
46
+ const resolveData = JSON.parse(resolveResult.content[0].text);
47
+ const address = resolveData.address;
48
+ // Then reverse resolve
49
+ const result = await ensTools.reverse_resolve_ens.handler({
50
+ chain: 'mainnet',
51
+ address
52
+ });
53
+ const data = JSON.parse(result.content[0].text);
54
+ expect(data.success).toBe(true);
55
+ expect(data.address).toBe(address);
56
+ expect(data.name).toBeTruthy();
57
+ }, 30000);
58
+ it('should return null for address without reverse record', async () => {
59
+ const result = await ensTools.reverse_resolve_ens.handler({
60
+ chain: 'mainnet',
61
+ address: '0x0000000000000000000000000000000000000001'
62
+ });
63
+ const data = JSON.parse(result.content[0].text);
64
+ expect(data.success).toBe(false);
65
+ expect(data.name).toBeNull();
66
+ }, 30000);
67
+ });
68
+ describe('get_ens_text_record', () => {
69
+ it('should get text record from ENS name', async () => {
70
+ const result = await ensTools.get_ens_text_record.handler({
71
+ chain: 'mainnet',
72
+ name: 'vitalik.eth',
73
+ key: 'url'
74
+ });
75
+ const data = JSON.parse(result.content[0].text);
76
+ // vitalik.eth may or may not have a url record, so we just check the structure
77
+ expect(data).toHaveProperty('success');
78
+ expect(data.name).toBe('vitalik.eth');
79
+ expect(data.key).toBe('url');
80
+ }, 30000);
81
+ });
82
+ describe('get_ens_avatar', () => {
83
+ it('should get avatar from ENS name with avatar set', async () => {
84
+ const result = await ensTools.get_ens_avatar.handler({
85
+ chain: 'mainnet',
86
+ name: 'vitalik.eth'
87
+ });
88
+ const data = JSON.parse(result.content[0].text);
89
+ expect(data).toHaveProperty('success');
90
+ expect(data.name).toBe('vitalik.eth');
91
+ // Avatar may or may not be set
92
+ if (data.success) {
93
+ expect(data.avatar).toBeTruthy();
94
+ }
95
+ }, 30000);
96
+ });
97
+ describe('batch_resolve_ens_names', () => {
98
+ it('should batch resolve multiple ENS names', async () => {
99
+ const result = await ensTools.batch_resolve_ens_names.handler({
100
+ chain: 'mainnet',
101
+ names: ['vitalik.eth', 'nick.eth', 'nonexistent12345.eth']
102
+ });
103
+ const data = JSON.parse(result.content[0].text);
104
+ expect(data.success).toBe(true);
105
+ expect(data.totalNames).toBe(3);
106
+ expect(data.results).toHaveLength(3);
107
+ expect(data.successfulResolves).toBeGreaterThan(0);
108
+ // Check that vitalik.eth resolved successfully
109
+ const vitalikResult = data.results.find((r) => r.name === 'vitalik.eth');
110
+ expect(vitalikResult).toBeTruthy();
111
+ expect(vitalikResult.success).toBe(true);
112
+ expect(vitalikResult.address).toBeTruthy();
113
+ }, 30000);
114
+ });
115
+ // Base ENS Tests
116
+ describe('Base ENS Support', () => {
117
+ const BASE_TEST_NAME = 'ben👾the👾dev.base.eth';
118
+ const BASE_TEST_ADDRESS = '0xc880e213f2aB4BAe36C8bF19a6Df6757152242c0';
119
+ describe('resolve_ens_name on Base', () => {
120
+ it('should resolve Base ENS name to address', async () => {
121
+ const result = await ensTools.resolve_ens_name.handler({
122
+ chain: 'base',
123
+ name: BASE_TEST_NAME
124
+ });
125
+ const data = JSON.parse(result.content[0].text);
126
+ expect(data.success).toBe(true);
127
+ expect(data.name).toBe(BASE_TEST_NAME);
128
+ expect(data.address).toBe(BASE_TEST_ADDRESS);
129
+ expect(data.chain).toBe('base');
130
+ }, 30000);
131
+ it('should return null for non-existent Base ENS name', async () => {
132
+ const result = await ensTools.resolve_ens_name.handler({
133
+ chain: 'base',
134
+ name: 'this-definitely-does-not-exist-12345.base.eth'
135
+ });
136
+ const data = JSON.parse(result.content[0].text);
137
+ expect(data.success).toBe(false);
138
+ expect(data.address).toBeNull();
139
+ }, 30000);
140
+ });
141
+ describe('reverse_resolve_ens on Base', () => {
142
+ it('should reverse resolve Base address to ENS name', async () => {
143
+ const result = await ensTools.reverse_resolve_ens.handler({
144
+ chain: 'base',
145
+ address: BASE_TEST_ADDRESS
146
+ });
147
+ const data = JSON.parse(result.content[0].text);
148
+ expect(data.success).toBe(true);
149
+ expect(data.address).toBe(BASE_TEST_ADDRESS);
150
+ expect(data.name).toBe(BASE_TEST_NAME);
151
+ expect(data.chain).toBe('base');
152
+ }, 30000);
153
+ it('should return null for Base address without reverse record', async () => {
154
+ const result = await ensTools.reverse_resolve_ens.handler({
155
+ chain: 'base',
156
+ address: '0x0000000000000000000000000000000000000001'
157
+ });
158
+ const data = JSON.parse(result.content[0].text);
159
+ expect(data.success).toBe(false);
160
+ expect(data.name).toBeNull();
161
+ }, 30000);
162
+ });
163
+ describe('get_ens_text_record on Base', () => {
164
+ it('should get twitter text record from Base ENS name', async () => {
165
+ const result = await ensTools.get_ens_text_record.handler({
166
+ chain: 'base',
167
+ name: BASE_TEST_NAME,
168
+ key: 'com.twitter'
169
+ });
170
+ const data = JSON.parse(result.content[0].text);
171
+ expect(data.success).toBe(true);
172
+ expect(data.name).toBe(BASE_TEST_NAME);
173
+ expect(data.key).toBe('com.twitter');
174
+ expect(data.value).toBe('hajnalben');
175
+ expect(data.chain).toBe('base');
176
+ }, 30000);
177
+ it('should get location text record from Base ENS name', async () => {
178
+ const result = await ensTools.get_ens_text_record.handler({
179
+ chain: 'base',
180
+ name: BASE_TEST_NAME,
181
+ key: 'location'
182
+ });
183
+ const data = JSON.parse(result.content[0].text);
184
+ expect(data.success).toBe(true);
185
+ expect(data.value).toBe('Budapest, Hungary');
186
+ }, 30000);
187
+ it('should return null for non-existent text record on Base', async () => {
188
+ const result = await ensTools.get_ens_text_record.handler({
189
+ chain: 'base',
190
+ name: BASE_TEST_NAME,
191
+ key: 'nonexistent-key-12345'
192
+ });
193
+ const data = JSON.parse(result.content[0].text);
194
+ expect(data.success).toBe(false);
195
+ expect(data.value).toBeNull();
196
+ }, 30000);
197
+ });
198
+ describe('get_ens_avatar on Base', () => {
199
+ it('should get avatar from Base ENS name', async () => {
200
+ const result = await ensTools.get_ens_avatar.handler({
201
+ chain: 'base',
202
+ name: BASE_TEST_NAME
203
+ });
204
+ const data = JSON.parse(result.content[0].text);
205
+ expect(data.success).toBe(true);
206
+ expect(data.name).toBe(BASE_TEST_NAME);
207
+ expect(data.avatar).toBeTruthy();
208
+ expect(data.avatar).toContain('ipfs://');
209
+ expect(data.chain).toBe('base');
210
+ }, 30000);
211
+ });
212
+ describe('batch_resolve_ens_names on Base', () => {
213
+ it('should batch resolve multiple Base ENS names', async () => {
214
+ const result = await ensTools.batch_resolve_ens_names.handler({
215
+ chain: 'base',
216
+ names: [BASE_TEST_NAME, 'nonexistent12345.base.eth']
217
+ });
218
+ const data = JSON.parse(result.content[0].text);
219
+ expect(data.success).toBe(true);
220
+ expect(data.chain).toBe('base');
221
+ expect(data.totalNames).toBe(2);
222
+ expect(data.results).toHaveLength(2);
223
+ // Check that our test name resolved successfully
224
+ const testResult = data.results.find((r) => r.name === BASE_TEST_NAME);
225
+ expect(testResult).toBeTruthy();
226
+ expect(testResult.success).toBe(true);
227
+ expect(testResult.address).toBe(BASE_TEST_ADDRESS);
228
+ // Check that non-existent name failed
229
+ const nonExistentResult = data.results.find((r) => r.name === 'nonexistent12345.base.eth');
230
+ expect(nonExistentResult).toBeTruthy();
231
+ expect(nonExistentResult.success).toBe(false);
232
+ }, 30000);
233
+ });
234
+ });
235
+ });
236
+ //# sourceMappingURL=ens.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ens.test.js","sourceRoot":"","sources":["../../../test/tools/ens.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "web3-tools-mcp",
3
- "version": "1.1.0",
3
+ "version": "1.2.1",
4
4
  "description": "Model Context Protocol server for blockchain interactions using viem, Etherscan, and Hypersync",
5
5
  "type": "module",
6
- "main": "dist/index.js",
7
- "types": "dist/index.d.ts",
6
+ "main": "dist/src/index.js",
7
+ "types": "dist/src/index.d.ts",
8
8
  "bin": {
9
- "web3-tools-mcp": "dist/index.js"
9
+ "web3-tools-mcp": "dist/src/index.js"
10
10
  },
11
11
  "files": [
12
12
  "dist",
@@ -18,7 +18,8 @@
18
18
  "node": ">=20.0.0"
19
19
  },
20
20
  "scripts": {
21
- "build": "tsc",
21
+ "clean": "rm -rf dist",
22
+ "build": "npm run clean && tsc",
22
23
  "watch": "tsc --watch",
23
24
  "prepare": "npm run build",
24
25
  "test": "vitest run",
@@ -31,6 +32,8 @@
31
32
  "viem",
32
33
  "blockchain",
33
34
  "web3",
35
+ "ens",
36
+ "ethereum-name-service",
34
37
  "model-context-protocol",
35
38
  "ai"
36
39
  ],