Catalysis Hub MCP Server

by QuentinCody

2 stars
148 downloads
Not rated
GitHub

Description

# 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…

About

# 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…

Details

Author
QuentinCody
GitHub stars
2
Downloads
148
Categories
Other

- Direct execution of any valid GraphQL query against Catalysis Hub’s API.
- Access to catalytic reactions, materials, publications, and surface data.
- MCP standard compliance for AI-agent interoperability.
- Supports parameterized queries with variable binding.
- Robust error handling for connectivity and query issues.
- Academic citation requirement under MIT License.

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Catalysis Hub MCP Server
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Clone the repository, install dependencies with pip install -r requirements.txt, and verify with python3 catalysishub_mcp_server.py --version. Use an MCP client (e.g., MCPClient) to call the catalysishub_graphql tool, passing a GraphQL query string and optional variables. The server communicates via standard input/output and is configured in claude_desktop_config.json with the Python interpreter path and script path.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "catalysis hub mcp server": {
            "catalysishub-mcp-server": {
                "command": "/Users/quentincody/.env/bin/python3",
                "args": [
                    "/Users/quentincody/catalysishub-mcp-server/catalysishub_mcp_server.py"
                ],
                "options": {
                    "cwd": "/Users/quentincody/catalysishub-mcp-server"
                }
            }
        }
    }
}

McpServers

{
    "catalysishub-mcp-server": {
        "command": "/Users/quentincody/.env/bin/python3",
        "args": [
            "/Users/quentincody/catalysishub-mcp-server/catalysishub_mcp_server.py"
        ],
        "options": {
            "cwd": "/Users/quentincody/catalysishub-mcp-server"
        }
    }
}

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

License and Citation

This project is available under the MIT License with an Academic Citation Requirement. This means you can freely use, modify, and distribute the code, but any academic or scientific publication that uses this software must provide appropriate attribution.

For academic/research use:

If you use this software in a research project that leads to a publication, presentation, or report, you must cite this work according to the format provided in CITATION.md.

For commercial/non-academic use:

Commercial and non-academic use follows the standard MIT License terms without the citation requirement.

By using this software, you agree to these terms. See LICENSE.md for the complete license text.

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: httpx for asynchronous HTTP requests
- Transport: Standard input/output communication following MCP specifications

Setup & Installation

1. Clone the repository:

   git clone <repository_url>
cd catalysishub-mcp-server

2. Install dependencies:

   pip install -r requirements.txt

3. Verify 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

1. Use GraphQL Fragments:

   fragment ReactionDetails on Reaction {
id
Equation
ActivationEnergy
Catalyst {
formula
surface
}
}

query {
reactions(first: 10) {
edges {
node {
...ReactionDetails
}
}
}
}

2. 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 to api.catalysis-hub.org
- JSON Decode Error: Check query syntax using Catalysis Hub's GraphQL Playground
- Timeout Errors: Add timeout parameter to complex queries

Acknowledgements

This project builds on the Model Context Protocol (MCP) framework and is designed to interface with the Catalysis Hub database, a comprehensive resource for catalysis research data.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.