mcp-bindingdb
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-bindingdbWhat's the binding affinity of imatinib for ABL1?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-bindingdb
Under construction: this project is in early development. Tools, table layouts and examples may change without notice.
An MCP server for querying BindingDB (about 3.2M measured protein–ligand binding affinities) from a local, read-only DuckDB build of the monthly MySQL dump.
Build the database
Requires Docker (daemon running) and uv.
scripts/build_duckdb.sh # release 202610 -> data/bindingdb_202610.duckdb
scripts/build_duckdb.sh --release 202611 # a later releaseThe script downloads the dump, loads it into a temporary MySQL 8.4 container, copies it to DuckDB
(scripts/convert_to_duckdb.py, checking row counts), adds derived query tables
(scripts/add_derived_tables.py), and removes the container. The regusers and person tables
(passwords and contact details) are left out unless you pass --include-pii.
Derived tables:
Table | Contents |
| One row per measured value: |
| One row per small molecule: preferred name, InChIKey, SMILES, formula, weight, counts |
| Compound synonyms, including ChEMBL ids, PubChem |
| One row per polymer/complex target: bare UniProt accession, organism, counts |
| Target synonyms (gene names, UniProt entry names) |
Related MCP server: guidetopharmacology
Run the server
uv run mcp-bindingdb # stdio
uv run mcp-bindingdb --transport streamable-http --port 8000The database is the newest data/bindingdb_*.duckdb, or --db PATH / $BINDINGDB_DUCKDB.
Claude Code: .mcp.json in this repo registers the server for the project.
Claude Desktop: add to claude_desktop_config.json:
{
"mcpServers": {
"mcp-bindingdb": {
"command": "uv",
"args": ["--directory", "/path/to/mcp-bindingdb", "run", "mcp-bindingdb"]
}
}
}Tools
Tool | Purpose |
| By name/synonym, ChEMBL id, |
| By name, gene name, UniProt entry name or accession; optional organism filter |
| Identifiers, synonyms, PDB ligands, most potent targets |
| Identifiers, synonyms, PDB ids, complex components, measurement counts |
| Most potent compounds for a target (by id or UniProt accession, optional variants) |
| Activity/selectivity profile of a compound |
| Full record of one measurement, with assay description and citation |
| Table list with descriptions, or columns and sample rows of one table |
| Arbitrary read-only DuckDB SQL |
All tools are read-only. The connection is opened read-only with file, network and extension access
disabled and settings locked, so run_sql cannot write data or read anything outside the database.
Queries time out after 30 s (--timeout).
Data notes
Ki/Kd/IC50/EC50 are in nM, kon in M⁻¹s⁻¹, koff in s⁻¹;
p_affinity = 9 − log10(nM).>values (e.g.>10000) usually mean inactive at the highest concentration tested; potency filters exclude them.monomer.display_nameholds only the BDBM id; names are incompound_name/compound.name.monomer.chembl_idis empty in this release; ChEMBL ids appear as synonyms instead.Mutant and construct targets are separate rows sharing a UniProt accession (
uniprot_rawlikeP00533[L858R]).Text comparisons in DuckDB are case-sensitive (MySQL's were not): use
ILIKEorlower().
Examples
examples/ has twelve transcripts of real questions answered with these tools: each one shows the tool
calls, the results, and an answer. Regenerate them after a new release with
uv run python scripts/generate_examples.py. Hand-written answers are kept, and the script lists any
example whose results have changed so its answer can be reviewed.
Tests
uv run pytestLicense
BSD 3-Clause; see LICENSE. BindingDB data are subject to BindingDB's own terms.
This server cannot be deployed
Maintenance
Related MCP Connectors
BindingDB — measured protein/small-molecule binding affinities.
Link compounds to protein targets, rank bioactivity, and look up drug mechanisms and indications.
Query, join, profile, clean and convert CSV/JSON/Parquet with server-side DuckDB over MCP.
Biomedical data: compounds, drug info, and molecular targets
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables comprehensive access to PubChem's chemical database with over 110 million compounds. Supports chemical searches, structure analysis, bioactivity data, safety information, and molecular property calculations through 30 specialized tools.30MIT
- AlicenseNot gradedqualityBmaintenanceEnables access to the IUPHAR/BPS Guide to PHARMACOLOGY database for querying drug targets, ligands, and pharmacological data without API keys.344 npmMIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that exposes ChEMBL's public bioactivity database as tools for searching compounds, retrieving bioactivity data, target compounds, and ADMET properties, usable by Claude and ChatGPT.-
- FlicenseNot gradedqualityCmaintenanceEnables discovery and querying of public OpenBind structure-affinity datasets, experimental binding events, benchmark results, and live Fragalysis targets and observations through read-only REST endpoints without requiring an API key.-