get_compound_properties
Retrieve molecular properties like molecular weight, logP, and TPSA for chemical compounds using PubChem Compound IDs to support chemical analysis and research.
Instructions
Get molecular properties (MW, logP, TPSA, etc.)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cid | Yes | PubChem Compound ID (CID) | |
| properties | No | Specific properties to retrieve (optional) |
Implementation Reference
- src/index.ts:1075-1102 (handler)The primary handler function for the get_compound_properties tool. Validates input, queries PubChem API for molecular properties based on CID and optional properties list, returns formatted JSON response.private async handleGetCompoundProperties(args: any) { if (!isValidPropertiesArgs(args)) { throw new McpError(ErrorCode.InvalidParams, 'Invalid compound properties arguments'); } try { const properties = args.properties || [ 'MolecularWeight', 'XLogP', 'TPSA', 'HBondDonorCount', 'HBondAcceptorCount', 'RotatableBondCount', 'Complexity', 'HeavyAtomCount', 'Charge' ]; const response = await this.apiClient.get(`/compound/cid/${args.cid}/property/${properties.join(',')}/JSON`); return { content: [ { type: 'text', text: JSON.stringify(response.data, null, 2), }, ], }; } catch (error) { throw new McpError( ErrorCode.InternalError, `Failed to get compound properties: ${error instanceof Error ? error.message : 'Unknown error'}` ); } }
- src/index.ts:506-512 (schema)JSON Schema defining the input parameters for the tool: required 'cid' (number or string), optional 'properties' array of strings.inputSchema: { type: 'object', properties: { cid: { type: ['number', 'string'], description: 'PubChem Compound ID (CID)' }, properties: { type: 'array', items: { type: 'string' }, description: 'Specific properties to retrieve (optional)' }, }, required: ['cid'],
- src/index.ts:766-767 (registration)Registration in the tool dispatcher switch statement within the CallToolRequestSchema handler, routing calls to the specific handler method.case 'get_compound_properties': return await this.handleGetCompoundProperties(args);
- src/index.ts:114-123 (helper)Helper validation function (type guard) used in the handler to check input arguments conform to expected shape.const isValidPropertiesArgs = ( args: any ): args is { cid: number | string; properties?: string[] } => { return ( typeof args === 'object' && args !== null && (typeof args.cid === 'number' || typeof args.cid === 'string') && (args.properties === undefined || (Array.isArray(args.properties) && args.properties.every((p: any) => typeof p === 'string'))) ); };