Chemspace MCP Server
# chemspace-mcp
A Model Context Protocol (MCP) server that provides a wrapper for the Chemspace API, enabling AI agents to search for synthesizable building blocks and screening compounds through exact, substructure, and similarity searches.
## Features
- **Exact Search**: Find exact molecular matches by SMILES
- **Substructure Search**: Find compounds containing a specific substructure
- **Similarity Search**: Find structurally similar compounds by SMILES
- **Multiple Product Categories**: Search across in-stock and make-on-demand compounds
- **Global Shipping**: Specify shipping countries with ISO country codes
## Requirements
- Python 3.13+
- Chemspace API key
## Installation
### Prerequisites
Install `uv`:
```sh
# macOS
brew install uv
# Linux/WSL2
curl -LsSf https://astral.sh/uv/install.sh | sh
```
### Setup
1. Clone the repository and navigate to the project directory
2. Set your Chemspace API key as an environment variable:
```bash
export CHEMSPACE_API_KEY="your-api-key-here"
```
3. Install dependencies and run:
```bash
uv run chemspace-mcp
```
## Configuration
### For use with FastAgent
Configure `example/fastagent.secrets.yaml`. Environment variables set here will override the ones in your shell:
```yaml
anthropic:
api_key: your-anthropic-api-key
mcp:
servers:
chemspace:
env:
CHEMSPACE_API_KEY: your-chemspace-api-key
```
Then run the example interface with FastAgent:
```bash
cd example
uv run --extra agent agent.py
```
## Usage
The MCP server exposes the following tools:
### search_exact
Searches for exact molecular matches by SMILES string.
**Parameters:**
- `smiles` (string): The SMILES string to search for
- `shipToCountry` (string): Two-letter ISO country code (default: "US")
- `count` (integer): Maximum results per page (default: 10)
- `page` (integer): Page number for pagination (default: 1)
- `categories` (list): Product categories to search:
- `CSSB`: In-stock building blocks
- `CSSS`: In-stock screening compounds
- `CSMB`: Make-on-demand building blocks
- `CSMS`: Make-on-demand screening compounds
- `CSCS`: Custom requests
### search_substructure
Searches for compounds containing a specific substructure.
**Parameters:** Same as `search_exact`
### search_similarity
Searches for structurally similar compounds.
**Parameters:** Same as `search_exact`
## Project Structure
```
chemspace-mcp/
├── src/
│ └── chemspace_mcp/
│ ├── __init__.py # Entry point and MCP server initialization
│ ├── tools.py # Tool definitions for chemical searches
│ └── tokenmanager.py # Token management for API authentication
├── example/
│ ├── agent.py # Example FastAgent integration
│ ├── fastagent.config.yaml # FastAgent configuration
│ └── fastagent.secrets.yaml # Secrets configuration (not in version control)
├── pyproject.toml # Project metadata and dependencies
└── README.md # This file
```
## Development
### Dependencies
- `fastmcp>=2.13.1`: Core MCP server framework
- `fast-agent-mcp>=0.2.25`: FastAgent integration
## License
MIT License
## Support
For issues or questions, please open an issue on the project repository.
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose with no ambiguity: exact search, similarity search, and substructure search are well-defined and non-overlapping operations in cheminformatics. The descriptions specify different search types, making it easy for an agent to select the correct tool based on the required search method.
All tool names follow a consistent verb_noun pattern with 'search_' as the prefix, followed by a descriptive term (exact, similarity, substructure). This uniformity makes the tool set predictable and easy to understand, with no deviations in naming conventions.
With 3 tools, the server is well-scoped for its purpose of chemical search operations. Each tool earns its place by covering distinct search methods, and the count is appropriate for the domain without being too thin or heavy, allowing focused functionality.
The tool set provides comprehensive coverage for search operations in cheminformatics, including exact, similarity, and substructure searches. A minor gap exists in the lack of tools for additional chemical data operations like property retrieval or filtering, but the core search workflows are complete and functional.