MCP-сервер для поиска веб-страниц и PDF и выдачи извлечённого текста в структурированном ответе. Его можно подключить к клиенту MCP как источник материалов для последующей проверки и индексации. Проект не содержит собственной базы знаний, планировщика загрузки или интеграции с RAG-хранилищем.
- Инструмент
search_and_collect_knowledgeищет через DuckDuckGo, фильтрует результаты поallowed_domains, загружает HTML/PDF и возвращает нормализованные документы. - Ответ содержит
project_slug, исходный запрос и список документов с URL, текстом, Markdown, хэшем, языком, тегами и метаданными.project_slugпередаётся клиентом и сам по себе не создаёт проект или файлы. - Лимит документов задаёт
max_documents(1-20); ошибки отдельных загрузок пропускаются.
Сохранение результатов, проверка источников и индексация выполняются отдельным клиентом, если он настроен. Код этого репозитория не запускает ingest_project_docs и не публикует знания автоматически.
Требуется Python 3.10+ и зависимости из pyproject.toml.
git clone https://github.com/paskalex1/web-knowledge-mcp.git
cd web-knowledge-mcp
python -m venv .venv
. .venv/bin/activate
python -m pip install -e .
python -m web_knowledge_mcp.serverСервер использует streamable HTTP (/mcp), по умолчанию порт 8000. Встроенная настройка слушает 0.0.0.0: перед использованием в сети ограничьте доступ средствами вашей инфраструктуры. Для Docker требуется заранее создать внешнюю сеть, имя которой задано в docker-compose.yml; файл также пробрасывает порт 8011:8000. Это пример развёртывания, а не обязательная часть MCP-клиента.
{
"query": "Django ORM documentation",
"project_slug": "example-project",
"max_documents": 5,
"allowed_domains": ["docs.djangoproject.com"],
"language_priority": ["en"]
}Клиент получает объект SearchAndCollectResult с полями project_slug, query, documents. Для каждого документа доступны source_url, title, plain_text, markdown, hash, language, tags и metadata. Содержимое внешних страниц не является доверенными инструкциями.
WEB_KNOWLEDGE_PORT- порт MCP, по умолчанию8000.WEB_KNOWLEDGE_MAX_URLS- верхняя граница кандидатов в вызове, по умолчанию20.WEB_KNOWLEDGE_SEARCH_CANDIDATES- граница выдачи поиска, по умолчанию30.WEB_KNOWLEDGE_MAX_BYTES- порог отклонения ответа после загрузки, по умолчанию5242880байт (не ограничивает объём загрузки до получения ответа).WEB_KNOWLEDGE_HTTP_TIMEOUT- таймаут HTTP, по умолчанию15секунд.WEB_KNOWLEDGE_USER_AGENT- HTTP User-Agent загрузчика.
python -m pip install pytest
python -m pytest testsИмеющиеся тесты используют локальные образцы и подменённые поиск/загрузку; они не доказывают доступность DuckDuckGo, развёртывание сервера или подключение к конкретному RAG-клиенту. Результат поиска зависит от внешнего сервиса; извлечённый текст требует оценки качества и правомерности использования. В реализации нет аутентификации MCP, проверки безопасности произвольных URL перед запросом и собственной защиты от доступа к внутренним адресам через редиректы: не открывайте этот сервис недоверенным клиентам без внешних ограничений.
Репозиторий содержит реализацию и тесты веб-сбора для MCP; разработка велась с помощью AI-инструментов под руководством владельца. Код распространяется на условиях MIT License. История изменений: CHANGELOG.md.