Autonomous research agent with web search, source analysis, and report synthesis. Built on Pi agent core. Available as CLI, programmatic API, and MCP server. Features: - 4 built-in tools: web_search, read_url, save_note, synthesize_report - CLI with TUI and print modes - Programmatic API via ResearchAgent class - MCP server with 3 tools: research, quick_search, read_url - Skills system for custom research behavior - Automatic .env file loading for API keys - Configurable max turns, output formats (markdown/JSON/bullet) - Automatic report saving to research-output/
218 lines
7.2 KiB
Markdown
218 lines
7.2 KiB
Markdown
# Pi Research Agent MCP Server
|
||
|
||
MCP (Model Context Protocol) server для автономного исследования. Позволяет другим агентам вызывать research agent для глубокого исследования тем.
|
||
|
||
## Установка
|
||
|
||
```bash
|
||
npm install @earendil-works/pi-research-agent
|
||
```
|
||
|
||
## Настройка
|
||
|
||
### Переменные окружения
|
||
|
||
Создайте `.env` файл в корне проекта:
|
||
|
||
```env
|
||
TAVILY_API_KEY=***
|
||
OPENROUTER_API_KEY=***
|
||
LLM_MODEL=minimax/minimax-m3
|
||
```
|
||
|
||
### Подключение к MCP клиенту
|
||
|
||
#### Claude Desktop
|
||
|
||
Добавьте в `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) или `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
|
||
|
||
```json
|
||
{
|
||
"mcpServers": {
|
||
"research-agent": {
|
||
"command": "node",
|
||
"args": ["/path/to/pi-research/packages/research-agent/dist/mcp-cli.js"],
|
||
"env": {
|
||
"TAVILY_API_KEY": "***",
|
||
"OPENROUTER_API_KEY": "***"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
#### Cursor
|
||
|
||
Добавьте в `.cursor/mcp.json` в корне проекта:
|
||
|
||
```json
|
||
{
|
||
"mcpServers": {
|
||
"research-agent": {
|
||
"command": "node",
|
||
"args": ["./node_modules/@earendil-works/pi-research-agent/dist/mcp-cli.js"]
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
#### Другие MCP клиенты
|
||
|
||
Любой MCP-совместимый клиент может подключиться к серверу через stdio:
|
||
|
||
```bash
|
||
node /path/to/pi-research/packages/research-agent/dist/mcp-cli.js
|
||
```
|
||
|
||
## Доступные инструменты
|
||
|
||
### `research`
|
||
|
||
Выполняет глубокое автономное исследование темы. Агент ищет в интернете, читает источники, сохраняет находки и генерирует подробный отчёт с цитатами.
|
||
|
||
**Параметры:**
|
||
- `topic` (string, required): Тема для исследования
|
||
- `maxTurns` (number, optional, default: 15): Максимальное количество ходов исследования
|
||
- `format` (string, optional, default: "markdown"): Формат отчёта ("markdown", "json", "bullet")
|
||
|
||
**Пример использования:**
|
||
```json
|
||
{
|
||
"topic": "Квантовые вычисления 2026",
|
||
"maxTurns": 10,
|
||
"format": "markdown"
|
||
}
|
||
```
|
||
|
||
**Возвращает:**
|
||
- Полный отчёт с executive summary, ключевыми находками, цитатами источников
|
||
- Список собранных заметок с уровнем уверенности (high/medium/low)
|
||
- Метаданные: количество ходов, количество заметок
|
||
|
||
### `quick_search`
|
||
|
||
Быстрый поиск в интернете без полного research flow. Полезен для быстрого поиска информации.
|
||
|
||
**Параметры:**
|
||
- `query` (string, required): Поисковый запрос
|
||
- `maxResults` (number, optional, default: 10): Максимальное количество результатов
|
||
|
||
**Пример использования:**
|
||
```json
|
||
{
|
||
"query": "последние разработки в квантовых вычислениях",
|
||
"maxResults": 5
|
||
}
|
||
```
|
||
|
||
**Возвращает:**
|
||
- Список результатов поиска с заголовками, URL и сниппетами
|
||
|
||
### `read_url`
|
||
|
||
Извлекает контент из URL. Полезен для чтения конкретных статей или страниц.
|
||
|
||
**Параметры:**
|
||
- `url` (string, required): URL для чтения
|
||
- `maxLength` (number, optional, default: 10000): Максимальное количество символов для извлечения
|
||
|
||
**Пример использования:**
|
||
```json
|
||
{
|
||
"url": "https://example.com/article",
|
||
"maxLength": 5000
|
||
}
|
||
```
|
||
|
||
**Возвращает:**
|
||
- Извлечённый текст со страницы
|
||
|
||
## Программное использование
|
||
|
||
```typescript
|
||
import { createResearchMcpServer } from "@earendil-works/pi-research-agent";
|
||
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
||
|
||
const server = createResearchMcpServer();
|
||
const transport = new StdioServerTransport();
|
||
await server.connect(transport);
|
||
```
|
||
|
||
## Как это работает
|
||
|
||
1. **Инициализация**: MCP клиент подключается к серверу через stdio
|
||
2. **Вызов инструмента**: Клиент вызывает `research`, `quick_search` или `read_url`
|
||
3. **Выполнение**:
|
||
- `research`: Создаёт ResearchAgent, выполняет полное исследование (поиск → чтение → сохранение → синтез)
|
||
- `quick_search`: Выполняет быстрый поиск через Tavily API
|
||
- `read_url`: Извлекает контент из URL
|
||
4. **Результат**: Возвращает структурированный результат через MCP protocol
|
||
|
||
## Примеры использования
|
||
|
||
### Исследование с Claude
|
||
|
||
```
|
||
User: Исследуй последние разработки в области квантовых вычислений
|
||
|
||
Claude: [вызывает research tool]
|
||
- Ищет в интернете
|
||
- Читает 5-10 источников
|
||
- Сохраняет ключевые находки
|
||
- Генерирует отчёт на 2000+ слов
|
||
- Возвращает результат с цитатами
|
||
```
|
||
|
||
### Быстрый поиск с Cursor
|
||
|
||
```
|
||
User: @research-agent Найди информацию о Rust async runtime
|
||
|
||
Cursor: [вызывает quick_search tool]
|
||
- Возвращает 10 результатов поиска
|
||
- Пользователь может выбрать URL для глубокого чтения
|
||
```
|
||
|
||
### Чтение конкретной статьи
|
||
|
||
```
|
||
User: Прочитай эту статью: https://example.com/article
|
||
|
||
Agent: [вызывает read_url tool]
|
||
- Извлекает текст статьи
|
||
- Возвращает контент для анализа
|
||
```
|
||
|
||
## Ограничения
|
||
|
||
- **Tavily API**: Бесплатный план — 1000 запросов/месяц
|
||
- **Время выполнения**: Полное исследование может занять 2-5 минут
|
||
- **Контекст**: Отчёты могут быть очень длинными (5000-10000 слов)
|
||
|
||
## Troubleshooting
|
||
|
||
### "TAVILY_API_KEY environment variable is not set"
|
||
|
||
Убедитесь что переменные окружения установлены:
|
||
```bash
|
||
export TAVILY_API_KEY=***
|
||
export OPENROUTER_API_KEY=***
|
||
```
|
||
|
||
Или добавьте их в `.env` файл.
|
||
|
||
### MCP server не отвечает
|
||
|
||
Проверьте что:
|
||
1. Node.js версия >= 22.19.0
|
||
2. Все зависимости установлены: `npm install`
|
||
3. Пакет собран: `npm run build`
|
||
|
||
### Ошибки типов TypeScript
|
||
|
||
MCP SDK использует Zod для валидации схем. Если возникают ошибки типов, используйте `as any` для схем (как в текущей реализации).
|
||
|
||
## Лицензия
|
||
|
||
MIT
|