Access Catalysis Hub Research Data via GraphQL
An MCP server for querying Catalysis Hub's GraphQL API - catalytic reactions, material systems, and surface reaction data - from an AI agent.
Why it matters
Programmatically access and query the Catalysis Hub's GraphQL API to retrieve diverse catalytic research data, including reactions, materials, publications, and surface reaction details.
Outcomes
What it gets done
Execute GraphQL queries for catalytic reaction data.
Retrieve material systems data and associated reactions.
Search for scientific publications by author or DOI.
Query surface reaction data, including adsorption energies.
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/vb-catalysis-hub | bash Capabilities
Tools your agent gets
Executes GraphQL queries to the Catalysis Hub API to retrieve catalytic research data
Overview
Catalysis Hub MCP Server
This MCP server exposes Catalysis Hub's GraphQL API as a single query tool, giving access to catalytic reactions, material systems, publications, and surface reaction data. It supports parameterized queries, fragments, and batched requests, with detailed error diagnostics on failure. Use it for programmatic catalysis-research data queries via an AI agent that understands GraphQL. It is MIT licensed but requires academic citation for scientific publications that use it.
What it does
An MCP server that gives an AI agent a single tool, catalysishub_graphql, to run arbitrary GraphQL queries against Catalysis Hub's API for catalysis research data: catalytic reactions (equations, conditions, catalysts), material systems (structures, properties, descriptors), research publications (titles, DOIs, authors), and surface reaction data (adsorption energies, binding sites). It supports parameterized queries with variables, GraphQL fragments to keep query definitions reusable, and batching multiple related queries in a single request. Successful responses come back as a data object plus response metadata (request duration, API version); failed ones return structured diagnostics with the error message, the exact line/column location, and the query path that caused it.
When to use - and when NOT to
Use it for programmatic catalysis-research data mining - pulling reaction, material, or publication data into an AI-agent workflow via direct GraphQL. Note the license: MIT with an Academic Citation Requirement - commercial and non-academic use follows standard MIT terms, but any academic or scientific publication using this software must cite it per CITATION.md. Do NOT use it if you need a simple, schema-free interface - it assumes familiarity with GraphQL and the Catalysis Hub schema - or if you need guaranteed uptime, since it depends on the public api.catalysis-hub.org endpoint staying reachable.
Capabilities
Direct execution of any valid GraphQL query; comprehensive access to reactions, material systems, publications, and surface data; MCP-standard compliance for AI-agent interoperability; parameterized queries with variables; and robust error handling that reports API connectivity and query-execution problems in detail. Query optimization guidance is included too: defining reusable GraphQL fragments (for example, a ReactionDetails fragment pulling id, Equation, ActivationEnergy, and Catalyst fields) and batching independent queries like reactions and materials together under a single named query to cut round-trips.
How to install
git clone <repository_url>
cd catalysishub-mcp-server
pip install -r requirements.txt
python3 catalysishub_mcp_server.py --version
The version check should print catalysishub-mcp-server 0.1.0. The server communicates over standard input/output per the MCP specification and relies on httpx for asynchronous HTTP requests to the Catalysis Hub API. A Claude Desktop config points at the Python interpreter and the server script with a cwd option set to the repo directory. Common troubleshooting: an HTTP Request Error means checking connectivity to api.catalysis-hub.org, a JSON Decode Error means checking query syntax in Catalysis Hub's GraphQL Playground, and timeout errors are resolved by adding a timeout parameter to complex queries.
Who it's for
Materials scientists, computational chemists, and catalysis researchers who want to query Catalysis Hub programmatically from an AI agent, and developers building research tooling on top of its GraphQL schema - academic users specifically need to track the citation requirement before publishing results derived from it.
Source README
Catalysis Hub MCP Server
A Model Context Protocol (MCP) server interface to Catalysis Hub's GraphQL API, enabling programmatic access to catalysis research data through flexible GraphQL queries.
Key Features
- Direct GraphQL Access: Execute any valid GraphQL query against Catalysis Hub's API
- Comprehensive Data Access:
- Catalytic reactions (equations, conditions, catalysts)
- Material systems (structures, properties, descriptors)
- Research publications (titles, DOIs, authors)
- Surface reaction data (adsorption energies, binding sites)
- MCP Standard Compliance: Implements the Model Context Protocol for AI-agent interoperability
- Flexible Query Support: Execute complex queries with variables parameterization
- Error Handling: Robust error reporting for API connectivity and query execution
Implementation Details
- Server Configuration (matches
claude_desktop_config.json):{ "command": "/Users/quentincody/.env/bin/python3", "args": ["/Users/quentincody/catalysishub-mcp-server/catalysishub_mcp_server.py"], "options": { "cwd": "/Users/quentincody/catalysishub-mcp-server" } } - Core Dependency:
httpxfor asynchronous HTTP requests - Transport: Standard input/output communication following MCP specifications
Setup & Installation
Clone the repository:
git clone <repository_url> cd catalysishub-mcp-serverInstall dependencies:
pip install -r requirements.txtVerify installation:
python3 catalysishub_mcp_server.py --version # Should output: catalysishub-mcp-server 0.1.0
Usage Examples
Basic Query Execution
from mcp.client import MCPClient
async with MCPClient("catalysishub") as hub:
result = await hub.catalysishub_graphql(
query="""{
reactions(first: 5) {
edges {
node {
id
Equation
Temperature
}
}
}
}"""
)
print(json.loads(result))
Parameterized Query with Variables
variables = {
"materialId": "mp-1234",
"firstResults": 5
}
response = await hub.catalysishub_graphql(
query="""query GetMaterial($materialId: String!, $firstResults: Int!) {
systems(uniqueId: $materialId) {
edges {
node {
energy
Cifdata
relatedReactions(first: $firstResults) {
edges {
node {
id
Equation
}
}
}
}
}
}
}""",
variables=variables
)
Query Optimization Tips
Use GraphQL Fragments:
fragment ReactionDetails on Reaction { id Equation ActivationEnergy Catalyst { formula surface } } query { reactions(first: 10) { edges { node { ...ReactionDetails } } } }Batch Related Queries:
query BatchQuery { reactions: reactions(first: 5) { edges { node { id Equation } } } materials: systems(first: 5) { edges { node { formula energy } } } }
Response Structure
Successful responses follow this structure:
{
"data": { /* Query results */ },
"extensions": {
"responseMetadata": {
"requestDuration": 145,
"apiVersion": "2024-06"
}
}
}
Error responses include detailed diagnostics:
{
"errors": [{
"message": "Cannot query field 'invalidField' on type 'Reaction'",
"locations": [{"line": 5, "column": 21}],
"path": ["query", "reactions", "edges", "node", "invalidField"]
}]
}
Troubleshooting
Common Issues:
HTTP Request Error: Verify network connectivity toapi.catalysis-hub.orgJSON Decode Error: Check query syntax using Catalysis Hub's GraphQL PlaygroundTimeout Errors: Addtimeoutparameter to complex queries
FAQ
Common questions
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.