- Python 100%
| configs | ||
| src/atractio_tool | ||
| .gitignore | ||
| LICENSE | ||
| pyproject.toml | ||
| README.md | ||
Atractio Tool
Контекстно-лёгкий клиент для MCP-сервисов https://agent.atractio.lol.
Вместо подключения восьми удалённых MCP и загрузки всех их схем локальный adapter показывает агенту только три meta-tool:
hub_skill(service)— скачать короткие правила выбранного сервиса;hub_discover(service?, query?, tool?)— показать каталог, найти подходящий tool или получить одну точную схему;hub_call(service, tool, arguments)— выполнить выбранный tool на сервере.
Сами Mnemosyne, SearXNG, Playwright, Context7, Serena, Repomix и Forgejo продолжают работать на сервере. Локальный пакет не содержит их реализацию и не получает Forgejo credentials.
Архитектура
Agent -> 3 local meta-tools -> HTTPS /tool/v1 -> selected server-side MCP
| |
| +-> identity-scoped Mnemosyne/Forgejo backend
+-> separate token file
Удалённые схемы загружаются только по запросу для одного выбранного tool. Это уменьшает постоянный MCP context и не замораживает схемы в клиентском репозитории.
Требования
Python 3.9+ на Linux, macOS или Windows.
Установка
Рекомендуется pipx:
pipx install "git+https://git.barem.atractio.lol/rethinger/atractio-tool.git"
Альтернатива:
python -m pip install --user "git+https://git.barem.atractio.lol/rethinger/atractio-tool.git"
После установки доступны команды atractio-tool и atractio-tool-mcp.
Отдельный файл токена
Токен из Account Dashboard записывается только в отдельный файл:
- Linux/macOS:
~/.config/atractio/token - Windows:
%APPDATA%\Atractio\token
Путь можно посмотреть:
atractio-tool token-path
Файл содержит одну строку с активным Bearer token. Не добавляйте токен в MCP JSON/TOML, skill, git, аргументы процесса или prompt. На Unix ограничьте доступ текущим пользователем (0600). Для нестандартного пути задайте ATRACTIO_TOKEN_FILE в окружении локального MCP-процесса.
Adapter перечитывает файл перед каждым HTTPS-запросом: после Rotate Token достаточно атомарно заменить содержимое файла.
Подключение к агенту
Oh My Pi, Claude Desktop/Code, Cursor и MCP-совместимые клиенты
Добавьте один stdio server из configs/mcp.json, сохранив уже настроенные сторонние MCP:
{
"mcpServers": {
"atractio-hub": {
"command": "atractio-tool-mcp",
"args": []
}
}
}
Codex
Добавьте блок из configs/codex.toml:
[mcp_servers.atractio-hub]
command = "atractio-tool-mcp"
args = []
OpenCode
Объедините configs/opencode.json с существующим opencode.json:
{
"mcp": {
"atractio-hub": {
"type": "local",
"command": ["atractio-tool-mcp"],
"enabled": true
}
}
}
Если GUI-клиент не видит executable из PATH, укажите абсолютный путь, который возвращает which atractio-tool-mcp (Linux/macOS) или where atractio-tool-mcp (Windows).
Skills с сервера
Skill bundle не дублируется в репозитории. Команда всегда скачивает текущую версию с agent.atractio.lol:
atractio-tool install-skill --platform omp
atractio-tool install-skill --platform claude
atractio-tool install-skill --platform codex
atractio-tool install-skill --platform cursor
atractio-tool install-skill --platform opencode
Для другого клиента или project-local каталога:
atractio-tool install-skill --target /path/to/skills
Публичный entrypoint: https://agent.atractio.lol/skills/atractio-hub/SKILL.md.
CLI
atractio-tool catalog
atractio-tool skill memory
atractio-tool discover memory recall
atractio-tool describe memory mnemosyne_recall
atractio-tool call memory mnemosyne_recall --arguments '{"query":"project decisions"}'
--arguments - читает JSON из stdin, а --arguments @request.json — из файла.
Безопасность и изоляция
/tool/v1/*требует тот же Bearer token, что и прямые MCP endpoints.- Token определяет пользователя и его Mnemosyne bank на gateway; клиент не может выбрать чужой bank.
- Forgejo service использует OAuth identity, уже связанную с hub token; Forgejo token не передаётся клиенту.
- Skills публичны и не содержат credentials.
- Серверные MCP процессы для tool bridge изолированы по service и identity.
- Ответ
401означает отсутствующий, истёкший или отозванный hub token.
Лицензия
MIT.