Web Analytics

pubchem-agent-toolkit

⭐ 2 stars Simplified Chinese by Milor123

version version version version version version version version version version version version version version version version version version version version

增强版 PubChem MCP 服务器,助力 AI 助手

🧪 一款先进、强大且注重隐私的 MCP 服务器,使 AI 助手能够智能检索并访问 PubChem 的化合物信息。

此 PubChem MCP 服务器是 AI 助手(如 AnythingLLM 中的助手)与 PubChem 海量化学数据库之间的强大桥梁。它利用模型上下文协议(MCP),让 AI 模型能够智能、强韧地搜索化合物并以编程方式获取详细属性。


✨ 核心功能

这不仅仅是另一个 PubChem 封装器。该服务器从零开始重构,拥有极高的智能和鲁棒性:

---


🚀 无需安装:可在 Smithery.ai 在线体验

对于新接触 MCP 服务器或希望无需本地部署快速测试工具功能的用户,Smithery.ai 提供了在线托管版。您可直接在浏览器中与代理对话。

<-- 在 Smithery.ai 上体验 PubChem 在线代理 -->

快速开始指南:

> ✅ 推荐模型,效果更佳 >
为获得最高精度(尤其是长小数位的数值),强烈建议使用强大的模型。以下模型已测试并与该工具完美兼容:
>
* Anthropic 的 Claude 3 Sonnet

* OpenAI 的 GPT-4 Turbo(或更高版本,如 GPT-4o)
>
我们确认这两个模型都能正确处理工具返回的十进制数字的完整精度,无任何四舍五入。


🚀 快速开始与安装

本服务器设计为本地运行,可以在您的桌面或 AnythingLLM 的 Docker 环境中运行。

1. 依赖项

该项目依赖于一些 Python 库。请确保它们已安装在您的环境中。

创建一个 requirements.txt 文件,并填入以下内容:

requests
bs4 
mcp 
pubchempy
pandas
PySocks

使用 uvpip 安装它们:

uv venv
.venv\Scripts\activate
uv pip install -r requirements.txt
(注意:只有在您计划使用 Tor SOCKS5 代理功能时,才需要 PySocks。)

2. 配置

服务器通过一个 config.ini 文件进行配置,该文件在您首次运行时会自动创建。此文件将出现在与 pubchem_server.py 脚本相同的目录中。

默认 config.ini

[proxy]

Change 'use_proxy' to 'true' to route all requests through a proxy.

Essential for protecting your privacy if you use Tor.

use_proxy = false

Defines the proxy type. Options:

socks5h -> (Recommended for Tor) The native SOCKS proxy for Tor. More secure.

http -> An HTTP proxy. If using Tor, requires additional configuration.

proxy_type = socks5h

The proxy address. THIS IS A CRITICAL SETTING!

- If you run this script on your DESKTOP, use: 127.0.0.1

- If you run this script inside DOCKER, use: host.docker.internal

host = 127.0.0.1

The proxy port.

9050 -> Default port for Tor's SOCKS proxy.

8118 -> Default port for Tor's HTTP proxy (if enabled).

port = 9050

3. 与 AnythingLLM 集成

按照官方文档将其添加为自定义 MCP 服务器。关键是将 command 指向你的 Python 可执行文件和 pubchem_server.py 脚本。

AnythingLLM 桌面版示例(plugins/anythingllm_mcp_servers.json):

{
  "mcpServers": {
    "pubchem": {
      "name": "PubChem Server (Enhanced)",
      "transport": "stdio",
      "command": "\"C:\\path\\to\\your\\.venv\\Scripts\\python.exe\" \"C:\\path\\to\\your\\project\\pubchem_server.py\"",
      "cwd": "C:\\path\\to\\your\\project"
    }
  }
}

3.1 使用 AnythingLLM 的实现示例

以下是与代理交互的一些示例。这些测试是使用 AnythingLLM 桌面版,通过 OpenRouter 连接到各种大型语言模型进行的。

我们测试中的一个关键发现是所选择模型的重要性。我们强烈不建议使用小型或本地模型来完成此任务。较小的模型往往难以正确解析工具返回的数据,导致错误,如幻觉值、格式错误,或最关键的,对十进制数字进行四舍五入,这违背了该高精度工具的初衷。

为了确保结果的完整性,始终建议验证 MCP 返回的原始数据。您可以在下一节学习如何操作:3.2 如何在日志中验证 MCP 输出

imagen

另一方面,多个模型表现出色。我们使用 Google 的 Gemini 2.5 Flash lite 取得了卓越的结果,它在处理长十进制数字和正确格式化最终 Markdown 表格方面表现出色。

Google gemini 2.5 flash lite 无提示和有提示时均保持完美小数(示例中使用了 0.6 温度)

imagen

针对这个特定任务,我个人最喜欢的是 Gemini 2.5 Flash lite,因为它表现出一致的准确性和可靠性。

3.2 如何在日志中验证 MCP 输出

确认代理接收正确数据且 LLM 无误的最佳方法是检查 MCP 服务器生成的调试日志文件。

该服务器配置为自动在项目目录的子文件夹中创建日志文件。文件位置为:

your-project-folder/
└── logs_mcp/
    └── mcp_debug.log
mcp_debug.log 文件中,您将找到工具在模型处理之前发送回 LLM 的精确 JSON 数据。您可以手动检查此 JSON 以验证任何值,特别是来自诸如 monoisotopic_mass 这类属性的长小数,确保 LLM 在最终答案中未引入任何舍入错误或幻觉。


📊 使用方法

集成后,当询问化学信息时,您的 AI 助手将自动使用此工具。主要暴露的工具是 search_compounds_by_name

示例提示

此提示演示了该工具处理包含不同名称类型的化合物列表并检索多个属性的能力。

@agent
Please use your PubChem tool to find information on the following compounds:

  • Thiamine (Vitamin B1)
  • Riboflavin (Vitamin B2)
  • Folic Acid
  • Hydroxocobalamin
For each compound found, please retrieve the IUPAC Name, Molecular Formula, and Monoisotopic Mass.

Present all the results in a single Markdown table.

代理将调用 search_compounds_by_name 工具,该工具将智能地查找每个化合物,检索其数据,并将其返回给大型语言模型进行格式化。


🛠 MCP 工具暴露

search_compounds_by_name

通过名称逐个搜索多个化合物,使用智能回退策略,配合暂停和重试以实现最大可靠性。

参数:

返回: 一个字典列表,每个字典包含找到的化合物信息或详细说明该化合物搜索失败原因的错误信息。


🙏 致谢

本项目深受原始 PubChem-MCP-Server (由 JackKuo666 创建)基础的启发和构建。

虽然本仓库不是直接分支,但原始项目是关键起点。本版本增强了原始概念,重点在于极端的稳健性、智能搜索策略以及通过可选的 Tor 集成🧅保障用户隐私。

非常感谢原作者的精彩工作及其与社区的分享。


⚠️ 免责声明

本工具仅用于研究和教育目的。请尊重 PubChem 的服务条款,负责任地使用本工具。

--- Tranlated By Open Ai Tx | Last indexed: 2025-08-27 ---