# AI-агенти (MCP)

> Підключення AI-асистентів до NeuroChain через MCP-сервер neurochain-mcp — налаштування для Claude Code і Claude Desktop, усі інструменти читання й запису, підпис сесійним ключем, ліміти витрат і утримання Sentinel.

Source: https://docs.nro.world/uk/build/mcp

`neurochain-mcp` — сервер [Model Context Protocol](https://modelcontextprotocol.io). Він дає AI-асистенту — Claude Code, Claude Desktop чи будь-якому MCP-клієнту — читати мережу і в заданих вами межах діяти в ній.

```
AI-асистент ⇄ (MCP через stdio) ⇄ neurochain-mcp ⇄ (HTTP) ⇄ gateway :3000 ⇄ нода :9933
```

Сервер — звичайний Node.js у папці `neurochain-mcp/` репозиторію (без кроку збірки). Він звертається лише до REST API gateway.

## Чому це безпечно

- Записи підписуються **сесійним ключем**, а не майстер-ключем гаманця. Ключ видає ваш майстер-ключ з **дозволеними адресами**, **лімітом витрат** і **строком дії**, і кожен валідатор перевіряє їх у консенсусі — див. [Абстракція акаунтів → Сесійні ключі](/uk/ai/account-abstraction#session-keys).
- Сесійний ключ не може керувати списком довіри Sentinel чи підтверджувати утриманий переказ. Якщо [Sentinel](/uk/ai/sentinel) утримав ризикований переказ, пропустити його можете лише ви.
- Стейкінг, делегування і голосування агентам не доступні.
- Без сесійного ключа сервер працює **лише на читання**.

## Налаштування

### 1. Встановлення

```bash
cd neurochain-mcp
npm install
```

### 2. Сесійний ключ і конфігурація

У вебгаманці відкрийте панель **Agent**, створіть сесійний ключ — оберіть адреси, на які він може надсилати (або `*`), загальний ліміт витрат і скільки блоків він дійсний, — і натисніть **Export config**. Ви отримаєте:

```json
{
  "node_rpc": "http://localhost:3000",
  "account": "neuro:<15 hex>.human",
  "session_pk": "<публічний ключ сесії, hex>",
  "sk_seed_hex": "<seed ключа сесії, hex>",
  "scope": "*"
}
```

| Поле | Значення |
|------|----------|
| `node_rpc` | Адреса **gateway** (не порт ноди 9933). Гаманець підставляє адресу своєї сторінки; змініть, якщо gateway працює деінде |
| `account` | Адреса, від імені якої діє агент |
| `session_pk`, `sk_seed_hex` | Сесійний ключ. Залиште обидва порожніми для режиму лише читання |
| `scope` | Лише для довідки — діє той дозвіл, що записаний у мережі |

Збережіть файл поза репозиторієм і нікому не передавайте: `sk_seed_hex` — секрет.

### 3. Реєстрація сервера

**Claude Code:**

```bash
claude mcp add neurochain \
  --env NEUROCHAIN_MCP_CONFIG=/absolute/path/to/neurochain-mcp.config.json \
  -- node /absolute/path/to/neurochain-mcp/src/index.js
```

**Claude Desktop** (`claude_desktop_config.json`) або `.mcp.json` проєкту:

```json
{
  "mcpServers": {
    "neurochain": {
      "command": "node",
      "args": ["/absolute/path/to/neurochain-mcp/src/index.js"],
      "env": { "NEUROCHAIN_MCP_CONFIG": "/absolute/path/to/neurochain-mcp.config.json" }
    }
  }
}
```

Використовуйте абсолютні шляхи: клієнт запускає сервер зі своєї робочої папки.

## Інструменти

### Читання

| Інструмент | Параметри | Повертає |
|------------|-----------|----------|
| `nc_get_account` | `address` (за замовчуванням — налаштований акаунт) | Баланс, nonce, кількість транзакцій |
| `nc_get_txs` | `address`, `limit` (1–200) | Історію транзакцій |
| `nc_gas_estimate` | — | Базову комісію й оцінки |
| `nc_list_proposals` | `status`, `limit` (1–100), `offset` | Пропозиції управління з підсумками голосів |
| `nc_list_validators` | — | Валідаторів зі стейком і метриками |
| `nc_get_contract` | `address` (`.app`) | Власника, хеш коду, оцінку безпеки |
| `nc_analyze_contract` | `bytecode_hex` | Аналіз VMGuardian — ризик, порушення |
| `nc_get_session_grants` | `address` | Сесійні ключі акаунта з лімітом і витраченою сумою |
| `nc_get_held` | `address` | Перекази, утримані Sentinel |

### Запис (потрібен сесійний ключ)

| Інструмент | Параметри | Примітки |
|------------|-----------|----------|
| `nc_transfer` | `to`, `amount_nro` (NRO, з дробовою частиною) | Якщо Sentinel утримав переказ, інструмент скаже, чи він звільниться сам, чи потрібне ваше підтвердження |
| `nc_call_contract` | `to` (`.app`), `function`, `args`, `value` (uNRO, за замовчуванням 0) | |
| `nc_deploy` | `bytecode_hex`, `name`, `description`, `template`, `init_args` | Проходить шлюз VMGuardian, як будь-яке розгортання |

Кожен запис читає наступний nonce, підписує сесійним ключем і надсилає на `POST /api/v1/transactions`. Нода перевіряє дозвіл на кожному валідаторі; наприклад, переказ понад ліміт повертається так:

```
Error: POST /api/v1/transactions failed: HTTP 401 — session spend cap exceeded
```

## Перевірено

У локальній тестовій мережі: інструменти читання повертають живі дані; `nc_transfer` на 1 NRO із сесійним ключем з лімітом 5 NRO підтверджено, а в дозволі записано `spent: 1000000`; наступний переказ на 10 NRO відхилено з помилкою вище; без сесійного ключа інструменти запису відмовляють, нічого не підписуючи.

## Відкликання

Відкличте ключ на панелі Agent у гаманці або через `POST /api/v1/session/revoke`, підписаний майстер-ключем. З наступного блоку все, що підписано цим ключем, відхиляється.
