@kasarlabs/starkgate-mcp 0.1.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 (81) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +166 -0
  3. package/build/abi/l1bridge/bridge-dai.abi.d.ts +39 -0
  4. package/build/abi/l1bridge/bridge-dai.abi.js +333 -0
  5. package/build/abi/l1bridge/bridge-dai.abi.js.map +1 -0
  6. package/build/abi/l1bridge/bridge-eth.abi.d.ts +28 -0
  7. package/build/abi/l1bridge/bridge-eth.abi.js +1024 -0
  8. package/build/abi/l1bridge/bridge-eth.abi.js.map +1 -0
  9. package/build/abi/l1bridge/bridge-lords.abi.d.ts +46 -0
  10. package/build/abi/l1bridge/bridge-lords.abi.js +98 -0
  11. package/build/abi/l1bridge/bridge-lords.abi.js.map +1 -0
  12. package/build/abi/l1bridge/bridge-map.d.ts +256 -0
  13. package/build/abi/l1bridge/bridge-map.js +19 -0
  14. package/build/abi/l1bridge/bridge-map.js.map +1 -0
  15. package/build/abi/l1bridge/bridge-strk.abi.d.ts +28 -0
  16. package/build/abi/l1bridge/bridge-strk.abi.js +1024 -0
  17. package/build/abi/l1bridge/bridge-strk.abi.js.map +1 -0
  18. package/build/abi/l1bridge/bridge-swss.abi.d.ts +28 -0
  19. package/build/abi/l1bridge/bridge-swss.abi.js +1024 -0
  20. package/build/abi/l1bridge/bridge-swss.abi.js.map +1 -0
  21. package/build/abi/l1bridge/bridge-usdc.abi.d.ts +28 -0
  22. package/build/abi/l1bridge/bridge-usdc.abi.js +1024 -0
  23. package/build/abi/l1bridge/bridge-usdc.abi.js.map +1 -0
  24. package/build/abi/l1bridge/bridge-usdt.abi.d.ts +28 -0
  25. package/build/abi/l1bridge/bridge-usdt.abi.js +1024 -0
  26. package/build/abi/l1bridge/bridge-usdt.abi.js.map +1 -0
  27. package/build/abi/l1bridge/bridge-wbtc.abi.d.ts +28 -0
  28. package/build/abi/l1bridge/bridge-wbtc.abi.js +1024 -0
  29. package/build/abi/l1bridge/bridge-wbtc.abi.js.map +1 -0
  30. package/build/abi/l2bridge/bridge-dai.abi.d.ts +57 -0
  31. package/build/abi/l2bridge/bridge-dai.abi.js +286 -0
  32. package/build/abi/l2bridge/bridge-dai.abi.js.map +1 -0
  33. package/build/abi/l2bridge/bridge-eth.abi.d.ts +120 -0
  34. package/build/abi/l2bridge/bridge-eth.abi.js +1679 -0
  35. package/build/abi/l2bridge/bridge-eth.abi.js.map +1 -0
  36. package/build/abi/l2bridge/bridge-lords.abi.d.ts +27 -0
  37. package/build/abi/l2bridge/bridge-lords.abi.js +113 -0
  38. package/build/abi/l2bridge/bridge-lords.abi.js.map +1 -0
  39. package/build/abi/l2bridge/bridge-map.d.ts +807 -0
  40. package/build/abi/l2bridge/bridge-map.js +19 -0
  41. package/build/abi/l2bridge/bridge-map.js.map +1 -0
  42. package/build/abi/l2bridge/bridge-strk.abi.d.ts +120 -0
  43. package/build/abi/l2bridge/bridge-strk.abi.js +1679 -0
  44. package/build/abi/l2bridge/bridge-strk.abi.js.map +1 -0
  45. package/build/abi/l2bridge/bridge-swss.abi.d.ts +120 -0
  46. package/build/abi/l2bridge/bridge-swss.abi.js +1730 -0
  47. package/build/abi/l2bridge/bridge-swss.abi.js.map +1 -0
  48. package/build/abi/l2bridge/bridge-usdc.abi.d.ts +120 -0
  49. package/build/abi/l2bridge/bridge-usdc.abi.js +1679 -0
  50. package/build/abi/l2bridge/bridge-usdc.abi.js.map +1 -0
  51. package/build/abi/l2bridge/bridge-usdt.abi.d.ts +120 -0
  52. package/build/abi/l2bridge/bridge-usdt.abi.js +1679 -0
  53. package/build/abi/l2bridge/bridge-usdt.abi.js.map +1 -0
  54. package/build/abi/l2bridge/bridge-wbtc.abi.d.ts +120 -0
  55. package/build/abi/l2bridge/bridge-wbtc.abi.js +1679 -0
  56. package/build/abi/l2bridge/bridge-wbtc.abi.js.map +1 -0
  57. package/build/constants/contract-address.d.ts +18 -0
  58. package/build/constants/contract-address.js +33 -0
  59. package/build/constants/contract-address.js.map +1 -0
  60. package/build/index.d.ts +2 -0
  61. package/build/index.js +51 -0
  62. package/build/index.js.map +1 -0
  63. package/build/interfaces/types.d.ts +1 -0
  64. package/build/interfaces/types.js +2 -0
  65. package/build/interfaces/types.js.map +1 -0
  66. package/build/lib/utils.d.ts +19 -0
  67. package/build/lib/utils.js +121 -0
  68. package/build/lib/utils.js.map +1 -0
  69. package/build/schemas/bridgeSchemas.d.ts +30 -0
  70. package/build/schemas/bridgeSchemas.js +24 -0
  71. package/build/schemas/bridgeSchemas.js.map +1 -0
  72. package/build/schemas/index.d.ts +2 -0
  73. package/build/schemas/index.js +2 -0
  74. package/build/schemas/index.js.map +1 -0
  75. package/build/tools/bridgeL1toL2.d.ts +5 -0
  76. package/build/tools/bridgeL1toL2.js +109 -0
  77. package/build/tools/bridgeL1toL2.js.map +1 -0
  78. package/build/tools/bridgeL2toL1.d.ts +4 -0
  79. package/build/tools/bridgeL2toL1.js +112 -0
  80. package/build/tools/bridgeL2toL1.js.map +1 -0
  81. package/package.json +49 -0
