Skip to main content
Glama

Algorand MCP

by GoPlausible
protocols.ts3.09 kB
import { Tool, ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js'; import { ResponseProcessor } from '../../../utils/responseProcessor.js'; import { env } from '../../../env.js'; export const protocolTools: Tool[] = [ { name: 'api_vestige_view_protocols', description: 'Get all protocols', inputSchema: { type: 'object', properties: { network_id: { type: 'integer', description: 'Network ID' } }, required: ['network_id'] } }, { name: 'api_vestige_view_protocol_by_id', description: 'Get protocol by id', inputSchema: { type: 'object', properties: { protocol_id: { type: 'integer', description: 'Protocol ID' }, network_id: { type: 'integer', description: 'Network ID' } }, required: ['protocol_id', 'network_id'] } }, { name: 'api_vestige_view_protocol_volumes', description: 'Get protocol volumes at specific day. Defaults to current day.', inputSchema: { type: 'object', properties: { network_id: { type: 'integer', description: 'Network ID' }, timestamp: { type: 'integer', description: 'Optional timestamp' }, denominating_asset_id: { type: 'integer', description: 'Optional denominating asset ID', default: 0 } }, required: ['network_id'] } } ]; export const handleProtocolTools = ResponseProcessor.wrapResourceHandler(async function handleProtocolTools(args: any): Promise<any> { const name = args.name; const baseUrl = env.vestige_api_url; let endpoint = ''; switch (name) { case 'api_vestige_view_protocols': endpoint = '/protocols'; break; case 'api_vestige_view_protocol_by_id': endpoint = `/protocols/${args.protocol_id}`; break; case 'api_vestige_view_protocol_volumes': endpoint = '/protocols/volume'; break; default: throw new McpError( ErrorCode.MethodNotFound, `Unknown tool: ${name}` ); } try { // Add query parameters if they exist const queryParams = new URLSearchParams(); for (const [key, value] of Object.entries(args)) { if (value !== undefined && !['protocol_id', 'name', 'pageToken'].includes(key)) { queryParams.append(key, String(value)); } } const url = `${baseUrl}${endpoint}${queryParams.toString() ? `?${queryParams.toString()}` : ''}`; const response = await fetch(url); if (!response.ok) { throw new McpError( ErrorCode.InternalError, `Vestige API error: ${response.status} ${response.statusText}` ); } const data = await response.json(); return data; } catch (error) { if (error instanceof McpError) { throw error; } throw new McpError( ErrorCode.InternalError, `Failed to fetch protocol data: ${error instanceof Error ? error.message : String(error)}` ); } });

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/GoPlausible/algorand-mcp'

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