Skip to main content
Glama
DynamicEndpoints

Advanced PocketBase MCP Server

discover_tools

Explore and list available tools within the Advanced PocketBase MCP Server for managing collections, records, users, and advanced database operations.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Handler for 'discover_tools' that dynamically lists available tools (health_check, discover_tools, smithery_discovery, PocketBase tools) with their status based on initialization state and returns formatted MCP response.
    async () => { const tools = []; tools.push({ name: 'health_check', status: 'available', description: 'Health check tool' }); tools.push({ name: 'discover_tools', status: 'available', description: 'Tool discovery' }); // PocketBase tools const pbStatus = this.state.initializationState.pocketbaseInitialized ? 'available' : 'requires_initialization'; ['list_collections', 'get_collection', 'list_records', 'get_record', 'create_record'].forEach(toolName => { tools.push({ name: toolName, status: pbStatus, description: `PocketBase ${toolName.replace(/_/g, ' ')}` }); }); return { content: [{ type: 'text', text: JSON.stringify({ totalTools: tools.length, availableTools: tools.filter(t => t.status === 'available').length, tools: tools }, null, 2) }] }; }
  • Registration of the 'discover_tools' tool using McpServer.tool() with description and inline handler (no input schema).
    this.server.tool( 'discover_tools', { description: 'List all available tools and their current status' }, async () => { const tools = []; tools.push({ name: 'health_check', status: 'available', description: 'Health check tool' }); tools.push({ name: 'discover_tools', status: 'available', description: 'Tool discovery' }); // PocketBase tools const pbStatus = this.state.initializationState.pocketbaseInitialized ? 'available' : 'requires_initialization'; ['list_collections', 'get_collection', 'list_records', 'get_record', 'create_record'].forEach(toolName => { tools.push({ name: toolName, status: pbStatus, description: `PocketBase ${toolName.replace(/_/g, ' ')}` }); }); return { content: [{ type: 'text', text: JSON.stringify({ totalTools: tools.length, availableTools: tools.filter(t => t.status === 'available').length, tools: tools }, null, 2) }] }; } );
  • Handler for 'discover_tools' that lists system tools, conditionally adds PocketBase tools if initialized, Stripe and Email tools if services available, and returns formatted MCP response.
    async () => { const tools = [ { name: 'health_check', status: 'available', category: 'system' }, { name: 'smithery_discovery', status: 'available', category: 'system' }, { name: 'discover_tools', status: 'available', category: 'system' } ]; // Add PocketBase tools if (this.state.pocketbaseInitialized) { const pbTools = [ 'list_collections', 'get_collection', 'create_collection', 'list_records', 'get_record', 'create_record', 'update_record', 'delete_record', 'query_records', 'authenticate_user' ]; pbTools.forEach(tool => { tools.push({ name: tool, status: 'available', category: 'pocketbase' }); }); } // Add service tools if (this.stripeService) { ['create_customer', 'create_payment_intent'].forEach(tool => { tools.push({ name: tool, status: 'available', category: 'stripe' }); }); } if (this.emailService) { ['send_email'].forEach(tool => { tools.push({ name: tool, status: 'available', category: 'email' }); }); } return { content: [{ type: 'text', text: JSON.stringify({ totalTools: tools.length, availableTools: tools.filter(t => t.status === 'available').length, tools: tools }, null, 2) }] }; }
  • Registration of the 'discover_tools' tool using McpServer.tool() with description, empty schema object, and inline handler.
    this.server.tool( "discover_tools", "List all available tools and their current status", {}, async () => { const tools = [ { name: 'health_check', status: 'available', category: 'system' }, { name: 'smithery_discovery', status: 'available', category: 'system' }, { name: 'discover_tools', status: 'available', category: 'system' } ]; // Add PocketBase tools if (this.state.pocketbaseInitialized) { const pbTools = [ 'list_collections', 'get_collection', 'create_collection', 'list_records', 'get_record', 'create_record', 'update_record', 'delete_record', 'query_records', 'authenticate_user' ]; pbTools.forEach(tool => { tools.push({ name: tool, status: 'available', category: 'pocketbase' }); }); } // Add service tools if (this.stripeService) { ['create_customer', 'create_payment_intent'].forEach(tool => { tools.push({ name: tool, status: 'available', category: 'stripe' }); }); } if (this.emailService) { ['send_email'].forEach(tool => { tools.push({ name: tool, status: 'available', category: 'email' }); }); } return { content: [{ type: 'text', text: JSON.stringify({ totalTools: tools.length, availableTools: tools.filter(t => t.status === 'available').length, tools: tools }, null, 2) }] }; } ); }

Latest Blog Posts

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/DynamicEndpoints/advanced-pocketbase-mcp-server'

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