催化中心GraphQL接口服务

提供对催化研究中心数据的程序化访问,支持灵活的GraphQL查询,适用于催化反应、材料系统和研究文献的数据检索与分析。

  • by QuentinCody
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 QuentinCody/catalysishub-mcp-server

使用说明

催化中心MCP服务器

催化中心GraphQL API的模型上下文协议(MCP)服务器接口,通过灵活的GraphQL查询实现对催化研究数据的编程访问。

主要特点

  • 直接GraphQL访问:针对Catalysis Hub的API执行任何有效的GraphQL查询
  • 全面的数据访问:
    • 催化反应(方程式、条件、催化剂)
    • 材料系统(结构、性能、描述符)
    • 研究出版物(标题、DOI、作者)
    • 表面反应数据(吸附能、结合位点)
  • MCP标准合规性:实现AI代理互操作性的模型上下文协议
  • 灵活的查询支持:使用变量参数化执行复杂查询
  • 错误处理:用于API连接和查询执行的强大错误报告

许可证和引用

该项目在麻省理工学院许可证下提供,并附有学术引文要求。这意味着您可以自由使用、修改和分发代码,但使用此软件的任何学术或科学出版物都必须提供适当的归属。

学术/研究用途:

如果您在导致出版物、演示文稿或报告的研究项目中使用此软件,您 必须 根据中提供的格式引用此作品 引文.md.

商业/非学术用途:

商业和非学术用途遵循麻省理工学院的标准许可条款,无需引用。

使用本软件即表示您同意这些条款。看 许可证.md 获取完整的许可证文本。

实现细节

  • 服务器配置 (比赛 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"
      }
    }
    
  • 核心依赖: httpx 用于异步HTTP请求
  • 运输:遵循MCP规范的标准输入/输出通信

设置和安装

  1. 克隆存储库:

    git clone <repository_url>
    cd catalysishub-mcp-server
    
  2. 安装依赖项:

    pip install -r requirements.txt
    
  3. 验证安装:

    python3 catalysishub_mcp_server.py --version
    # Should output: catalysishub-mcp-server 0.1.0
    

使用示例

基本查询执行

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))

带变量的参数化查询

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
)

查询优化提示

  1. 使用GraphQL片段:

    fragment ReactionDetails on Reaction {
        id
        Equation
        ActivationEnergy
        Catalyst {
            formula
            surface
        }
    }
    
    query {
        reactions(first: 10) {
            edges {
                node {
                    ...ReactionDetails
                }
            }
        }
    }
    
  2. 批量相关查询:

    query BatchQuery {
        reactions: reactions(first: 5) { edges { node { id Equation } } }
        materials: systems(first: 5) { edges { node { formula energy } } }
    }
    

响应结构

成功的响应遵循以下结构:

{
    "data": { /* Query results */ },
    "extensions": {
        "responseMetadata": {
            "requestDuration": 145,
            "apiVersion": "2024-06"
        }
    }
}

错误响应包括详细的诊断:

{
    "errors": [{
        "message": "Cannot query field 'invalidField' on type 'Reaction'",
        "locations": [{"line": 5, "column": 21}],
        "path": ["query", "reactions", "edges", "node", "invalidField"]
    }]
}

故障排除

常见问题:

  • HTTP Request Error:验证网络连接到 api.catalysis-hub.org
  • JSON Decode Error:使用Catalysis Hub检查查询语法 GraphQL游乐场
  • Timeout Errors:添加 timeout 复杂查询的参数

致谢

该项目建立在模型上下文协议(MCP)框架的基础上,旨在与催化中心数据库对接,该数据库是催化研究数据的综合资源。