# Athena Tools - MCP Tools Package
Пакет з MCP tools для безпечного доступу до Athena.
## Структура
Кожна тула в окремому файлі для легкого редагування:
```
athena_tools/
├── __init__.py # Registry і exports
├── _utils.py # Спільні helper функції
├── list_tables.py # Список таблиць Athena
├── get_table_schema.py # DDL таблиці
├── list_templates.py # Список SQL шаблонів
├── get_template.py # Код SQL шаблону
├── execute_template.py # Виконання шаблону
├── execute_query.py # Ad-hoc SELECT query
└── analyze_data_pipeline.py # Аналіз data flow
```
## Tools
### 1. list_tables
**Виправлено:** Тепер повертає тільки імена таблиць (не metadata).
```python
list_tables_tool(name_filter="") # Опціональний regex фільтр
```
Returns:
```json
{
"tables": ["table1", "table2", ...],
"count": 123,
"filter_applied": "provider.*"
}
```
### 2. get_table_schema
Повертає DDL (CREATE TABLE) для таблиці.
```python
get_table_schema_tool(table_name="provider__actions_alpha")
```
### 3. list_templates
Список всіх SQL шаблонів (75+).
```python
list_templates_tool(name_filter="PROMO") # Опціональний фільтр
```
### 4. get_template
Код SQL шаблону + метадані.
```python
get_template_tool(template_name="AGG_RTP", version="latest")
```
### 5. execute_template
Виконання зареєстрованого SQL шаблону.
```python
execute_template_tool(
template_name="AGG_RTP",
params={"year": 2024, "brand": "alpha"},
enable_cache=True
)
```
Security:
- Blacklist check
- Resource limits (100K rows, 600s timeout)
- Data sanitization
### 6. execute_query
Ad-hoc SELECT query (валідується).
```python
execute_query_tool(sql_query="SELECT COUNT(*) FROM provider__actions_alpha")
```
Security:
- Strict validation (тільки SELECT/WITH)
- Resource limits
- Data sanitization
### 7. analyze_data_pipeline
Аналіз data flow для таблиці або шаблону.
```python
analyze_data_pipeline_tool(table_name="provider__actions_alpha")
# або
analyze_data_pipeline_tool(template_name="AGG_RTP")
```
## Використання
```python
from mcp_athena_analytics.athena_tools import TOOL_REGISTRY
# Виклик тули
tool_func = TOOL_REGISTRY["list_tables"]
result = tool_func(name_filter="provider.*")
```
## Зміни
**Рефакторинг 2026-01-03:**
1. ✅ Створено package `athena_tools`
2. ✅ Кожна тула в окремому файлі
3. ✅ Виправлено `list_tables` - тепер використовує `list_table_names()` з helper
4. ✅ Виправлено `list_tables` - працює БЕЗ фільтра (пустий рядок = всі таблиці)
5. ✅ Спільний `_utils.py` для get_athena_helper singleton
## Imports
Всі tools імпортують загальні модулі через абсолютні імпорти:
- `from mcp_athena_analytics.blacklist import ...`
- `from mcp_athena_analytics.validator import ...`
- `from mcp_athena_analytics.sanitizer import ...`
Helper імпортується з локального `_utils.py`:
- `from ._utils import get_athena_helper`