@@ -0,0 +1,112 @@
1
+ import * as ethers from 'ethers';
2
+ import { STARKNET_BRIDGE_ADDRESS_MAP } from '../constants/contract-address.js';
3
+ import { ethTokenAddresses, starknetTokenAddresses, getStarknetTokenAbi, } from '@kasarlabs/ask-starknet-core';
4
+ import { Contract } from 'starknet';
5
+ import { L2_BRIDGE_ABI_MAP } from '../abi/l2bridge/bridge-map.js';
6
+ async function validateStarknetTokenBalance(tokenContract, accountAddress, tokenAmount, decimals, symbol) {
7
+ const balance = await tokenContract.balanceOf(accountAddress);
8
+ const tokenBalance = BigInt(balance.toString());
9
+ console.error(`Token balance: ${ethers.formatUnits(tokenBalance, decimals)} ${symbol}`);
10
+ if (tokenBalance < tokenAmount) {
11
+ throw new Error(`Insufficient ${symbol} balance. Required: ${ethers.formatUnits(tokenAmount, decimals)} ${symbol}, Available: ${ethers.formatUnits(tokenBalance, decimals)} ${symbol}`);
12
+ }
13
+ }
14
+ async function ensureStarknetTokenAllowance(tokenContract, accountAddress, bridgeAddress, tokenAmount, decimals, symbol) {
15
+ const allowance = await tokenContract.allowance(accountAddress, bridgeAddress);
16
+ const currentAllowance = BigInt(allowance.toString());
17
+ console.error(`Current allowance: ${ethers.formatUnits(currentAllowance, decimals)} ${symbol}`);
18
+ if (currentAllowance < tokenAmount) {
19
+ console.error(`Approving bridge to spend ${ethers.formatUnits(tokenAmount, decimals)} ${symbol}...`);
20
+ const approveTx = await tokenContract.approve(bridgeAddress, tokenAmount);
21
+ console.error('Approval transaction hash:', approveTx.transaction_hash);
22
+ await tokenContract.providerOrAccount.waitForTransaction(approveTx.transaction_hash);
23
+ console.error('Approval confirmed.');
24
+ }
25
+ else {
26
+ console.error('Sufficient allowance already exists, skipping approval.');
27
+ }
28
+ }
29
+ export async function withdrawToEthereum(starknetEnv, params) {
30
+ try {
31
+ const { toAddress, amount, symbol } = params;
32
+ const { provider, account } = starknetEnv;
33
+ const bridgeAddress = STARKNET_BRIDGE_ADDRESS_MAP[symbol];
34
+ if (!bridgeAddress) {
35
+ throw new Error(`Unsupported token: ${symbol}`);
36
+ }
37
+ console.error(`Using ${symbol} bridge: ${bridgeAddress}`);
38
+ const withdrawContract = new Contract({
39
+ address: bridgeAddress,
40
+ abi: L2_BRIDGE_ABI_MAP[symbol],
41
+ providerOrAccount: account,
42
+ });
43
+ let withdrawTx;
44
+ if (symbol === 'ETH') {
45
+ const weiWithdrawAmount = ethers.parseEther(amount);
46
+ const withdrawAmount = BigInt(weiWithdrawAmount.toString());
47
+ console.error(`Withdrawing ${amount} ETH (${withdrawAmount.toString()} wei) from Starknet address ${account.address} to Ethereum address ${toAddress}`);
48
+ console.error('Using initiate_withdraw for native ETH');
49
+ withdrawTx = await withdrawContract.initiate_withdraw(toAddress, withdrawAmount);
50
+ }
51
+ else {
52
+ const tokenAddress = starknetTokenAddresses[symbol];
53
+ if (!tokenAddress) {
54
+ throw new Error(`Starknet token address not found for ${symbol}`);
55
+ }
56
+ const tokenAbi = getStarknetTokenAbi(symbol);
57
+ const tokenContract = new Contract({
58
+ abi: tokenAbi,
59
+ address: tokenAddress,
60
+ providerOrAccount: account,
61
+ });
62
+ let decimals = 18;
63
+ try {
64
+ const fetchedDecimals = await tokenContract.decimals();
65
+ decimals = Number(fetchedDecimals);
66
+ console.error(`Fetched decimals for ${symbol}: ${decimals}`);
67
+ }
68
+ catch (error) {
69
+ console.error(`Failed to fetch decimals for ${symbol}, using default (18):`, error);
70
+ }
71
+ const tokenAmount = ethers.parseUnits(amount, decimals);
72
+ const withdrawAmount = BigInt(tokenAmount.toString());
73
+ console.error(`Token amount (${symbol}):`, withdrawAmount.toString());
74
+ console.error(`Token decimals: ${decimals}`);
75
+ console.error(`Withdrawing ${amount} ${symbol} from Starknet address ${account.address} to Ethereum address ${toAddress}`);
76
+ await validateStarknetTokenBalance(tokenContract, account.address, withdrawAmount, decimals, symbol);
77
+ await ensureStarknetTokenAllowance(tokenContract, account.address, bridgeAddress, withdrawAmount, decimals, symbol);
78
+ const l1TokenAddress = ethTokenAddresses[symbol];
79
+ if (!l1TokenAddress) {
80
+ throw new Error(`L1 token address not found for ${symbol}`);
81
+ }
82
+ console.error('Using initiate_token_withdraw for ERC20 token');
83
+ withdrawTx = await withdrawContract.initiate_token_withdraw(l1TokenAddress, toAddress, withdrawAmount);
84
+ }
85
+ console.error('Withdraw transaction hash:', withdrawTx.transaction_hash);
86
+ const receipt = await provider.waitForTransaction(withdrawTx.transaction_hash);
87
+ console.error('Withdraw transaction confirmed on L2.', receipt);
88
+ return {
89
+ status: 'success',
90
+ data: {
91
+ transactionHash: withdrawTx.transaction_hash,
92
+ amount,
93
+ symbol,
94
+ from: account.address,
95
+ to: toAddress,
96
+ },
97
+ };
98
+ }
99
+ catch (error) {
100
+ return {
101
+ status: 'failure',
102
+ error: error instanceof Error ? error.message : 'Unknown error',
103
+ };
104
+ }
105
+ }
106
+ export async function bridgeL2toL1(starknetEnv, params) {
107
+ console.error('Bridging from Starknet to Ethereum...');
108
+ const result = await withdrawToEthereum(starknetEnv, params);
109
+ console.error('Bridging completed.');
110
+ return result;
111
+ }
112
+ //# sourceMappingURL=bridgeL2toL1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridgeL2toL1.js","sourceRoot":"","sources":["../../src/tools/bridgeL2toL1.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@kasarlabs/starkgate-mcp",
3
+ "version": "0.1.1",
4
+ "main": "index.js",
5
+ "type": "module",
6
+ "bin": {
7
+ "starkgate-mcp": "./build/index.js"
8
+ },
9
+ "scripts": {
10
+ "build": "tsc && chmod 755 build/index.js",
11
+ "clean": "rm -rf build",
12
+ "clean:all": "rm -rf build node_modules",
13
+ "start": "node build/index.js"
14
+ },
15
+ "files": [
16
+ "build"
17
+ ],
18
+ "dependencies": {
19
+ "@hyperlane-xyz/core": "^10.0.3",
20
+ "@hyperlane-xyz/sdk": "^19.9.0",
21
+ "@kasarlabs/ask-starknet-core": "0.1.3",
22
+ "@langchain/core": "^0.3.75",
23
+ "@modelcontextprotocol/sdk": "^1.11.2",
24
+ "@solana/web3.js": "^1.98.4",
25
+ "bitcoinjs-lib": "^7.0.0",
26
+ "dotenv": "^16.4.7",
27
+ "ethers": "^6.13.4",
28
+ "starknet": "8.6.0",
29
+ "winston": "^3.17.0",
30
+ "zod": "^3.24.2"
31
+ },
32
+ "devDependencies": {
33
+ "@types/node": "^22.13.10",
34
+ "typescript": "^5.8.2"
35
+ },
36
+ "keywords": [
37
+ "mcp",
38
+ "starknet",
39
+ "starkgate",
40
+ "bridge"
41
+ ],
42
+ "author": "kasarlabs",
43
+ "license": "MIT",
44
+ "description": "MCP server for StarkGate bridge operations between Ethereum L1 and Starknet L2",
45
+ "publishConfig": {
46
+ "access": "public"
47
+ },
48
+ "gitHead": "bfb4d4b055bbfa15b8e745d414adf52ac5e158fb"
49
+ }