get_compound_properties
Retrieve molecular properties like molecular weight, logP, and TPSA for chemical compounds using PubChem Compound IDs. Specify optional properties to get targeted data from PubChem's chemical database.
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 handler function that executes the get_compound_properties tool. Validates input using isValidPropertiesArgs, fetches specified molecular properties from PubChem API for the given CID, and returns the 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:503-514 (schema)Input schema definition for the get_compound_properties tool provided in the ListTools response.{ name: 'get_compound_properties', description: 'Get molecular properties (MW, logP, TPSA, etc.)', 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 CallToolRequestSchema switch dispatcher, routing calls to the handler method.case 'get_compound_properties': return await this.handleGetCompoundProperties(args);
- src/index.ts:114-123 (helper)Type guard helper function used to validate arguments for the get_compound_properties tool.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'))) ); };