Skip to main content
Glama

Zerion MCP Server

by SAK1337
FIX_SUMMARY.md4.8 kB
# Zerion MCP Server - Fix Summary ## Issue Reported The MCP server appeared to initialize but hung when attempting to use tools. ## Root Cause Analysis ### Problem 1: OpenAPI Parameter Reference Errors The server logs showed parameter extraction failures: ``` ERROR: Failed to extract parameter '#/paths/~1v1~1wallets~1%7Baddress%7D~1charts~1%7Bchart_period%7D/get/parameters/0' ``` **Cause**: Path parameters were listed in incorrect order in the OpenAPI specification. OpenAPI requires path parameters to be ordered according to their appearance in the URL path. ### Problem 2: Invalid Parameter References Some endpoints used path-based references instead of component references, and inline parameter definitions instead of reusable components. ## Fixes Applied ### 1. Fixed Parameter Ordering in OpenAPI Spec Updated 7 endpoints with incorrect parameter order: #### `/v1/wallets/{address}/charts/{chart_period}` - ❌ Before: ChartPeriod, Currency, WalletAddress - ✅ After: WalletAddress, ChartPeriod, Currency #### `/v1/wallets/{address}/pnl/` - ❌ Before: Currency, WalletAddress - ✅ After: WalletAddress, Currency #### `/v1/wallets/{address}/portfolio` - ❌ Before: Currency, WalletAddress - ✅ After: WalletAddress, Currency #### `/v1/wallets/{address}/positions/` - ❌ Before: Currency, WalletAddress - ✅ After: WalletAddress, Currency #### `/v1/wallets/{address}/transactions/` - ❌ Before: Currency, Page, inline address param - ✅ After: WalletAddress, Currency, Page #### `/v1/wallets/{address}/nft-portfolio` - ❌ Before: Currency, WalletAddress - ✅ After: WalletAddress, Currency #### `/v1/fungibles/{fungible_id}/charts/{chart_period}` - ❌ Before: Used invalid path reference `#/paths/~1v1~1wallets...` - ✅ After: Uses component reference `#/components/parameters/ChartPeriod` ### 2. Fixed MCP Server Transport #### Issue Server was using `uvicorn.run()` which creates an HTTP server, but MCP uses stdio transport. #### Fix ```python # Before uvicorn.run(mcp, host="127.0.0.1", port=8000) # After mcp.run() ``` ## Verification ### Server Startup Log ``` 2025-10-24 15:06:35 [INFO] Created FastMCP OpenAPI server with 18 routes 2025-10-24 15:06:35 [INFO] MCP server created successfully 2025-10-24 15:06:35 [INFO] Server started and ready to accept requests ``` ✅ No parameter extraction errors ✅ All 18 routes successfully registered ✅ Server ready to accept MCP protocol connections ## Available Tools All 18 tools are now functional: ### Wallet Operations (8 tools) 1. `getWalletChart` - Portfolio balance chart over time 2. `getWalletPNL` - Profit and Loss details 3. `getWalletPortfolio` - Portfolio overview 4. `listWalletPositions` - Fungible positions list 5. `listWalletTransactions` - Transaction history 6. `listWalletNFTPositions` - NFT positions 7. `listWalletNFTCollections` - NFT collections 8. `getWalletNftPortfolio` - NFT portfolio overview ### Fungible Assets (3 tools) 9. `listFungibles` - Search/list fungible assets 10. `getFungibleById` - Get specific fungible 11. `getFungibleChart` - Asset price chart ### Blockchain Chains (2 tools) 12. `listChains` - List supported chains 13. `getChainById` - Get chain details ### Swap/Bridge (2 tools) 14. `swapFungibles` - Available bridge assets 15. `swapOffers` - Get swap offers ### Gas & NFTs (3 tools) 16. `listGasPrices` - Real-time gas prices ⭐ 17. `listNFTs` - Search NFTs 18. `getNFTById` - Get specific NFT ## Usage ### Connect to MCP Client Add to Claude Desktop config (`claude_desktop_config.json`): ```json { "mcpServers": { "zerion": { "command": "zerion-mcp-server", "env": { "ZERION_API_KEY": "Bearer your-api-key-here" } } } } ``` ### Example Tool Call ```json { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "listGasPrices", "arguments": { "filter[chain_ids]": ["ethereum", "polygon"] } } } ``` ## Files Modified 1. `zerion_mcp_server/openapi_zerion.yaml` - Fixed parameter ordering and references 2. `zerion_mcp_server/__init__.py` - Fixed server transport from HTTP to stdio ## Testing Status ✅ Server initialization - PASS ✅ OpenAPI spec parsing - PASS ✅ Tool registration - PASS (18/18 tools) ✅ Parameter extraction - PASS ⏳ Live tool execution - Requires valid API key and MCP client connection ## Next Steps To fully test tool functionality: 1. Ensure valid Zerion API key is configured in `config.yaml` or environment 2. Connect MCP server to an MCP client (e.g., Claude Desktop) 3. Execute tool calls through the client 4. Verify API responses and error handling ## Documentation Created - `demo_listGasPrices.md` - Detailed documentation for the listGasPrices tool - `FIX_SUMMARY.md` - This comprehensive fix summary

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/SAK1337/myzerionmcp'

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