# Инструмент File Reader
## Описание
Инструмент `file_reader` — это gRPC-сервис на Go, который считывает все содержимое указанного файла из локальной файловой системы и возвращает его в виде единой строки.
## Безопасность
В целях безопасности этот инструмент имеет встроенную защиту от атак типа "directory traversal" (выход из директории). Он очищает предоставленный путь к файлу и отклоняет любой запрос, который пытается получить доступ к родительским каталогам с использованием `..`. Весь доступ к файлам ограничен рабочей директорией проекта.
## Параметры
Инструмент принимает один аргумент в виде JSON-объекта:
| Параметр | Тип | Обязательный | Описание |
|------------|----------|--------------|------------------------------------------------------|
| `filepath` | `string` | **Да** | Путь к файлу для чтения (например, `src/main.go`). |
## Ответ
* **Успешное чтение:** Если файл найден и успешно прочитан, инструмент возвращает все его содержимое в виде единой строки.
* **Ошибка:** Если файл не существует, путь некорректен или возникает ошибка чтения, инструмент возвращает сообщение об ошибке.
## Пример использования
Вот пример использования инструмента `file_reader` для чтения содержимого файла `README.md` проекта. В этом примере используется `curl` для взаимодействия с HTTP/REST шлюзом MCP-сервера.
**Запрос:**
```bash
curl -X POST http://localhost:8002/v1/tools:run \
-d '{
"name": "file_reader",
"arguments": {
"filepath": "README.md"
}
}'
```
**Успешный ответ:**
```json
{
"result": {
"stringValue": "# MCP-NG: Сервер на Go для Model Context Protocol\n\nMCP-NG — это высокопроизводительная, модульная реализация сервера..."
}
}
```
## Конфигурация
Конфигурация инструмента управляется через файл `config.json`, расположенный в директории инструмента.
**Пример `config.json`:**
```json
{
"port": 50054,
"command": ["go", "run", "."]
}
```
* `port`: Порт, на котором будет слушать gRPC-сервер инструмента.
* `command`: Команда и аргументы для запуска инструмента.
## Проверки состояния и логирование
* **Проверки состояния:** Этот инструмент реализует стандартный протокол gRPC Health Checking Protocol.
* **Логирование:** Инструмент использует структурированный JSON-логгер (`slog`) для наблюдаемости.
## Тестирование
Для тестирования инструмента вы можете запустить предоставленные интеграционные тесты. Перейдите в директорию инструмента и выполните:
```bash
go test ./...
```