# VMK Data MCP Server

MCP-сервер для поиска по базе данных недвижимости (`vmk_data`).
Предоставляет AI-агенту (Claude) инструменты для:
- **семантического (векторного) поиска** через pgvector + HNSW
- **полнотекстового поиска** через готовую FTS-колонку (украинский конфиг)
- **фильтрации по метаданным** (цена, район, комнаты, метро и т.д.)
- **пагинации и сортировки** по релевантности

## Транспорт

**Streamable HTTP** (MCP 2025 spec) на порту **8080**, endpoint `/mcp`.
Поддерживает как GET (SSE-стрим), так и POST (отправка сообщений).

## Инструменты

| Инструмент | Описание |
|------------|----------|
| `search_similar_listings` | Векторный поиск по смыслу запроса + фильтры |
| `search_by_metadata` | Полнотекстовый поиск (FTS) + фильтры |
| `get_listing_by_id` | Получить объявление по ID |
| `describe_schema` | Описание схемы БД для AI-агента |

## Язык

База данных содержит украинский текст. **Все запросы должны быть на украинском** —
AI-агент сам переводит запрос пользователя перед вызовом инструмента.

## Запуск

### Локально (для разработки)

```bash
# .env скопирован из .env.example и отредактирован
pip install -e "."
python -m vmk_data_mcp.main
```

### Docker

```bash
docker-compose up --build
```

## Зависимости

- Python 3.11+
- PostgreSQL 15+ с `pgvector` extension
- Ollama (`nomic-embed-text`, 768d) на `192.168.1.75:11434`

## Безопасность

- **Read-only** пул соединений (only SELECT / WITH / VALUES / EXPLAIN)
- Параметризованные запросы (SQL-инъекции невозможны)
- Белый список колонок (`USER_COLUMNS`)
- Таймаут запросов (30 сек)
