Skip to main content
Glama
chains.ts9.15 kB
import { type Chain } from 'viem'; import { // // Mainnets // mainnet, // optimism, // arbitrum, // arbitrumNova, // base, // polygon, // polygonZkEvm, // avalanche, bsc // zksync, // linea, // celo, // gnosis, // fantom, // filecoin, // moonbeam, // moonriver, // cronos, // scroll, // mantle, // manta, // blast, // fraxtal, // mode, // metis, // kroma, // zora, // aurora, // canto, // // Testnets // sepolia, // optimismSepolia, // arbitrumSepolia, // baseSepolia, // polygonAmoy, // avalancheFuji, // bscTestnet, // zksyncSepoliaTestnet, // lineaSepolia, // scrollSepolia, // mantleSepoliaTestnet, // mantaSepoliaTestnet, // blastSepolia, // fraxtalTestnet, // modeTestnet, // metisSepolia, // kromaSepolia, // zoraSepolia, // celoAlfajores, // goerli, // holesky } from 'viem/chains'; // // Default configuration values // export const DEFAULT_RPC_URL = 'https://eth.llamarpc.com'; // export const DEFAULT_CHAIN_ID = 1; // Default to BSC mainnet export const DEFAULT_RPC_URL = 'https://bsc-dataseed.binance.org'; export const DEFAULT_CHAIN_ID = 56; // Map chain IDs to chains export const chainMap: Record<number, Chain> = { // // Mainnets // 1: mainnet, // 10: optimism, // 42161: arbitrum, // 42170: arbitrumNova, // 8453: base, // 137: polygon, // 1101: polygonZkEvm, // 43114: avalanche, 56: bsc // 324: zksync, // 59144: linea, // 42220: celo, // 100: gnosis, // 250: fantom, // 314: filecoin, // 1284: moonbeam, // 1285: moonriver, // 25: cronos, // 534352: scroll, // 5000: mantle, // 169: manta, // 81457: blast, // 252: fraxtal, // 34443: mode, // 1088: metis, // 255: kroma, // 7777777: zora, // 1313161554: aurora, // 7700: canto, // // Testnets // 11155111: sepolia, // 11155420: optimismSepolia, // 421614: arbitrumSepolia, // 84532: baseSepolia, // 80002: polygonAmoy, // 43113: avalancheFuji, // 97: bscTestnet, // 300: zksyncSepoliaTestnet, // 59141: lineaSepolia, // 534351: scrollSepolia, // 5003: mantleSepoliaTestnet, // 3441006: mantaSepoliaTestnet, // 168587773: blastSepolia, // 2522: fraxtalTestnet, // 919: modeTestnet, // 59902: metisSepolia, // 2358: kromaSepolia, // 999999999: zoraSepolia, // 44787: celoAlfajores, // 5: goerli, // 17000: holesky }; // Map network names to chain IDs for easier reference export const networkNameMap: Record<string, number> = { // // Mainnets // ethereum: 1, // mainnet: 1, // eth: 1, // optimism: 10, // op: 10, // arbitrum: 42161, // arb: 42161, // 'arbitrum-nova': 42170, // arbitrumnova: 42170, // base: 8453, // polygon: 137, // matic: 137, // 'polygon-zkevm': 1101, // polygonzkevm: 1101, // avalanche: 43114, // avax: 43114, // binance: 56, bsc: 56 // zksync: 324, // linea: 59144, // celo: 42220, // gnosis: 100, // xdai: 100, // fantom: 250, // ftm: 250, // filecoin: 314, // fil: 314, // moonbeam: 1284, // moonriver: 1285, // cronos: 25, // scroll: 534352, // mantle: 5000, // manta: 169, // blast: 81457, // fraxtal: 252, // mode: 34443, // metis: 1088, // kroma: 255, // zora: 7777777, // aurora: 1313161554, // canto: 7700, // // Testnets // sepolia: 11155111, // 'optimism-sepolia': 11155420, // optimismsepolia: 11155420, // 'arbitrum-sepolia': 421614, // arbitrumsepolia: 421614, // 'base-sepolia': 84532, // basesepolia: 84532, // 'polygon-amoy': 80002, // polygonamoy: 80002, // 'avalanche-fuji': 43113, // avalanchefuji: 43113, // fuji: 43113, // 'bsc-testnet': 97, // bsctestnet: 97, // 'zksync-sepolia': 300, // zksyncsepolia: 300, // 'linea-sepolia': 59141, // lineasepolia: 59141, // 'scroll-sepolia': 534351, // scrollsepolia: 534351, // 'mantle-sepolia': 5003, // mantlesepolia: 5003, // 'manta-sepolia': 3441006, // mantasepolia: 3441006, // 'blast-sepolia': 168587773, // blastsepolia: 168587773, // 'fraxtal-testnet': 2522, // fraxtaltestnet: 2522, // 'mode-testnet': 919, // modetestnet: 919, // 'metis-sepolia': 59902, // metissepolia: 59902, // 'kroma-sepolia': 2358, // kromasepolia: 2358, // 'zora-sepolia': 999999999, // zorasepolia: 999999999, // 'celo-alfajores': 44787, // celoalfajores: 44787, // alfajores: 44787, // goerli: 5, // holesky: 17000 }; // Map chain IDs to RPC URLs export const rpcUrlMap: Record<number, string> = { // // Mainnets // 1: 'https://eth.llamarpc.com', // 10: 'https://mainnet.optimism.io', // 42161: 'https://arb1.arbitrum.io/rpc', // 42170: 'https://nova.arbitrum.io/rpc', // 8453: 'https://mainnet.base.org', // 137: 'https://polygon-rpc.com', // 1101: 'https://zkevm-rpc.com', // 43114: 'https://api.avax.network/ext/bc/C/rpc', 56: 'https://bsc-dataseed.binance.org' // 324: 'https://mainnet.era.zksync.io', // 59144: 'https://rpc.linea.build', // 42220: 'https://forno.celo.org', // 100: 'https://rpc.gnosischain.com', // 250: 'https://rpc.ftm.tools', // 314: 'https://api.node.glif.io/rpc/v1', // 1284: 'https://rpc.api.moonbeam.network', // 1285: 'https://rpc.api.moonriver.moonbeam.network', // 25: 'https://evm.cronos.org', // 534352: 'https://rpc.scroll.io', // 5000: 'https://rpc.mantle.xyz', // 169: 'https://pacific-rpc.manta.network/http', // 81457: 'https://rpc.blast.io', // 252: 'https://rpc.frax.com', // 34443: 'https://mainnet.mode.network', // 1088: 'https://andromeda.metis.io/?owner=1088', // 255: 'https://api.kroma.network', // 7777777: 'https://rpc.zora.energy', // 1313161554: 'https://mainnet.aurora.dev', // 7700: 'https://canto.gravitychain.io', // // Testnets // 11155111: 'https://sepolia.drpc.org', // 11155420: 'https://sepolia.optimism.io', // 421614: 'https://sepolia-rpc.arbitrum.io/rpc', // 84532: 'https://sepolia.base.org', // 80002: 'https://rpc-amoy.polygon.technology', // 43113: 'https://api.avax-test.network/ext/bc/C/rpc', // 97: 'https://data-seed-prebsc-1-s1.binance.org:8545', // 300: 'https://sepolia.era.zksync.dev', // 59141: 'https://rpc.sepolia.linea.build', // 534351: 'https://sepolia-rpc.scroll.io', // 5003: 'https://rpc.sepolia.mantle.xyz', // 3441006: 'https://pacific-rpc.sepolia.manta.network/http', // 168587773: 'https://sepolia.blast.io', // 2522: 'https://rpc.testnet.frax.com', // 919: 'https://sepolia.mode.network', // 59902: 'https://sepolia.metis.io/?owner=59902', // 2358: 'https://api.sepolia.kroma.network', // 999999999: 'https://sepolia.rpc.zora.energy', // 44787: 'https://alfajores-forno.celo-testnet.org', // 5: 'https://rpc.ankr.com/eth_goerli', // 17000: 'https://ethereum-holesky.publicnode.com' }; /** * Resolves a chain identifier (number or string) to a chain ID * @param chainIdentifier Chain ID (number) or network name (string) * @returns The resolved chain ID */ export function resolveChainId(chainIdentifier: number | string): number { if (typeof chainIdentifier === 'number') { return chainIdentifier; } // Convert to lowercase for case-insensitive matching const networkName = chainIdentifier.toLowerCase(); // Check if the network name is in our map if (networkName in networkNameMap) { return networkNameMap[networkName]; } // Try parsing as a number const parsedId = parseInt(networkName); if (!isNaN(parsedId)) { return parsedId; } // Default to mainnet if not found return DEFAULT_CHAIN_ID; } /** * Returns the chain configuration for the specified chain ID or network name * @param chainIdentifier Chain ID (number) or network name (string) * @returns The chain configuration * @throws Error if the network is not supported (when string is provided) */ export function getChain( chainIdentifier: number | string = DEFAULT_CHAIN_ID ): Chain { if (typeof chainIdentifier === 'string') { const networkName = chainIdentifier.toLowerCase(); // Try to get from direct network name mapping first if (networkNameMap[networkName]) { return chainMap[networkNameMap[networkName]] || mainnet; } // If not found, throw an error throw new Error(`Unsupported network: ${chainIdentifier}`); } // If it's a number, return the chain from chainMap return chainMap[chainIdentifier] || mainnet; } /** * Gets the appropriate RPC URL for the specified chain ID or network name * @param chainIdentifier Chain ID (number) or network name (string) * @returns The RPC URL for the specified chain */ export function getRpcUrl( chainIdentifier: number | string = DEFAULT_CHAIN_ID ): string { const chainId = typeof chainIdentifier === 'string' ? resolveChainId(chainIdentifier) : chainIdentifier; return rpcUrlMap[chainId] || DEFAULT_RPC_URL; } /** * Get a list of supported networks * @returns Array of supported network names (excluding short aliases) */ export function getSupportedNetworks(): string[] { return Object.keys(networkNameMap) .filter((name) => name.length > 2) // Filter out short aliases .sort(); }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/chulanpro5/evm-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server