Chemlint — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Chemlint (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<div align="left"> <img src="img/logo.png" alt="ChemLint Logo" width="600"/> </div>
ChemLint — An MCP server that gives LLMs native access to cheminformatics and molecular ML tools
ChemLint transforms AI assistants into powerful molecular machine learning workbenches. Through the Model Context Protocol (MCP), LLMs gain the ability to manipulate molecular structures, calculate descriptors, train ML models, and generate comprehensive analysis reports — all through natural conversation.
Simply chat with Claude Desktop (or any MCP client) to perform complex cheminformatics workflows that would normally require writing Python scripts and juggling multiple libraries.
"Create a new project and import dataset from /path/to/molecules.csv"
"Show me the summary statistics"
"What columns do I have and what are their data types?"
"What are the steps I need to perform to train a robust ML model on this data?""Run a comprehensive data quality report on my dataset"
"Standardize all SMILES strings using the default protocol"
"Find and handle duplicate molecules - some might have conflicting labels"
"Remove PAINS patterns and filter by Lipinski's Rule of Five""Calculate molecular weight, logP, TPSA, and number of H-bond donors/acceptors"
"Generate Morgan fingerprints with radius 2"
"Extract Bemis-Murcko scaffolds and analyze the diversity"
"Add columns for all functional groups present in each molecule""Make scatter plot of molecular weight vs logP colored by activity"
"Create a t-SNE visualization colored by pKi"
"Make a correlation heatmap for MW, LogP, TPSA, HBD, HBA, and pKi"
"Box plot of molecular weight for actives vs inactives. Is there a statistical difference?"
"Test if my pKi values are normally distributed"
"Are there any MW outliers in my data?""Find the 10 most similar molecules to this SMILES: CC(=O)Oc1ccccc1C(=O)O"
"Cluster my molecules using DBSCAN and visualize the clusters"
"Which test molecules are most similar to my training set?"
"Are there any activity cliffs in my data?""Split my data using scaffold-based splitting 80/20 train/test"
"Check the quality of my train/test split for any data leakage issues"
"Train a Random Forest classifier with 5-fold cross-validation"
"Tune hyperparameters for a gradient boosting model using grid search"
"Evaluate my model on the test set and show me accuracy, precision, recall, and F1"
"Make predictions on the molecules in /path/to/dataset.csv and show uncertainty estimates""Train a ML model for bioactivity prediction using /path/to/dataset.csv"
"Import this dataset /path/to/dataset.csv, standardize SMILES, remove duplicates,
filter by Lipinski rule of five, calculate ECFP4 fingerprints, do a scaffold-based
80/20 split, train a Random Forest with cross-validation, evaluate on the test set."
"Use this dataset /path/to/dataset.csv to create a robust model for virtual screening
for the molecules in /path/to/virtual_screening.csv" # macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Or with pip
pip install uv # macOS
brew install cairo
# Linux
sudo apt-get install libcairo2-dev # Ubuntu/Debian
sudo yum install cairo-devel # RHEL/CentOSSimply run the installer script - it handles installation, configuration, and deployment:
# Clone repository
git clone https://github.com/derekvantilborg/ChemLint.git
cd ChemLint
# Run installer (installs AND configures Claude Desktop)
./install.shThe installer will:
After installation, restart Claude Desktop:
# macOS
pkill -x Claude && sleep 1 && open -a Claude
# Linux/Windows
# Restart Claude Desktop from your applications menuIf you prefer manual setup or use a different MCP client:
# 1. Clone and install dependencies
git clone https://github.com/derekvantilborg/ChemLint.git
cd ChemLint
uv sync
# 2. Run tests to verify installation
uv run pytest -m server -qFor Claude Desktop users: Run the configuration script to deploy:
./mcp_client_configs/configure_claude.sh $(which uv) $(pwd) [cairo_path]For clients other than Claude Desktop, add this to your MCP client configuration:
{
"mcpServers": {
"chemlint": {
"command": "/path/to/uv",
"args": [
"run",
"--with",
"mcp[cli]",
"--directory",
"/path/to/ChemLint",
"mcp",
"run",
"./src/chemlint/server.py"
],
"enabled": true
}
}
}molml_mcp/
├── tools/ # 150+ molecular ML tools
│ ├── cleaning/ # SMILES cleaning, deduplication, label processing
│ ├── core/ # Dataset ops, filtering, outliers, statistics, dim reduction
│ ├── core_mol/ # Scaffolds, similarity, activity cliffs, complexity
│ ├── featurization/ # Descriptors (simple, complex, SMILES encoding)
│ ├── ml/ # Training, evaluation, CV, hyperparameter tuning
│ ├── plotting/ # Interactive visualizations (scatter, histogram, heatmaps)
│ └── reports/ # Quality, scaffold, and split analysis reports
├── infrastructure/
│ ├── resources.py # Manifest-based resource tracking
│ └── supported_resource_types.py # CSV, model, JSON, PNG handlers
└── server.py # FastMCP server registrationAll data operations use a manifest-based tracking system that functions like a digital lab journal, providing complete traceability of your molecular ML workflow:
How it works:
{filename}_{8_HEX_ID}.{ext} (e.g., cleaned_data_A3F2B1D4.csv)manifest.json file in your project directory logs every operation with:standardize_smiles_dataset)Example manifest entry:
{
"cleaned_molecules_A3F2B1D4.csv": {
"type": "csv",
"created_at": "2026-01-20T14:23:45.123456",
"created_by": "standardize_smiles_dataset",
"explanation": "Standardized SMILES with salt removal and neutralization"
}
}Benefits:
150+ tools organized by domain:
# Run all tests (363 tests)
uv run pytest -v
# Run specific test modules
uv run pytest tests/tools/ml/test_training.py -v
uv run pytest tests/tools/reports/test_quality.py -v
# Run server initialization test
uv run pytest -m server -v
# Run with coverage
uv run pytest --cov=chemlint --cov-report=htmlTest Coverage:
MIT License - see LICENSE file for details.
This project is open source and free to use for academic and commercial purposes.
Built with:
Special thanks to the RDKit community for maintaining the foundational cheminformatics toolkit
If you use ChemLint in your research, please cite our work:
van Tilborg, D., & Grisoni, F. (2026). ChemLint: Conversational Cheminformatics with Large Language Models. ChemRxiv. https://doi.org/10.26434/chemrxiv.15000386
The preprint is available on ChemRxiv.
@article{vanTilborg2026chemlint,
title = {{ChemLint}: Conversational Cheminformatics with Large Language Models},
author = {van Tilborg, Derek and Grisoni, Francesca},
year = {2026},
journal = {ChemRxiv},
doi = {10.26434/chemrxiv.15000386},
url = {https://chemrxiv.org/doi/full/10.26434/chemrxiv.15000386/v1}
}Derek van Tilborg - @derekvantilborg
Project Link: https://github.com/molML/ChemLint
Issues & Feature Requests: GitHub Issues
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.