web3-tools-mcp 1.3.4 → 1.4.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 +51 -4
- package/dist/anvil.d.ts +34 -0
- package/dist/anvil.d.ts.map +1 -0
- package/dist/anvil.js +254 -0
- package/dist/anvil.js.map +1 -0
- package/dist/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +11 -0
- package/dist/client.js.map +1 -1
- package/dist/index.js +25 -5
- package/dist/index.js.map +1 -1
- package/dist/preview.d.ts +55 -0
- package/dist/preview.d.ts.map +1 -0
- package/dist/preview.js +233 -0
- package/dist/preview.js.map +1 -0
- package/dist/tools/advanced.d.ts +67 -9
- package/dist/tools/advanced.d.ts.map +1 -1
- package/dist/tools/advanced.js +206 -67
- package/dist/tools/advanced.js.map +1 -1
- package/dist/tools/balance.d.ts +5 -5
- package/dist/tools/contract-info.d.ts +9 -9
- package/dist/tools/contract.d.ts +8 -8
- package/dist/tools/ens.d.ts +15 -15
- package/dist/tools/gas.d.ts +18 -18
- package/dist/tools/logs.d.ts +3 -3
- package/dist/tools/transactions.d.ts +9 -9
- package/dist/tools/transactions.d.ts.map +1 -1
- package/dist/tools/transactions.js +92 -113
- package/dist/tools/transactions.js.map +1 -1
- package/dist/utils.d.ts +13 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +76 -0
- package/dist/utils.js.map +1 -1
- package/dist/wallet-client.d.ts +83 -0
- package/dist/wallet-client.d.ts.map +1 -0
- package/dist/wallet-client.js +357 -0
- package/dist/wallet-client.js.map +1 -0
- package/package.json +9 -8
- package/src/anvil.ts +323 -0
- package/src/client.ts +14 -0
- package/src/index.ts +26 -5
- package/src/preview.ts +320 -0
- package/src/tools/advanced.ts +239 -70
- package/src/tools/transactions.ts +98 -125
- package/src/utils.ts +95 -0
- package/src/wallet-client.ts +380 -0
- package/dist/wallet-server.d.ts +0 -35
- package/dist/wallet-server.d.ts.map +0 -1
- package/dist/wallet-server.js +0 -232
- package/dist/wallet-server.js.map +0 -1
- package/public/wallet-app.js +0 -677
- package/public/wallet.html +0 -723
- package/src/wallet-server.ts +0 -283
package/README.md
CHANGED
|
@@ -88,12 +88,59 @@ The server includes a built-in wallet interface for secure transaction signing w
|
|
|
88
88
|
### How It Works
|
|
89
89
|
|
|
90
90
|
1. When you use a transaction tool (e.g., `send_native_token`), the server automatically:
|
|
91
|
-
- Starts a local
|
|
91
|
+
- Starts a local wallet relay on `http://localhost:3456`
|
|
92
92
|
- Opens your browser to connect your wallet (MetaMask, Rabby, Coinbase Wallet, etc.)
|
|
93
93
|
2. You connect your wallet once in the browser
|
|
94
|
-
3.
|
|
94
|
+
3. The transaction is decoded and simulated, then the request appears in the browser for approval
|
|
95
95
|
4. Sign or reject transactions directly in your wallet
|
|
96
96
|
|
|
97
|
+
The browser page and the MCP server are both clients of the relay, authenticated with a
|
|
98
|
+
pairing token that travels in the URL fragment (`#t=…`) of the link the server prints.
|
|
99
|
+
|
|
100
|
+
**One relay per machine.** Every local MCP process looks for an existing relay on ports
|
|
101
|
+
3456-3460 before starting one, so all your editor sessions share a single wallet page —
|
|
102
|
+
connect once, and a transaction from any session lands in that tab. They authenticate with
|
|
103
|
+
a token kept in `~/.config/web3-tools-mcp/relay-token` (mode 0600); delete it to rotate.
|
|
104
|
+
|
|
105
|
+
### Before You Sign
|
|
106
|
+
|
|
107
|
+
Each request shows what the transaction actually does, not just calldata:
|
|
108
|
+
|
|
109
|
+
- **Decoded call** — function name and named arguments, from the verified ABI (Sourcify /
|
|
110
|
+
Etherscan) or, for unverified contracts, from selectors recovered from bytecode via
|
|
111
|
+
[WhatsABI](https://github.com/shazow/whatsabi). Proxies are resolved to their implementation.
|
|
112
|
+
- **Token amounts** — formatted with on-chain decimals and symbol; unlimited approvals are
|
|
113
|
+
flagged explicitly.
|
|
114
|
+
- **Simulation** — `eth_simulateV1` (falling back to `eth_call` + `estimateGas`) reports the
|
|
115
|
+
gas estimate and every ERC20 transfer the transaction would cause, marked in/out for your
|
|
116
|
+
account. A reverting transaction is shown as such before you can approve it.
|
|
117
|
+
|
|
118
|
+
### Hosting the Wallet Page
|
|
119
|
+
|
|
120
|
+
The relay lives in its own workspace, [`wallet/`](wallet), and depends only on express, cors
|
|
121
|
+
and ws (~4MB installed, against ~180MB for the MCP server). It deploys on its own to any host
|
|
122
|
+
that keeps a Node process alive and supports WebSockets — Render, Railway, Fly:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
# On the host, from wallet/ — PORT is provided by the platform
|
|
126
|
+
WALLET_TOKEN=<long random string> WALLET_PUBLIC_URL=https://wallet.example.com npm start
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Then point the MCP server at it:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
export WALLET_SERVER_URL=https://wallet.example.com
|
|
133
|
+
export WALLET_TOKEN=<the same token>
|
|
134
|
+
npx web3-tools-mcp
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
`render.yaml` deploys the relay as-is (`rootDir: wallet`, so only its dependencies are
|
|
138
|
+
installed). Anyone holding `WALLET_TOKEN` can send your browser transactions to sign, so
|
|
139
|
+
treat it like a password and always serve the page over HTTPS.
|
|
140
|
+
|
|
141
|
+
Locally nothing changes: the MCP server embeds the same relay and `npm run start:wallet`
|
|
142
|
+
runs it from the workspace.
|
|
143
|
+
|
|
97
144
|
### Supported Wallets
|
|
98
145
|
|
|
99
146
|
- MetaMask
|
|
@@ -103,12 +150,12 @@ The server includes a built-in wallet interface for secure transaction signing w
|
|
|
103
150
|
|
|
104
151
|
### Manual Access
|
|
105
152
|
|
|
106
|
-
Visit `
|
|
153
|
+
Visit the wallet URL printed by the server (`wallet_status` also returns it) anytime to:
|
|
107
154
|
- Check wallet connection status
|
|
108
155
|
- See pending transactions
|
|
109
156
|
- View transaction history
|
|
110
157
|
|
|
111
|
-
**Note:** The
|
|
158
|
+
**Note:** The relay starts automatically with the MCP server. No additional setup required.
|
|
112
159
|
|
|
113
160
|
## Available Tools
|
|
114
161
|
|
package/dist/anvil.d.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ChildProcess } from 'child_process';
|
|
2
|
+
import { createPublicClient } from 'viem';
|
|
3
|
+
export interface AnvilInstance {
|
|
4
|
+
process: ChildProcess;
|
|
5
|
+
port: number;
|
|
6
|
+
rpcUrl: string;
|
|
7
|
+
client: ReturnType<typeof createPublicClient>;
|
|
8
|
+
}
|
|
9
|
+
export interface AnvilConfig {
|
|
10
|
+
forkUrl: string;
|
|
11
|
+
forkBlockNumber?: bigint;
|
|
12
|
+
port?: number;
|
|
13
|
+
chainId?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function isAnvilInstalled(): Promise<boolean>;
|
|
16
|
+
export declare function startAnvil(config: AnvilConfig): Promise<AnvilInstance>;
|
|
17
|
+
export declare function stopAnvil(instance: AnvilInstance): void;
|
|
18
|
+
export declare function withAnvil<T>(config: AnvilConfig, fn: (instance: AnvilInstance) => Promise<T>): Promise<T>;
|
|
19
|
+
export declare function traceTransactionWithAnvil(forkUrl: string, transactionHash: string, blockNumber: bigint, tracer?: 'callTracer' | 'prestateTracer' | 'stateDiffTracer', chainName?: string): Promise<unknown>;
|
|
20
|
+
export interface SimulateCallParams {
|
|
21
|
+
to: string;
|
|
22
|
+
data?: string;
|
|
23
|
+
from?: string;
|
|
24
|
+
value?: bigint;
|
|
25
|
+
gas?: bigint;
|
|
26
|
+
}
|
|
27
|
+
export declare function simulateCallWithTrace(forkUrl: string, params: SimulateCallParams, blockNumber?: bigint, tracer?: 'callTracer' | 'prestateTracer'): Promise<{
|
|
28
|
+
result: string;
|
|
29
|
+
trace: unknown;
|
|
30
|
+
gasUsed: bigint;
|
|
31
|
+
success: boolean;
|
|
32
|
+
revertReason?: string;
|
|
33
|
+
}>;
|
|
34
|
+
//# sourceMappingURL=anvil.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anvil.d.ts","sourceRoot":"","sources":["../src/anvil.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,YAAY,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAQ,MAAM,MAAM,CAAA;AAG/C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,YAAY,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAA;CAC9C;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAGD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAMzD;AAuBD,wBAAsB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAsF5E;AAGD,wBAAgB,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAIvD;AAGD,wBAAsB,SAAS,CAAC,CAAC,EAC/B,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,GAC1C,OAAO,CAAC,CAAC,CAAC,CAOZ;AAQD,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,YAAY,GAAG,gBAAgB,GAAG,iBAAgC,EAC1E,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAiDlB;AAGD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,kBAAkB,EAC1B,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,GAAE,YAAY,GAAG,gBAA+B,GACrD,OAAO,CAAC;IACT,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAC,CAmFD"}
|
package/dist/anvil.js
ADDED
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import { spawn } from 'child_process';
|
|
2
|
+
import { createPublicClient, http } from 'viem';
|
|
3
|
+
import { mainnet } from 'viem/chains';
|
|
4
|
+
// Check if anvil is installed
|
|
5
|
+
export async function isAnvilInstalled() {
|
|
6
|
+
return new Promise(resolve => {
|
|
7
|
+
const proc = spawn('anvil', ['--version'], { shell: true });
|
|
8
|
+
proc.on('close', code => resolve(code === 0));
|
|
9
|
+
proc.on('error', () => resolve(false));
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
// Find an available port
|
|
13
|
+
async function findAvailablePort(startPort = 8545) {
|
|
14
|
+
const net = await import('net');
|
|
15
|
+
return new Promise((resolve, reject) => {
|
|
16
|
+
const server = net.createServer();
|
|
17
|
+
server.listen(startPort, () => {
|
|
18
|
+
const address = server.address();
|
|
19
|
+
if (address && typeof address === 'object') {
|
|
20
|
+
server.close(() => resolve(address.port));
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
server.close(() => reject(new Error('Could not get port')));
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
server.on('error', () => {
|
|
27
|
+
// Port in use, try next one
|
|
28
|
+
findAvailablePort(startPort + 1).then(resolve).catch(reject);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
// Start an Anvil instance
|
|
33
|
+
export async function startAnvil(config) {
|
|
34
|
+
const installed = await isAnvilInstalled();
|
|
35
|
+
if (!installed) {
|
|
36
|
+
throw new Error('Anvil is not installed. Please install Foundry: https://book.getfoundry.sh/getting-started/installation');
|
|
37
|
+
}
|
|
38
|
+
const port = config.port ?? (await findAvailablePort());
|
|
39
|
+
const rpcUrl = `http://127.0.0.1:${port}`;
|
|
40
|
+
const args = ['--fork-url', config.forkUrl, '--port', port.toString(), '--silent'];
|
|
41
|
+
if (config.forkBlockNumber !== undefined) {
|
|
42
|
+
args.push('--fork-block-number', config.forkBlockNumber.toString());
|
|
43
|
+
}
|
|
44
|
+
if (config.chainId !== undefined) {
|
|
45
|
+
args.push('--chain-id', config.chainId.toString());
|
|
46
|
+
}
|
|
47
|
+
return new Promise((resolve, reject) => {
|
|
48
|
+
const proc = spawn('anvil', args, {
|
|
49
|
+
shell: true,
|
|
50
|
+
stdio: ['ignore', 'pipe', 'pipe']
|
|
51
|
+
});
|
|
52
|
+
let stderr = '';
|
|
53
|
+
proc.stderr?.on('data', data => {
|
|
54
|
+
stderr += data.toString();
|
|
55
|
+
});
|
|
56
|
+
proc.on('error', err => {
|
|
57
|
+
reject(new Error(`Failed to start Anvil: ${err.message}`));
|
|
58
|
+
});
|
|
59
|
+
proc.on('close', code => {
|
|
60
|
+
if (code !== 0 && code !== null) {
|
|
61
|
+
reject(new Error(`Anvil exited with code ${code}: ${stderr}`));
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
// Wait for Anvil to be ready by polling the RPC
|
|
65
|
+
const maxAttempts = 50; // 5 seconds
|
|
66
|
+
let attempts = 0;
|
|
67
|
+
const checkReady = async () => {
|
|
68
|
+
attempts++;
|
|
69
|
+
try {
|
|
70
|
+
const response = await fetch(rpcUrl, {
|
|
71
|
+
method: 'POST',
|
|
72
|
+
headers: { 'Content-Type': 'application/json' },
|
|
73
|
+
body: JSON.stringify({
|
|
74
|
+
jsonrpc: '2.0',
|
|
75
|
+
method: 'eth_blockNumber',
|
|
76
|
+
params: [],
|
|
77
|
+
id: 1
|
|
78
|
+
})
|
|
79
|
+
});
|
|
80
|
+
if (response.ok) {
|
|
81
|
+
// Add small delay to ensure all RPC methods are ready (including debug_*)
|
|
82
|
+
await new Promise(r => setTimeout(r, 100));
|
|
83
|
+
const client = createPublicClient({
|
|
84
|
+
chain: mainnet, // Chain is overridden by fork anyway
|
|
85
|
+
transport: http(rpcUrl)
|
|
86
|
+
});
|
|
87
|
+
resolve({ process: proc, port, rpcUrl, client });
|
|
88
|
+
}
|
|
89
|
+
else if (attempts < maxAttempts) {
|
|
90
|
+
setTimeout(checkReady, 100);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
proc.kill();
|
|
94
|
+
reject(new Error('Anvil failed to start within timeout'));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
if (attempts < maxAttempts) {
|
|
99
|
+
setTimeout(checkReady, 100);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
proc.kill();
|
|
103
|
+
reject(new Error('Anvil failed to start within timeout'));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
// Start checking after a small delay
|
|
108
|
+
setTimeout(checkReady, 200);
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
// Stop an Anvil instance
|
|
112
|
+
export function stopAnvil(instance) {
|
|
113
|
+
if (instance.process && !instance.process.killed) {
|
|
114
|
+
instance.process.kill('SIGTERM');
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Helper to run a function with a temporary Anvil instance
|
|
118
|
+
export async function withAnvil(config, fn) {
|
|
119
|
+
const instance = await startAnvil(config);
|
|
120
|
+
try {
|
|
121
|
+
return await fn(instance);
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
stopAnvil(instance);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Archive RPC URLs for chains that need historical state access
|
|
128
|
+
const ARCHIVE_RPCS = {
|
|
129
|
+
arbitrum: 'https://arbitrum-one.arpc.x.superfluid.dev'
|
|
130
|
+
};
|
|
131
|
+
// Trace a transaction using Anvil fork
|
|
132
|
+
export async function traceTransactionWithAnvil(forkUrl, transactionHash, blockNumber, tracer = 'callTracer', chainName) {
|
|
133
|
+
// Use archive RPC if available for better historical state access
|
|
134
|
+
const archiveUrl = chainName && ARCHIVE_RPCS[chainName] ? ARCHIVE_RPCS[chainName] : forkUrl;
|
|
135
|
+
// First, fetch the original transaction from the RPC
|
|
136
|
+
const fetchClient = createPublicClient({
|
|
137
|
+
chain: mainnet,
|
|
138
|
+
transport: http(forkUrl)
|
|
139
|
+
});
|
|
140
|
+
const tx = await fetchClient.getTransaction({
|
|
141
|
+
hash: transactionHash
|
|
142
|
+
});
|
|
143
|
+
if (!tx) {
|
|
144
|
+
throw new Error(`Transaction ${transactionHash} not found`);
|
|
145
|
+
}
|
|
146
|
+
// Fork at the block BEFORE the transaction to replay it accurately
|
|
147
|
+
// Note: This requires an archival RPC that has historical state
|
|
148
|
+
const forkBlock = blockNumber > 0n ? blockNumber - 1n : 0n;
|
|
149
|
+
return withAnvil({
|
|
150
|
+
forkUrl: archiveUrl,
|
|
151
|
+
forkBlockNumber: forkBlock
|
|
152
|
+
}, async (instance) => {
|
|
153
|
+
// Use debug_traceCall to simulate and trace the transaction
|
|
154
|
+
// Note: This replays the tx against the post-block state, which may differ slightly
|
|
155
|
+
// from the original execution if state changed within the block
|
|
156
|
+
const trace = await instance.client.request({
|
|
157
|
+
method: 'debug_traceCall',
|
|
158
|
+
params: [
|
|
159
|
+
{
|
|
160
|
+
from: tx.from,
|
|
161
|
+
to: tx.to,
|
|
162
|
+
data: tx.input,
|
|
163
|
+
value: tx.value ? `0x${tx.value.toString(16)}` : '0x0',
|
|
164
|
+
gas: tx.gas ? `0x${tx.gas.toString(16)}` : undefined
|
|
165
|
+
},
|
|
166
|
+
'latest',
|
|
167
|
+
{ tracer }
|
|
168
|
+
]
|
|
169
|
+
});
|
|
170
|
+
return trace;
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
export async function simulateCallWithTrace(forkUrl, params, blockNumber, tracer = 'callTracer') {
|
|
174
|
+
return withAnvil({
|
|
175
|
+
forkUrl,
|
|
176
|
+
forkBlockNumber: blockNumber
|
|
177
|
+
}, async (instance) => {
|
|
178
|
+
// First, try a regular call to get the result
|
|
179
|
+
let result = '0x';
|
|
180
|
+
let success = true;
|
|
181
|
+
let revertReason;
|
|
182
|
+
let gasUsed = 0n;
|
|
183
|
+
try {
|
|
184
|
+
// Use eth_call to get the result
|
|
185
|
+
result = (await instance.client.request({
|
|
186
|
+
method: 'eth_call',
|
|
187
|
+
params: [
|
|
188
|
+
{
|
|
189
|
+
to: params.to,
|
|
190
|
+
data: params.data,
|
|
191
|
+
from: params.from ?? '0x0000000000000000000000000000000000000000',
|
|
192
|
+
value: params.value ? `0x${params.value.toString(16)}` : undefined,
|
|
193
|
+
gas: params.gas ? `0x${params.gas.toString(16)}` : undefined
|
|
194
|
+
},
|
|
195
|
+
'latest'
|
|
196
|
+
]
|
|
197
|
+
}));
|
|
198
|
+
// Estimate gas
|
|
199
|
+
try {
|
|
200
|
+
gasUsed = await instance.client.estimateGas({
|
|
201
|
+
to: params.to,
|
|
202
|
+
data: params.data,
|
|
203
|
+
account: params.from,
|
|
204
|
+
value: params.value
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
// Ignore gas estimation errors
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
success = false;
|
|
213
|
+
const errorMessage = error.message;
|
|
214
|
+
// Try to extract revert reason
|
|
215
|
+
const revertMatch = errorMessage.match(/revert(?:ed)?[:\s]*(.+?)(?:\n|$)/i);
|
|
216
|
+
if (revertMatch) {
|
|
217
|
+
revertReason = revertMatch[1].trim();
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
revertReason = errorMessage;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
// Get the trace using debug_traceCall
|
|
224
|
+
let trace = null;
|
|
225
|
+
try {
|
|
226
|
+
trace = await instance.client.request({
|
|
227
|
+
method: 'debug_traceCall',
|
|
228
|
+
params: [
|
|
229
|
+
{
|
|
230
|
+
to: params.to,
|
|
231
|
+
data: params.data,
|
|
232
|
+
from: params.from ?? '0x0000000000000000000000000000000000000000',
|
|
233
|
+
value: params.value ? `0x${params.value.toString(16)}` : undefined,
|
|
234
|
+
gas: params.gas ? `0x${params.gas.toString(16)}` : undefined
|
|
235
|
+
},
|
|
236
|
+
'latest',
|
|
237
|
+
{ tracer }
|
|
238
|
+
]
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
catch (traceError) {
|
|
242
|
+
// If tracing fails, include the error
|
|
243
|
+
trace = { error: traceError.message };
|
|
244
|
+
}
|
|
245
|
+
return {
|
|
246
|
+
result,
|
|
247
|
+
trace,
|
|
248
|
+
gasUsed,
|
|
249
|
+
success,
|
|
250
|
+
revertReason
|
|
251
|
+
};
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=anvil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anvil.js","sourceRoot":"","sources":["../src/anvil.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1718,7 +1718,10 @@ export declare class ClientManager {
|
|
|
1718
1718
|
private config;
|
|
1719
1719
|
constructor(config: Config);
|
|
1720
1720
|
getClient(chainName: ChainName): ReturnType<typeof createPublicClient>;
|
|
1721
|
+
getConfig(): Config;
|
|
1721
1722
|
getEtherscanDomain(chainName: ChainName): string;
|
|
1723
|
+
getRpcUrl(chainName: ChainName): string;
|
|
1724
|
+
getChainId(chainName: ChainName): number;
|
|
1722
1725
|
}
|
|
1723
1726
|
export declare function initializeClientManager(config: Config): ClientManager;
|
|
1724
1727
|
export declare function getClientManager(): ClientManager;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAE,MAAM,MAAM,CAAA;AAgB/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAoFnD,eAAO,MAAM,MAAM,GAAI,QAAQ,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAV4B,CAAC;;;;;;;;;;;;mCAoC1D,CAAC;uCAML,CAAJ;;;;;;;;;;;;;;;;;;;;;;gCAkDgE,CAAA;wCAE9D,CAAF;;;kCAEK,CAAC;4BACJ,CADoC;;;;;;;;;;;;;;;;;;kCA8BvB,CAAC;yCACG,CAAC;2CAGE,CAAC;+BAIlB,CAAC;+BACM,CAAA;;;wCAGJ,CAAF;oCAGA,CAAC;4CAEa,CAAC;kCAEf,CAAC;4BAA6C,CAAC;kCAE5B,CAAC;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -201,6 +201,9 @@ export class ClientManager {
|
|
|
201
201
|
}
|
|
202
202
|
return client;
|
|
203
203
|
}
|
|
204
|
+
getConfig() {
|
|
205
|
+
return this.config;
|
|
206
|
+
}
|
|
204
207
|
getEtherscanDomain(chainName) {
|
|
205
208
|
const domains = {
|
|
206
209
|
mainnet: 'etherscan.io',
|
|
@@ -219,6 +222,14 @@ export class ClientManager {
|
|
|
219
222
|
};
|
|
220
223
|
return domains[chainName] || 'etherscan.io';
|
|
221
224
|
}
|
|
225
|
+
getRpcUrl(chainName) {
|
|
226
|
+
const chains = CHAINS(this.config);
|
|
227
|
+
return chains[chainName].rpc;
|
|
228
|
+
}
|
|
229
|
+
getChainId(chainName) {
|
|
230
|
+
const chains = CHAINS(this.config);
|
|
231
|
+
return chains[chainName].chain.id;
|
|
232
|
+
}
|
|
222
233
|
}
|
|
223
234
|
// Export a global client manager instance
|
|
224
235
|
let clientManager = null;
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
5
5
|
import { initializeClientManager } from "./client.js";
|
|
6
6
|
import { registerAllTools } from "./tools/index.js";
|
|
7
7
|
import { parseCommandLineArgs } from "./utils.js";
|
|
8
|
-
import {
|
|
8
|
+
import { getWalletClient } from "./wallet-client.js";
|
|
9
9
|
// Parse configuration
|
|
10
10
|
const config = parseCommandLineArgs();
|
|
11
11
|
// Show help if requested
|
|
@@ -31,6 +31,8 @@ ENVIRONMENT VARIABLES:
|
|
|
31
31
|
ALCHEMY_API_KEY Alternative to --alchemy-api-key
|
|
32
32
|
INFURA_API_KEY Alternative to --infura-api-key
|
|
33
33
|
HYPERSYNC_API_KEY Alternative to --hypersync-api-key
|
|
34
|
+
WALLET_SERVER_URL URL of a hosted wallet relay (omit to run one locally)
|
|
35
|
+
WALLET_TOKEN Shared pairing token for the wallet relay
|
|
34
36
|
|
|
35
37
|
SUPPORTED CHAINS:
|
|
36
38
|
mainnet, arbitrum, avalanche, base, bnb, gnosis, sonic, optimism, polygon, zksync, linea, unichain, localhost
|
|
@@ -76,17 +78,35 @@ const server = new McpServer({
|
|
|
76
78
|
});
|
|
77
79
|
// Register all tools
|
|
78
80
|
registerAllTools(server);
|
|
79
|
-
//
|
|
80
|
-
|
|
81
|
-
|
|
81
|
+
// Connect to the wallet relay (hosted when WALLET_SERVER_URL is set, embedded otherwise)
|
|
82
|
+
const wallet = getWalletClient();
|
|
83
|
+
const walletReady = wallet.connect().catch((error) => {
|
|
84
|
+
console.error("[MCP] Wallet relay unavailable:", error.message);
|
|
82
85
|
console.error("[MCP] Transaction signing features will not be available");
|
|
83
86
|
});
|
|
87
|
+
// The wallet relay's listening socket keeps the event loop alive, so this process would
|
|
88
|
+
// outlive the client that spawned it and go on holding its port. Leave when the client does.
|
|
89
|
+
let shuttingDown = false;
|
|
90
|
+
async function shutdown(reason) {
|
|
91
|
+
if (shuttingDown)
|
|
92
|
+
return;
|
|
93
|
+
shuttingDown = true;
|
|
94
|
+
console.error(`[MCP] Shutting down (${reason})`);
|
|
95
|
+
await wallet.stop().catch(() => { });
|
|
96
|
+
process.exit(0);
|
|
97
|
+
}
|
|
98
|
+
process.stdin.on("end", () => shutdown("client disconnected"));
|
|
99
|
+
process.stdin.on("close", () => shutdown("client disconnected"));
|
|
100
|
+
process.on("SIGTERM", () => shutdown("SIGTERM"));
|
|
101
|
+
process.on("SIGINT", () => shutdown("SIGINT"));
|
|
84
102
|
// Start server
|
|
85
103
|
async function main() {
|
|
86
104
|
const transport = new StdioServerTransport();
|
|
87
105
|
await server.connect(transport);
|
|
88
106
|
console.error("Web3 Tools MCP Server running on stdio");
|
|
89
|
-
|
|
107
|
+
// The relay may still be picking a free port, and its URL carries the pairing token.
|
|
108
|
+
await walletReady;
|
|
109
|
+
console.error(`Wallet interface available at ${wallet.getUrl()}`);
|
|
90
110
|
}
|
|
91
111
|
main().catch((error) => {
|
|
92
112
|
console.error("Fatal error:", error);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { ChainName } from './types.js';
|
|
2
|
+
export interface PreviewField {
|
|
3
|
+
name: string;
|
|
4
|
+
type: string;
|
|
5
|
+
value: string;
|
|
6
|
+
warning?: string;
|
|
7
|
+
/** Set when the value is an address, so the UI can link and label it. */
|
|
8
|
+
address?: string;
|
|
9
|
+
label?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface AssetChange {
|
|
12
|
+
token: string;
|
|
13
|
+
symbol?: string;
|
|
14
|
+
decimals?: number;
|
|
15
|
+
from: string;
|
|
16
|
+
to: string;
|
|
17
|
+
amount: string;
|
|
18
|
+
humanAmount?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface TxPreview {
|
|
21
|
+
chain: string;
|
|
22
|
+
to: string;
|
|
23
|
+
/** Token symbol or verified contract name for `to`, when we can resolve one. */
|
|
24
|
+
toLabel?: string;
|
|
25
|
+
/** Block explorer base URL, for linking addresses and tokens. */
|
|
26
|
+
explorer?: string;
|
|
27
|
+
value?: string;
|
|
28
|
+
valueFormatted?: string;
|
|
29
|
+
decoded?: {
|
|
30
|
+
functionName: string;
|
|
31
|
+
signature: string;
|
|
32
|
+
fields: PreviewField[];
|
|
33
|
+
/** 'verified' = ABI from Sourcify/Etherscan, 'guessed' = selector lookup on bytecode */
|
|
34
|
+
source: 'verified' | 'guessed';
|
|
35
|
+
proxy?: string;
|
|
36
|
+
};
|
|
37
|
+
simulation?: {
|
|
38
|
+
success: boolean;
|
|
39
|
+
gasEstimate?: string;
|
|
40
|
+
error?: string;
|
|
41
|
+
assetChanges: AssetChange[];
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export interface RawTx {
|
|
45
|
+
to: string;
|
|
46
|
+
data?: string;
|
|
47
|
+
value?: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Build the human-readable preview shown in the wallet before signing: decoded calldata
|
|
51
|
+
* plus a simulation of the outcome. Never throws — a preview that cannot be built is
|
|
52
|
+
* reported as missing rather than blocking the transaction.
|
|
53
|
+
*/
|
|
54
|
+
export declare function buildTxPreview(chain: ChainName, tx: RawTx, from?: string): Promise<TxPreview>;
|
|
55
|
+
//# sourceMappingURL=preview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../src/preview.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,MAAM,CAAA;IACV,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,EAAE;QACR,YAAY,EAAE,MAAM,CAAA;QACpB,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,YAAY,EAAE,CAAA;QACtB,wFAAwF;QACxF,MAAM,EAAE,UAAU,GAAG,SAAS,CAAA;QAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IACD,UAAU,CAAC,EAAE;QACX,OAAO,EAAE,OAAO,CAAA;QAChB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,YAAY,EAAE,WAAW,EAAE,CAAA;KAC5B,CAAA;CACF;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAuOD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAmBnG"}
|