metawarc MCP-интеграция
metawarc экспонирует MCP-сервер (Model Context Protocol) для AI-агентов: Claude Desktop, Cursor, Continue, Cline, Cody и любых других MCP-совместимых клиентов. Сервер предоставляет read-only доступ к индексированной WARC-коллекции через 7 типизированных инструментов.
- Требуется:
metawarc[mcp](дополнительноmetawarc[api]если нужен REST параллельно). - Полная документация: ruarxive.org/metawarc/integrations/mcp.
- Раздел «Агенты и MCP» в cookbook: ruarxive.org/metawarc/use-cases/agents-and-mcp.
Зачем нужен MCP-сервер
WARC-коллекция в DuckDB-каталоге — это «сокровищница», в которой часто нельзя просто SQL-запросом ковыряться, особенно если коллекция лежит на общем диске, у неё несколько владельцев или нужна аудит-трасса. MCP-сервер metawarc решает это:
- Allowlist инструментов — агент видит только то, что явно разрешено.
- Без сырого SQL — нет инструмента «выполнить произвольный запрос».
- Без файловой системы — агент не может попросить «прочитай файл по пути
/var/data/raw.warc.gz». - Bound-параметры — все фильтры прогоняются через типизированные Pydantic-модели, невалидные значения отвергаются.
- Пагинация и лимиты —
list_recordsимеетlimit(по умолчанию 50, максимум 100) иpage(максимум 100). Агент не сможет за раз выгрузить всю коллекцию. - Read-only by design — нет ни одного инструмента для записи, удаления, модификации.
Установка и запуск
# Установка с поддержкой MCP
pip install 'metawarc[mcp]'
# Запуск по stdio (типичный режим для локальных IDE)
metawarc mcp --dbfile collection.db
# Запуск по HTTP на loopback (для удалённых IDE)
metawarc mcp --dbfile collection.db --transport http --port 8765
# Транспорт по HTTP вне loopback требует явного флага
metawarc mcp --dbfile collection.db --transport http --allow-insecure
Подключение к AI-клиентам
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json (macOS) или %APPDATA%/Claude/claude_desktop_config.json (Windows):
{
"mcpServers": {
"ruarxive-metawarc": {
"command": "metawarc",
"args": ["mcp", "--dbfile", "/path/to/collection.db"]
}
}
}
Cursor
В ~/.cursor/mcp.json:
{
"mcpServers": {
"ruarxive-metawarc": {
"command": "metawarc",
"args": ["mcp", "--dbfile", "/path/to/collection.db"]
}
}
}
Continue
В ~/.continue/config.json:
{
"experimental": {
"modelContextProtocolServers": [
{
"name": "ruarxive-metawarc",
"command": "metawarc",
"args": ["mcp", "--dbfile", "/path/to/collection.db"]
}
]
}
}
HTTP-транспорт (удалённый агент)
{
"mcpServers": {
"ruarxive-metawarc": {
"url": "http://127.0.0.1:8765/mcp"
}
}
}
Доступные инструменты
Сервер экспонирует ровно 7 типизированных инструментов. Все параметры валидируются Pydantic-моделями; недопустимые значения возвращают ошибку ValidationError, а не молча подставляются.
| Инструмент | Назначение | Ключевые параметры |
|---|---|---|
list_archives | Список всех проиндексированных WARC-файлов в каталоге. | — |
list_records | Пагинированный список записей. | mime, host, status, from_date, to_date, limit (≤100), page (≤100) |
get_record_metadata | Метаданные одной записи (WARC-заголовки + HTTP-заголовки). | record_id |
get_record_headers | Только HTTP-заголовки записи. | record_id |
search_records | Полнотекстовый поиск по фразе в извлечённых текстах. Требует metawarc index-content --text. | query, limit |
collection_stats | Сводная статистика по коллекции. | dimension: mime | ext | status | host | date | size_bucket |
metadata_summary | Сводка по извлечённым метаданным. | kind: pdfs | images | ooxmldocs | oledocs | videos | audio | fonts | all |