io.github.cyanheads/chembl-mcp-server MCP Server
io.github.cyanheads/chembl-mcp-server
What is the io.github.cyanheads/chembl-mcp-server MCP server?
Link compounds to protein targets, rank bioactivity, and look up drug mechanisms and indications.
How to install io.github.cyanheads/chembl-mcp-server
Copy-paste configuration for popular MCP clients.
CANVAS_PROVIDER_TYPESet to 'duckdb' to enable the bioactivity DataCanvas spill and the chembl_dataframe_* SQL tools. When 'none', large bioactivity sets inline a preview but never spill.
CHEMBL_API_BASE_URLBase URL for the ChEMBL REST data API. Override for a private mirror or pinned host.
CHEMBL_REQUEST_TIMEOUT_MSPer-request timeout in milliseconds for upstream ChEMBL fetches.
CHEMBL_MAX_PAGE_SIZEChEMBL per-page cap when streaming activity pages for the bioactivity spill (max 1000).
CHEMBL_DEFAULT_LIMITDefault result limit applied when callers omit it.
CHEMBL_DATAFRAME_DROP_ENABLEDSet to 'true' to register the opt-in chembl_dataframe_drop tool (absent from tools/list when off).
MCP_LOG_LEVELSets the minimum log level for output (e.g., 'debug', 'info', 'warn').
MCP_HTTP_HOSTThe hostname for the HTTP server.
MCP_HTTP_PORTThe port to run the HTTP server on.
MCP_HTTP_ENDPOINT_PATHThe endpoint path for the MCP server.
MCP_AUTH_MODEAuthentication mode to use: 'none', 'jwt', or 'oauth'.
{
"mcpServers": {
"chembl-mcp-server": {
"command": "bun",
"args": [
"-y",
"@cyanheads/chembl-mcp-server",
"run",
"start:stdio"
],
"env": {
"CANVAS_PROVIDER_TYPE": "<YOUR_CANVAS_PROVIDER_TYPE>",
"CHEMBL_API_BASE_URL": "<YOUR_CHEMBL_API_BASE_URL>",
"CHEMBL_REQUEST_TIMEOUT_MS": "<YOUR_CHEMBL_REQUEST_TIMEOUT_MS>",
"CHEMBL_MAX_PAGE_SIZE": "<YOUR_CHEMBL_MAX_PAGE_SIZE>",
"CHEMBL_DEFAULT_LIMIT": "<YOUR_CHEMBL_DEFAULT_LIMIT>",
"CHEMBL_DATAFRAME_DROP_ENABLED": "<YOUR_CHEMBL_DATAFRAME_DROP_ENABLED>",
"MCP_LOG_LEVEL": "<YOUR_MCP_LOG_LEVEL>",
"MCP_HTTP_HOST": "<YOUR_MCP_HTTP_HOST>",
"MCP_HTTP_PORT": "<YOUR_MCP_HTTP_PORT>",
"MCP_HTTP_ENDPOINT_PATH": "<YOUR_MCP_HTTP_ENDPOINT_PATH>",
"MCP_AUTH_MODE": "<YOUR_MCP_AUTH_MODE>"
}
}
}
}{
"mcpServers": {
"chembl-mcp-server": {
"command": "bun",
"args": [
"-y",
"@cyanheads/chembl-mcp-server",
"run",
"start:stdio"
],
"env": {
"CANVAS_PROVIDER_TYPE": "<YOUR_CANVAS_PROVIDER_TYPE>",
"CHEMBL_API_BASE_URL": "<YOUR_CHEMBL_API_BASE_URL>",
"CHEMBL_REQUEST_TIMEOUT_MS": "<YOUR_CHEMBL_REQUEST_TIMEOUT_MS>",
"CHEMBL_MAX_PAGE_SIZE": "<YOUR_CHEMBL_MAX_PAGE_SIZE>",
"CHEMBL_DEFAULT_LIMIT": "<YOUR_CHEMBL_DEFAULT_LIMIT>",
"CHEMBL_DATAFRAME_DROP_ENABLED": "<YOUR_CHEMBL_DATAFRAME_DROP_ENABLED>",
"MCP_LOG_LEVEL": "<YOUR_MCP_LOG_LEVEL>",
"MCP_HTTP_HOST": "<YOUR_MCP_HTTP_HOST>",
"MCP_HTTP_PORT": "<YOUR_MCP_HTTP_PORT>",
"MCP_HTTP_ENDPOINT_PATH": "<YOUR_MCP_HTTP_ENDPOINT_PATH>",
"MCP_AUTH_MODE": "<YOUR_MCP_AUTH_MODE>"
}
}
}
}{
"mcpServers": {
"chembl-mcp-server": {
"command": "bun",
"args": [
"-y",
"@cyanheads/chembl-mcp-server",
"run",
"start:stdio"
],
"env": {
"CANVAS_PROVIDER_TYPE": "<YOUR_CANVAS_PROVIDER_TYPE>",
"CHEMBL_API_BASE_URL": "<YOUR_CHEMBL_API_BASE_URL>",
"CHEMBL_REQUEST_TIMEOUT_MS": "<YOUR_CHEMBL_REQUEST_TIMEOUT_MS>",
"CHEMBL_MAX_PAGE_SIZE": "<YOUR_CHEMBL_MAX_PAGE_SIZE>",
"CHEMBL_DEFAULT_LIMIT": "<YOUR_CHEMBL_DEFAULT_LIMIT>",
"CHEMBL_DATAFRAME_DROP_ENABLED": "<YOUR_CHEMBL_DATAFRAME_DROP_ENABLED>",
"MCP_LOG_LEVEL": "<YOUR_MCP_LOG_LEVEL>",
"MCP_HTTP_HOST": "<YOUR_MCP_HTTP_HOST>",
"MCP_HTTP_PORT": "<YOUR_MCP_HTTP_PORT>",
"MCP_HTTP_ENDPOINT_PATH": "<YOUR_MCP_HTTP_ENDPOINT_PATH>",
"MCP_AUTH_MODE": "<YOUR_MCP_AUTH_MODE>"
}
}
}
}{
"servers": {
"chembl-mcp-server": {
"type": "stdio",
"command": "bun",
"args": [
"-y",
"@cyanheads/chembl-mcp-server",
"run",
"start:stdio"
],
"env": {
"CANVAS_PROVIDER_TYPE": "<YOUR_CANVAS_PROVIDER_TYPE>",
"CHEMBL_API_BASE_URL": "<YOUR_CHEMBL_API_BASE_URL>",
"CHEMBL_REQUEST_TIMEOUT_MS": "<YOUR_CHEMBL_REQUEST_TIMEOUT_MS>",
"CHEMBL_MAX_PAGE_SIZE": "<YOUR_CHEMBL_MAX_PAGE_SIZE>",
"CHEMBL_DEFAULT_LIMIT": "<YOUR_CHEMBL_DEFAULT_LIMIT>",
"CHEMBL_DATAFRAME_DROP_ENABLED": "<YOUR_CHEMBL_DATAFRAME_DROP_ENABLED>",
"MCP_LOG_LEVEL": "<YOUR_MCP_LOG_LEVEL>",
"MCP_HTTP_HOST": "<YOUR_MCP_HTTP_HOST>",
"MCP_HTTP_PORT": "<YOUR_MCP_HTTP_PORT>",
"MCP_HTTP_ENDPOINT_PATH": "<YOUR_MCP_HTTP_ENDPOINT_PATH>",
"MCP_AUTH_MODE": "<YOUR_MCP_AUTH_MODE>"
}
}
}
}claude mcp add chembl-mcp-server --env CANVAS_PROVIDER_TYPE=<YOUR_CANVAS_PROVIDER_TYPE> --env CHEMBL_API_BASE_URL=<YOUR_CHEMBL_API_BASE_URL> --env CHEMBL_REQUEST_TIMEOUT_MS=<YOUR_CHEMBL_REQUEST_TIMEOUT_MS> --env CHEMBL_MAX_PAGE_SIZE=<YOUR_CHEMBL_MAX_PAGE_SIZE> --env CHEMBL_DEFAULT_LIMIT=<YOUR_CHEMBL_DEFAULT_LIMIT> --env CHEMBL_DATAFRAME_DROP_ENABLED=<YOUR_CHEMBL_DATAFRAME_DROP_ENABLED> --env MCP_LOG_LEVEL=<YOUR_MCP_LOG_LEVEL> --env MCP_HTTP_HOST=<YOUR_MCP_HTTP_HOST> --env MCP_HTTP_PORT=<YOUR_MCP_HTTP_PORT> --env MCP_HTTP_ENDPOINT_PATH=<YOUR_MCP_HTTP_ENDPOINT_PATH> --env MCP_AUTH_MODE=<YOUR_MCP_AUTH_MODE> -- bun -y @cyanheads/chembl-mcp-server run start:stdioRelated MCP servers
Read, write, search, and surgically edit Obsidian vault notes, tags, and frontmatter via MCP.
io.github.cyanheads/git-mcp-server
Comprehensive Git MCP server with 28 tools for clone, commit, branching, merging, and advanced workflows.
Agent-native TypeScript framework for building MCP servers with declarative definitions.
TypeScript template for building MCP servers with declarative tooling, observability, and auth.
Search PubMed/Europe PMC, fetch articles and full text (PMC/EPMC/Unpaywall), citations, MeSH terms.
Search ClinicalTrials.gov — find studies, retrieve results, match patients to eligible trials.