BSC MCP Server

by ArcReactor9
Verified
# BSC MCP Server A Model Context Protocol (MCP) server for interacting with the Binance Smart Chain (BSC) network. This server enables LLMs to access blockchain data and perform queries on the BSC network. ## Features - Get current block number - Retrieve block details by number or hash - Fetch transaction details - Get transaction receipts - Check wallet BNB balance - Check BEP-20 token balances - Create Four.meme tokens on BSC ## Prerequisites - Node.js (v16 or higher) - npm or yarn ## Installation ```bash # Clone the repository git clone https://github.com/ArcReactor9/BSC_MCP_SERVICES.git cd BSC_MCP_SERVICES # Install dependencies npm install # Build the project npm run build ``` ## Usage ### Configuration By default, the server connects to the BSC mainnet. You can customize the RPC URL and set the private key (required for token creation) using environment variables: ```bash # Windows set BSC_RPC_URL=https://your-custom-bsc-rpc-url set BSC_PRIVATE_KEY=your-private-key # Linux/macOS export BSC_RPC_URL=https://your-custom-bsc-rpc-url export BSC_PRIVATE_KEY=your-private-key ``` ### Running the STDIO Server The STDIO server is designed to be integrated with LLM clients that support the MCP protocol: ```bash npm run start # or node dist/index.js ``` ### Running the HTTP/SSE Server The HTTP/SSE server allows connections over HTTP using Server-Sent Events: ```bash npm run start:http # or node dist/server-http.js ``` By default, the server runs on port 3000. You can customize the port using the `PORT` environment variable. ### Client Examples Several client implementations are provided to demonstrate how to use the BSC MCP server: ```bash # Standard MCP client example npm run client # or node dist/client-example.js # HTTP client example npm run client:http # or node dist/client-http-example.js # Simple HTTP client example npm run client:simple # or node dist/simple-http-client.js ``` ## API Endpoints (HTTP Server) The HTTP server exposes the following endpoints: | Endpoint | Method | Description | |----------|--------|-------------| | `/` | GET | Server status check | | `/mcp/hello` | POST | Get server information and available tools | | `/mcp/tools/:toolName` | POST | Call a specific tool with arguments | | `/mcp/sse` | GET | Server-Sent Events (SSE) endpoint for streaming connections | ## MCP Tools This server exposes the following MCP tools: | Tool Name | Parameters | Description | |-----------|------------|-------------| | `get-block-number` | None | Returns the current BSC block number | | `get-block` | `blockHashOrNumber`: string or number | Returns block details for the given block hash or number | | `get-transaction` | `txHash`: string | Returns transaction details for the given transaction hash | | `get-transaction-receipt` | `txHash`: string | Returns transaction receipt for the given transaction hash | | `get-balance` | `address`: string | Returns BNB balance for the given wallet address | | `get-token-balance` | `tokenAddress`: string, `walletAddress`: string | Returns BEP-20 token balance for the given token and wallet address | | `create-four-meme-token` | `name`: string, `symbol`: string, `initialSupply`: number, `decimals`: number, `ownerAddress`: string | Creates a new Four.meme token with specified parameters | ## Creating Four.meme Tokens The BSC MCP server includes functionality to create new Four.meme tokens on the Binance Smart Chain. This allows users to easily deploy custom meme tokens with the following parameters: - `name`: The full name of the token (e.g., "Four Meme Token") - `symbol`: The token symbol (e.g., "4MEME") - `initialSupply`: The initial token supply to mint - `decimals`: The number of decimal places for the token (typically 18) - `ownerAddress`: The BSC address that will receive the initial token supply ### Example using HTTP Client ```javascript // Example of creating a Four.meme token using the HTTP client const client = new SimpleHttpClient('http://localhost:3000'); // Create a Four.meme token const tokenResponse = await client.createFourMemeToken( 'Four Pepe', // Token name '4PEPE', // Token symbol 420690000000, // Initial supply (before decimals) 18, // Decimals '0xYourWalletAddress' // Owner address ); console.log('Token creation response:', tokenResponse); ``` ## Integration with MCP.so To properly display this service on [mcp.so](https://mcp.so), please ensure that your repository contains the following: 1. A well-documented README.md (this file) 2. Code examples demonstrating how to use the tools 3. Clearly defined tool specifications ## Development ### Project Structure ``` BSC_MCP_SERVICES/ ├── dist/ # Compiled JavaScript files ├── src/ # TypeScript source code │ ├── bsc-service.ts # BSC interaction service │ ├── index.ts # STDIO server implementation │ ├── server-http.ts # HTTP/SSE server implementation │ └── ... # Client examples and utilities ├── package.json # Project dependencies and scripts └── README.md # Project documentation (this file) ``` ### Building the Project ```bash npm run build ``` ## License ISC ## Contributing Contributions are welcome! Please feel free to submit a Pull Request. ## Troubleshooting ### Token Creation Issues - Ensure the `BSC_PRIVATE_KEY` environment variable is set correctly - Verify you have enough BNB to cover the gas fees for token deployment - Check that the owner address is a valid BSC address ### Connection Issues - Verify the RPC URL is correct and accessible - Check network connectivity - Ensure the server is running on the expected port ## Support For any questions or support, please [open an issue](https://github.com/ArcReactor9/BSC_MCP_SERVICES/issues) on the GitHub repository.