Улучшенный сервер PubChem MCP для AI-ассистентов
🧪 Продвинутый, надежный и ориентированный на конфиденциальность сервер MCP, позволяющий AI-ассистентам интеллектуально искать и получать информацию о химических соединениях из PubChem.
Этот сервер PubChem MCP служит мощным мостом между AI-ассистентами (например, в AnythingLLM) и обширной химической базой данных PubChem. Он использует Model Context Protocol (MCP), чтобы дать AI-моделям возможность выполнять умные, устойчивые поиски химических соединений и программно получать их подробные свойства.
✨ Основные возможности
Это не просто еще одна оболочка PubChem. Сервер был полностью переработан для высокой надежности и интеллектуальности:
- 🧠 Умный резервный поиск: Если поиск по распространенному названию (например, «Витамин D») не удается, сервер автоматически выполняет более глубокий поиск в базе данных PubChem Substance, чтобы найти правильное соединение. Это значительно повышает успешность при неоднозначных запросах.
- 🛡️ Надежная обработка ошибок и повторные попытки: Сервер спроектирован так, чтобы аккуратно обрабатывать ошибки API. Если возникает ошибка «Сервер занят» от PubChem, он автоматически подождет и повторит запрос, обеспечивая успех ваших запросов даже при высокой нагрузке.
- 🔒 Опциональная поддержка Tor-прокси: Вы полностью контролируете свою конфиденциальность. Простой файл
config.iniпозволяет направлять все запросы через сеть Tor (через SOCKS5 или HTTP-прокси), предотвращая раскрытие вашего IP-адреса. Сервер по умолчанию безопасен и никогда не раскроет ваш IP в случае сбоя соединения с прокси. - 🔎 Поиск одного и нескольких соединений: Легко обрабатывает запросы на одно или несколько соединений в одном сообщении.
- 🧪 Получение подробных свойств: Доступ к ключевым химическим свойствам, таким как название IUPAC, молекулярная формула, молекулярная масса и, что важно, моноизотопная масса.
🚀 Не требуется установка: попробуйте онлайн на Smithery.ai
Если вы новичок в серверах MCP или просто хотите протестировать возможности этого инструмента без локальной установки, доступна живая хостинговая версия на Smithery.ai. Это позволяет общаться с агентом прямо в вашем браузере.
<-- Исследуйте живого агента PubChem на Smithery.ai -->
Как начать:
- Нажмите на ссылку выше, чтобы перейти на страницу сервера.
- Войдите, используя свою учетную запись GitHub или Google.
- Нажмите кнопку "Explore capabilities" для открытия интерфейса чата и начните тестирование!
Для достижения максимальной точности, особенно при работе с длинными десятичными числами, мы настоятельно рекомендуем использовать мощные модели. Следующие варианты протестированы и отлично работают с этим инструментом:>
* Claude 3 Sonnet от Anthropic
* OpenAI GPT-4 Turbo (или более новые версии, такие как GPT-4o)>
Мы подтвердили, что обе модели корректно обрабатывают полную точность десятичных чисел, возвращаемых инструментом, без округления.
🚀 Быстрый старт и установка
Этот сервер предназначен для локального запуска, либо на вашем рабочем столе, либо в среде Docker AnythingLLM.
1. Зависимости
Этот проект использует несколько библиотек Python. Убедитесь, что они установлены в вашей среде.
Создайте файл requirements.txt со следующим содержимым:
requests
bs4
mcp
pubchempy
pandas
PySocksУстановите их с помощью uv или pip:
uv venv
.venv\Scripts\activate
uv pip install -r requirements.txt
(Примечание: PySocks требуется только если вы планируете использовать функцию Tor SOCKS5 proxy.)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 = falseDefines 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 = socks5hThe 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.1The proxy port.
9050 -> Default port for Tor's SOCKS proxy.
8118 -> Default port for Tor's HTTP proxy (if enabled).
port = 90503. Интеграция с AnythingLLM
Следуйте официальной документации, чтобы добавить это как пользовательский MCP сервер. Ключевой момент — указать command на ваш исполняемый файл Python и скрипт pubchem_server.py.
Пример для AnythingLLM Desktop (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 Desktop, подключаясь к различным большим языковым моделям через OpenRouter.
Важный вывод из наших тестов — это значимость выбранной модели. Мы настоятельно не рекомендуем использовать малые или локальные модели для этой задачи. Малые модели часто испытывают трудности с корректным разбором данных, возвращаемых инструментом, что приводит к ошибкам, таким как галлюцинированные значения, неправильное форматирование или, что особенно критично, округление десятичных чисел, что нивелирует преимущество высокоточного инструмента.
Для обеспечения целостности ваших результатов всегда полезно проверять необработанные данные, возвращаемые MCP. Узнать, как это сделать, вы сможете в следующем разделе: 3.2 Как проверить выводы MCP в логах.
С другой стороны, несколько моделей показали отличные результаты. Мы достигли выдающихся результатов с Google Gemini 2.5 Flash lite. Эта модель проявила высокую точность при работе с длинными десятичными числами и корректном форматировании итоговой Markdown-таблицы.
Google gemini 2.5 flash lite без промпта и с промптом сохраняет идеальные десятичные значения (в примере используется температура 0.6)
Для данной задачи моя личная рекомендация — Gemini 2.5 Flash lite благодаря ее стабильной точности и надежности.
3.2 Как проверить выводы MCP в логах
Лучший способ убедиться, что агент получает корректные данные и что LLM не допускает ошибок — это проверить отладочный лог-файл, создаваемый сервером MCP.
Этот сервер настроен на автоматическое создание лог-файла в подпапке вашего проектного каталога. Местоположение будет:
your-project-folder/
└── logs_mcp/
└── mcp_debug.logВнутри файла mcp_debug.log вы найдете точные JSON-данные, которые инструмент отправляет обратно в LLM до того, как модель их обработает. Вы можете вручную проверить этот 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, который будет интеллектуально искать каждый соединение, извлекать его данные и возвращать их LLM для форматирования.
🛠 MCP Инструмент
search_compounds_by_name
Осуществляет поиск нескольких соединений по названию, поочередно, используя умную стратегию отката с паузами и повторными попытками для максимальной надежности.
Параметры:
-
names(List[str]): Список названий соединений. Пример:["Aspirin", "Ibuprofen"]
🙏 Благодарности
Данный проект был вдохновлен и построен на основе оригинального PubChem-MCP-Server, созданного JackKuo666.
Хотя этот репозиторий не является прямым форком, оригинальный проект был важной отправной точкой. Эта версия расширяет исходную концепцию, делая упор на максимальную надежность, интеллектуальные стратегии поиска и конфиденциальность пользователя через интеграцию Tor 🧅.
Огромное спасибо автору оригинального проекта за отличную работу и за то, что он поделился ею с сообществом.
⚠️ Отказ от ответственности
Этот инструмент предназначен для исследовательских и образовательных целей. Пожалуйста, уважайте условия использования PubChem и используйте этот инструмент ответственно.
--- Tranlated By Open Ai Tx | Last indexed: 2025-08-27 ---