UNPKG

linea-mcp

Version:

A Model Context Protocol server for interacting with the Linea blockchain

304 lines (230 loc) 8.84 kB
# Linea MCP Server <div align="center"> <img src="assets/logo.png" alt="Linea MCP Logo"> </div> A Model Context Protocol (MCP) server that provides on-chain tools for AI applications to interact with the Linea blockchain. [![npm version](https://img.shields.io/npm/v/linea-mcp.svg)](https://www.npmjs.com/package/linea-mcp) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) ## Overview Linea-MCP extends any MCP client's capabilities by providing tools to interact with the Linea blockchain, an Ethereum Layer 2 scaling solution using zero-knowledge proof technology. This server enables AI assistants like Claude and Cursor to perform blockchain operations through natural language requests. ### Key Features - **Wallet Management**: Retrieve addresses and check balances - **Token Operations**: Transfer ERC20 tokens and check balances - **Smart Contract Interactions**: Deploy and interact with contracts - **NFT Management**: List and transfer NFTs - **Bridge Operations**: Bridge assets between Ethereum and Linea - **DeFi Integrations**: Interact with DeFi protocols on Linea - **Proof of Humanity**: Verify and manage PoH registrations - **Linea ENS**: Resolve and manage Linea ENS names ## Real-World Use Cases ### 1. Decentralized Finance Management Imagine you're a busy professional managing your DeFi investments: ```plaintext Morning: "Check my liquidity pool earnings from overnight" Lunch: "Swap half of my USDC earnings to ETH" Evening: "Bridge my ETH earnings to Ethereum mainnet" ``` ### 2. NFT Artist and Collector As an NFT creator or collector managing your digital art: ```plaintext - Mint new NFT collections - Track royalty payments - Transfer artworks to buyers - Check collection statistics ``` ### 3. Identity Verification (PoH) Using Proof of Humanity for various applications: ```plaintext - Verify identity for DeFi protocols - Participate in Universal Basic Income - Vouch for other community members - Maintain verified status ``` See [examples.md](examples.md) for more detailed use cases and examples. ## Quick Examples Here are some common usage examples. For more detailed examples, see [examples.md](examples.md). ### Wallet Operations ```plaintext User: "What's my wallet address?" Result: 0x742d35Cc6634C0532925a3b844Bc454e4438f44e User: "Show me my wallet balances" Result: - ETH: 1.5 ETH - USDC: 100 USDC ``` ### Bridge Operations ```plaintext User: "Bridge 1 ETH from Ethereum to Linea" Steps: 1. Initiating bridge transaction 2. Confirming on Ethereum 3. Waiting for confirmation on Linea ``` ### Proof of Humanity ```plaintext User: "Verify my PoH registration status" Result: Verified since 2024-03-15 ``` ### Linea ENS ```plaintext User: "Resolve name.linea.eth" Result: 0x742d35Cc6634C0532925a3b844Bc454e4438f44e User: "Lookup ENS for 0x8dF3e4806A3320D2642b1F2835ADDA1A40719c4E" Result: qvkare.linea.eth User: "Check if randomname.linea is available" Result: Available - This name can be registered User: "Get email and twitter records for qvkare.linea.eth" Result: - Email: Not set - Twitter: Not set ``` For more examples and detailed usage instructions, please refer to our [examples.md](examples.md) file. For detailed ENS integration examples, see [docs/ens-usage.md](docs/ens-usage.md). ## Current Status The project is currently in development with the following components implemented: - ✅ Core MCP server infrastructure - ✅ Wallet management tools - ✅ Token operations - ✅ Contract interactions - ✅ NFT management - ✅ Bridge operations - ✅ DeFi integrations - ✅ PoH verification system - ✅ Linea ENS integration All tools are successfully discovered by the MCP server, but there may be compatibility issues with some MCP clients. ## Getting Started ### Prerequisites - Node.js (v16+) - npm or yarn - Access to Linea RPC endpoints ### Installation #### Option 1: Install as a global package (recommended for most users) ```bash # Install globally npm install -g linea-mcp # Create a .env file in your current directory cat > .env << EOL # Network Configuration LINEA_MAINNET_RPC_URL=https://rpc.linea.build LINEA_TESTNET_RPC_URL=https://rpc.sepolia.linea.build INFURA_API_KEY=your_infura_key ALCHEMY_API_KEY=your_alchemy_key PRIVATE_KEY_ENCRYPTION_KEY=your_encryption_key PORT=3000 NODE_ENV=development ETHEREUM_RPC_URL=https://mainnet.infura.io/v3/your_infura_key ETHEREUM_TESTNET_RPC_URL=https://sepolia.infura.io/v3/your_infura_key EOL # Start the MCP server linea-mcp ``` #### Option 2: Install from source (for development) ```bash # Clone the repository git clone https://github.com/qvkare/linea-mcp.git cd linea-mcp # Install dependencies npm install # Set up environment variables cp .env.example .env # Edit .env with your configuration # Build the project npm run build # Start the MCP server npm start ``` ## Integration with MCP Clients ### Cursor To integrate with Cursor: 1. Create or edit the Cursor MCP configuration file: - Windows: `%APPDATA%\Cursor\mcp.json` - macOS: `~/Library/Application Support/Cursor/mcp.json` - Linux: `~/.config/Cursor/mcp.json` 2. Add the following configuration: ```json { "mcpServers": { "linea": { "command": "npx", "args": ["linea-mcp@latest"], "env": { "PORT": "3000", "LINEA_MAINNET_RPC_URL": "https://rpc.linea.build", "LINEA_TESTNET_RPC_URL": "https://rpc.sepolia.linea.build", "INFURA_API_KEY": "your_infura_key", "ALCHEMY_API_KEY": "your_alchemy_key", "PRIVATE_KEY_ENCRYPTION_KEY": "your_encryption_key", "NODE_ENV": "development", "ETHEREUM_RPC_URL": "https://mainnet.infura.io/v3/your_infura_key", "ETHEREUM_TESTNET_RPC_URL": "https://sepolia.infura.io/v3/your_infura_key" }, "disabled": false, "autoApprove": [] } } } ``` Replace the API keys and encryption key with your own values. ### Claude Desktop Claude Desktop integration is similar to Cursor integration: 1. Create or edit the Claude Desktop configuration file: - Windows: `%APPDATA%\Claude\claude_desktop_config.json` - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json` - Linux: `~/.config/Claude/claude_desktop_config.json` 2. Add a similar configuration as shown for Cursor. ## Available Tools The following tools are available: ### Wallet Tools - `wallet_getAddress`: Retrieve a wallet address - `wallet_listBalances`: List balances for a wallet - `wallet_transferFunds`: Transfer funds to another address ### Token Tools - `tokens_erc20Balance`: Check the balance of an ERC20 token - `tokens_erc20Transfer`: Transfer ERC20 tokens ### Contract Tools - `contracts_callContract`: Call a contract function - `contracts_deployContract`: Deploy a smart contract ### NFT Tools - `nft_listNfts`: List NFTs owned by an address - `nft_transferNft`: Transfer an NFT ### Bridge Tools - `bridge_bridgeAssets`: Bridge assets between Ethereum and Linea - `bridge_bridgeStatus`: Check bridge transaction status ### DeFi Tools - `defi_liquidityPools`: Get liquidity pool information - `defi_swapTokens`: Swap tokens on DEXes ### PoH Tools - `poh_verifyRegistration`: Verify a PoH registration status - `poh_checkVouching`: Check vouching status and history - `poh_listRegistrations`: List all PoH registrations for an address - `poh_getVouchingPeriod`: Get current vouching period information ### ENS Tools - `ens_resolveName`: Resolve an ENS name to an address - `ens_lookupAddress`: Lookup ENS name for an address - `ens_checkNameAvailability`: Check if an ENS name is available - `ens_getRecords`: Get ENS records (email, website, social media, etc.) ## Troubleshooting ### Common Issues 1. **"No tools available" in Cursor**: - Ensure your MCP configuration file is correctly formatted - Check that Node.js is installed and accessible from the path - Verify the full path to your project is correct - Use the full path to Node.js executable in the configuration 2. **"Client closed" error**: - Check the MCP server logs for errors - Ensure your environment variables are correctly set - Try restarting Cursor - Check if there are syntax errors in your configuration JSON 3. **Connection issues**: - Verify RPC endpoints are accessible - Check firewall settings ## Security Considerations - This project handles sensitive blockchain operations - Never share your private keys or seed phrases - Use environment variables for sensitive configuration - Always verify transactions before submitting - Test extensively with testnet before using on mainnet ## Contributing Contributions are welcome! Please feel free to submit a Pull Request. ## License This project is licensed under the MIT License - see the LICENSE file for details.