logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

ChEMBL-Compute-Endpoint

A high-speed interface server providing programmatic access to the comprehensive ChEMBL chemical informatics repository, facilitating data retrieval and execution of molecular calculations via an asynchronous mechanism. It features dual communication protocols (HTTP and standard I/O) alongside robust internal exception management.

Author

ChEMBL-Compute-Endpoint logo

JackKuo666

No License

Quick Info

GitHub GitHub Stars 0
NPM Weekly Downloads 0
Tools 1
Last Updated 2026-02-19

Tags

chemblapisapichembl databaseaccess chemblchemical data

ChEMBL-Compute-Endpoint

smithery badge

This component serves as a sophisticated wrapper utilizing the FastMCP paradigm, built upon the chembl_webresource_client library, to expose the functionalities of the ChEMBL data source through a network interface.

Core Capabilities

  • Full spectrum of ChEMBL database query functionality exposed via API.
  • Asynchronous request handling implemented leveraging the FastMCP architectural pattern.
  • Integrated safeguards for error conditions and request time limits.
  • Support for both client-server (HTTP) and direct inter-process communication (stdio).
  • Comprehensive application of static type checking and developer documentation strings.

Deployment Instructions

# Obtain the source repository
git clone https://github.com/yourusername/ChEMBL-MCP-Server.git
cd ChEMBL-MCP-Server

# Install required system packages
pip install -r requirements.txt

Operational Guide

Initiating the Service

# Launch the HTTP listener using default settings
python chembl_searver.py

# Define the binding network address and port number
python chembl_searver.py --host 0.0.0.0 --port 8080

# Engage the stdio transport mode
python chembl_searver.py --transport stdio

# Adjust verbosity level for logging output
python chembl_searver.py --log-level DEBUG

Configuration Parameters

  • --host: Network interface address for service binding; defaults to 127.0.0.1.
  • --port: Network communication port number; defaults to 8000.
  • --transport: Selection of communication protocol, options are http or stdio; defaults to http.
  • --log-level: Granularity setting for system messages, selectable from DEBUG, INFO, WARNING, ERROR, CRITICAL; defaults to INFO.

Exposed Functionality

The endpoint exposes the following functional groups:

Data Retrieval Interfaces

  • example_activity: Retrieve records pertaining to biological activity measurements.
  • example_assay: Fetch details regarding experimental assay procedures.
  • example_target: Obtain information on molecular targets.
  • example_molecule: Query data associated with specific chemical structures.
  • example_drug: Access information related to pharmaceutical agents.
  • Subsequent data entity functions...

Molecular Manipulation Utilities

  • example_canonicalizeSmiles: Convert various SMILES notations into their standard canonical form.
  • example_smiles2inchi: Transformation of SMILES string representation into the IUPAC InChI format.
  • example_smiles2svg: Generation of an SVG graphical representation from a SMILES input.
  • example_structuralAlerts: Identification and reporting of substructures flagged as potential toxicophores.
  • Additional chemical computation methods...

Illustrative Code Snippets

Refer to the source file chembl_search.py for practical demonstrations of API invocation.

System Dependencies

  • chembl_webresource_client: Interface layer for the ChEMBL web services.
  • mcp: The underlying Micro-Communication Protocol framework.
  • fastapi: Web application framework for building the API layer.
  • uvicorn: The ASGI server implementation.
  • asyncio: Python's native asynchronous I/O toolkit.

Licensing Information

MIT

WIKIPEDIA: XMLHttpRequest (XHR) is an Application Programming Interface encapsulated within a JavaScript object that facilitates the transmission of HTTP queries from a web browser environment to a remote server. The methods provided enable a client-side application to dispatch requests to the server subsequent to the initial page render, and subsequently receive data in return. XMLHttpRequest forms a foundational element of asynchronous JavaScript and XML (Ajax) programming paradigms. Before the advent of Ajax, document interaction with the server was predominantly executed via conventional hyperlinks and HTML form submissions, processes that typically necessitated a full page reload.

== Chronology == The foundational concept underpinning XMLHttpRequest was conceptualized in the year 2000 by the engineering staff at Microsoft, specifically for the Outlook application. This concept was subsequently integrated into Internet Explorer version 5 (released in 1999). Nevertheless, the initial implementation did not utilize the standardized XMLHttpRequest identifier. Instead, developers relied on instantiation via ActiveXObject("Msxml2.XMLHTTP") or ActiveXObject("Microsoft.XMLHTTP"). By the release of Internet Explorer 7 (2006), all major browsers had adopted the universally recognized XMLHttpRequest identifier. The XMLHttpRequest identifier has since solidified its position as the established convention across dominant browser engines, including Mozilla's Gecko rendering engine (since 2002), Safari version 1.2 (2004), and Opera version 8.0 (2005).

=== Formal Standardization === The World Wide Web Consortium (W3C) officially published a preliminary specification (Working Draft) for the XMLHttpRequest object on April 5, 2006. On February 25, 2008, the W3C released the Level 2 specification draft. The Level 2 enhancement introduced capabilities for monitoring the progression of transfer events, permitting cross-origin data exchange, and handling raw byte streams. By the close of 2011, the specifications introduced in Level 2 were merged back into the primary standard document. In late 2012, the maintenance and evolution of the specification were transitioned to the WHATWG group, which continues to manage it as a dynamic document utilizing Web IDL definitions.

== Practical Implementation == Generally, dispatching a network query using XMLHttpRequest entails executing several sequential programming actions.

  1. Instantiate an XMLHttpRequest entity by invoking its constructor method:
  2. Invoke the .open() method to define the request methodology, pinpoint the target resource URI, and specify whether the operation should be synchronous or asynchronous:
  3. For asynchronous transmissions, establish an event handler function that will be triggered upon state transitions of the request:
  4. Commence the transmission sequence by calling the .send() method:
  5. Process the server's response by monitoring the state changes within the established event handler. If the server successfully delivers the response data, it is typically accessible via the .responseText attribute by default. When the processing cycle concludes, the object transitions to state 4, designated as the "done" state. Beyond these fundamental steps, XMLHttpRequest offers numerous configurable parameters to govern request transmission behavior and response parsing strategies. Custom HTTP header fields can be programmatically appended to outgoing requests to influence server handling, and client data can be uploaded by passing it directly into the .send() invocation. The received data stream can be interpreted from a JSON structure into an immediately operational JavaScript object, or it can be processed incrementally as data chunks arrive, obviating the necessity of waiting for the complete payload.

== Inter-Domain Communication ==

During the nascent stages of the World Wide Web's evolution, it was observed that vulnerabilities existed which permitted unauthorized data access across different website domains, leading to security concerns...

See Also

`