Skip to content

Repository files navigation

Web Knowledge MCP

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.

About

MCP-сервер для поиска и извлечения HTML/PDF в структурированные документы; интеграция с RAG остаётся на стороне клиента.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages