Skip to main content
Glama

search_by_localization

Find proteins by their subcellular location such as nucleus or mitochondria using the UniProt MCP Server. Filter results by organism and control output size.

Instructions

Find proteins by subcellular localization

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
localizationYesSubcellular localization (e.g., nucleus, mitochondria)
organismNoOrganism name or taxonomy ID to filter results
sizeNoNumber of results to return (1-500, default: 25)

Implementation Reference

  • The handler function executing the tool: validates input, constructs UniProt search query using subcellular location (cc_subcellular_location), fetches results via API, returns JSON response or error.
    private async handleSearchByLocalization(args: any) { if (!isValidLocalizationSearchArgs(args)) { throw new McpError(ErrorCode.InvalidParams, 'Invalid localization search arguments'); } try { let query = `reviewed:true AND cc_subcellular_location:"${args.localization}"`; if (args.organism) { query += ` AND organism_name:"${args.organism}"`; } const response = await this.apiClient.get('/uniprotkb/search', { params: { query: query, format: 'json', size: args.size || 25, }, }); return { content: [ { type: 'text', text: JSON.stringify(response.data, null, 2), }, ], }; } catch (error) { return { content: [ { type: 'text', text: `Error searching by localization: ${error instanceof Error ? error.message : 'Unknown error'}`, }, ], isError: true, }; } }
  • src/index.ts:595-606 (registration)
    Tool registration in ListToolsRequestSchema handler, defining name, description, and input schema.
    name: 'search_by_localization', description: 'Find proteins by subcellular localization', inputSchema: { type: 'object', properties: { localization: { type: 'string', description: 'Subcellular localization (e.g., nucleus, mitochondria)' }, organism: { type: 'string', description: 'Organism name or taxonomy ID to filter results' }, size: { type: 'number', description: 'Number of results to return (1-500, default: 25)', minimum: 1, maximum: 500 }, }, required: ['localization'], }, },
  • Helper function validating input arguments for the search_by_localization tool.
    const isValidLocalizationSearchArgs = ( args: any ): args is { localization: string; organism?: string; size?: number } => { return ( typeof args === 'object' && args !== null && typeof args.localization === 'string' && args.localization.length > 0 && (args.organism === undefined || typeof args.organism === 'string') && (args.size === undefined || (typeof args.size === 'number' && args.size > 0 && args.size <= 500)) ); };
  • src/index.ts:763-764 (registration)
    Dispatch case in CallToolRequestSchema switch statement that routes calls to the handler.
    case 'search_by_localization': return this.handleSearchByLocalization(args);

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/Augmented-Nature/UniProt-MCP-Server'

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