Weeeking

Registre officiel Marketing et ventes

MCP server for Weeek with full public API coverage: tasks, projects, CRM, time tracking.

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

NPM package weeeking
Claude Code
claude mcp add weeeking -e 'WEEEK_API_TOKEN=<your weeek_api_token>' -e 'WEEEK_TOKEN=<your weeek_token>' -e 'READ_ONLY=<READ_ONLY>' -e 'WEEEK_LANG=<WEEEK_LANG>' -e 'WEEEK_ALLOW_ACTIONS=<WEEEK_ALLOW_ACTIONS>' -e 'WEEEK_DENY_ACTIONS=<WEEEK_DENY_ACTIONS>' -e 'WEEEK_PROFILE=<WEEEK_PROFILE>' -e 'WEEEK_BASE_URL=<WEEEK_BASE_URL>' -e 'WEEEK_DISABLE_KEYCHAIN=<WEEEK_DISABLE_KEYCHAIN>' -e 'WEEEK_MAX_RESPONSE_CHARS=<WEEEK_MAX_RESPONSE_CHARS>' -e 'WEEEK_RPS=<WEEEK_RPS>' -e 'WEEEK_RPS_BURST=<WEEEK_RPS_BURST>' -e 'WEEEK_LOG=<WEEEK_LOG>' -- npx -y weeeking@0.6.0
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "weeeking": {
            "command": "npx",
            "args": [
                "-y",
                "weeeking@0.6.0"
            ],
            "env": {
                "WEEEK_API_TOKEN": "<your weeek_api_token>",
                "WEEEK_TOKEN": "<your weeek_token>",
                "READ_ONLY": "<READ_ONLY>",
                "WEEEK_LANG": "<WEEEK_LANG>",
                "WEEEK_ALLOW_ACTIONS": "<WEEEK_ALLOW_ACTIONS>",
                "WEEEK_DENY_ACTIONS": "<WEEEK_DENY_ACTIONS>",
                "WEEEK_PROFILE": "<WEEEK_PROFILE>",
                "WEEEK_BASE_URL": "<WEEEK_BASE_URL>",
                "WEEEK_DISABLE_KEYCHAIN": "<WEEEK_DISABLE_KEYCHAIN>",
                "WEEEK_MAX_RESPONSE_CHARS": "<WEEEK_MAX_RESPONSE_CHARS>",
                "WEEEK_RPS": "<WEEEK_RPS>",
                "WEEEK_RPS_BURST": "<WEEEK_RPS_BURST>",
                "WEEEK_LOG": "<WEEEK_LOG>"
            }
        }
    }
}

Variables d'environnement

  • WEEEK_API_TOKEN secret Weeek API token (Weeek: Settings → API). Alternative: store it with `weeeking store-token`.
  • WEEEK_TOKEN secret Alias for WEEEK_API_TOKEN (checked second).
  • READ_ONLY true (default) — read-only mode: write tools are hidden. Set false to allow changes.
  • WEEEK_LANG Language of user-facing texts: ru (default) or en — help, tool descriptions, prompts, errors.
  • WEEEK_ALLOW_ACTIONS Absolute allow list of OpenAPI operation ids/masks (comma/space separated): anything not listed is forbidden; a set-but-empty value is a startup error. Cannot be combined with WEEEK_PROFILE.
  • WEEEK_DENY_ACTIONS Deny list of OpenAPI operation ids/masks (e.g. delete-*): denied operations are hidden and rejected on call; a set-but-empty value is a startup error.
  • WEEEK_PROFILE Ready access profile: executor — reads plus task and comment creation only.
  • WEEEK_BASE_URL Custom API base URL (proxy or self-hosted gateway).
  • WEEEK_DISABLE_KEYCHAIN 1 — do not read the token from the system keychain (Credential Manager / Keychain / Secret Service).
  • WEEEK_MAX_RESPONSE_CHARS Maximum response size in characters (default 60000).
  • WEEEK_RPS Client-side request rate limit in requests per second (token bucket, retries included). Empty or <=0 disables it; values below 0.001 are rejected at startup.
  • WEEEK_RPS_BURST Burst capacity in tokens (default: ceil(RPS), at least 1).
  • WEEEK_LOG debug — verbose HTTP logs to stderr (no token).

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. Weeeking 🛡️
  2. Возможности
  3. Сборка
  4. Релизы
  5. Переменные окружения
  6. Ограничение операций
  7. Сосуществование потребителей
  8. Подключение (OpenCode)
  9. Обновление спецификации
  10. Разработка
  11. Ограничения API Weeek (важно агенту)
  12. Участие
  13. Безопасность
  14. Лицензия

Weeeking 🛡️

Русский · English

Weeek and conquer. MCP-сервер для Weeek с полным покрытием публичного API: 157 операций из официальной OpenAPI-спецификации. Один бинарник на Rust, без Node и внешних зависимостей в рантайме. Релизы — для семи платформ: Windows x64/arm64, Linux x64 (glibc/musl), Linux arm64, macOS arm64/x64.

Возможности

  • 13 админ-групп с action — weeek_project, weeek_board, weeek_board_column, weeek_custom_fields, weeek_portfolio, weeek_tags, weeek_task (таймеры, записи времени, вложения, родитель…), weeek_funnels, weeek_funnel_statuses, weeek_deals, weeek_organizations, weeek_contacts, weeek_currencies.
  • 12 curated-тулов для повседневной работы: weeek_context, weeek_search_tasks, weeek_get_task, weeek_list_comments, weeek_download_attachment + записи (weeek_create_task, weeek_update_task, weeek_move_task, weeek_complete_task, weeek_set_task_people, weeek_add_comment, weeek_delete_comment).
  • READ_ONLY по умолчанию: изменяющие действия не регистрируются, пока не выставлено READ_ONLY=false.
  • Ресурсы и промпты MCP: weeek://me и weeek://projects читаются клиентом без tool-call; промпты «Мои задачи на сегодня» и «Итоги недели» — готовые сценарии для агента.
  • Эргономика LLM: compact=true убирает null и пустые значения (включая пустые элементы массивов) из тяжёлых ответов; fetchAll=true (+maxItems) собирает страницы задач и комментариев (страница по умолчанию 100, не более 50 страниц) с флагом truncated.
  • Надёжность: ретраи 429 и 502/503/504 с Retry-After и экспоненциальным бэкоффом (429 — для любого метода, 502/503/504 и сетевые сбои — только для GET/HEAD; таймауты не повторяются); WEEEK_LOG=debug — HTTP-логи в stderr (метод, путь, статус, длительность; без токена).
  • Кодогенератор спеки: tools/update_spec.py тянет OpenAPI с developers.weeek.net и генерирует src/spec_generated.rs — статические данные (&'static str), которые компилируются в бинарник; в рантайме нет ни JSON, ни парсинга, чанк спеки в репозитории не сохраняется.

Сборка

Требуется Rust 1.88+ (MSVC toolchain на Windows).

cargo build --release
# → target/release/weeeking.exe (Windows) / target/release/weeeking (Linux, macOS)

Релизы

Готовые бинарники — в GitHub Releases: архивы weeeking-<версия>-<платформа> и сырые бинарники для npm-обёртки; рядом — файлы .sha256, хэши также перечислены в описании релиза.

ПлатформаАрхивСырой бинарник
Windows x64weeeking-<версия>-win-x64.zipweeeking-<версия>-win-x64.exe
Windows arm64weeeking-<версия>-win-arm64.zipweeeking-<версия>-win-arm64.exe
Linux x64 (glibc)weeeking-<версия>-linux-x64.tar.gzweeeking-<версия>-linux-x64
Linux x64 (musl, static)weeeking-<версия>-linux-musl-x64.tar.gzweeeking-<версия>-linux-musl-x64
Linux arm64weeeking-<версия>-linux-arm64.tar.gzweeeking-<версия>-linux-arm64
macOS arm64weeeking-<версия>-osx-arm64.tar.gzweeeking-<версия>-osx-arm64
macOS x64weeeking-<версия>-osx-x64.tar.gzweeeking-<версия>-osx-x64
# проверка контрольной суммы
certutil -hashfile weeeking-<версия>-win-x64.zip SHA256          # Windows
sha256sum -c weeeking-<версия>-linux-x64.tar.gz.sha256           # Linux

Каждый файл релиза подписан GitHub-аттестацией (Sigstore) — проверяемое происхождение сборки:

gh attestation verify weeeking-<версия>-win-x64.exe -R OniVe/weeeking
npm (npx)
npx -y weeeking     # MCP-сервер по stdio; бинарник скачается и проверится по sha256

Пакет weeeking — тонкая обёртка: берёт нативный бинарник нужной платформы (Windows x64/arm64, Linux x64 gnu/musl, Linux arm64, macOS arm64/x64) из GitHub Releases этой же версии. Публикуется через npm trusted publishing (OIDC, с provenance).

Сервер также опубликован в официальном MCP Registry — io.github.OniVe/weeeking; оттуда его подхватывают каталог GitHub MCP и агрегаторы.

На macOS скачанный через браузер бинарник может ловить карантин Gatekeeper — снимите его (xattr -d com.apple.quarantine <файл>) или ставьте через npx/curl.

Переменные окружения

ПеременнаяПо умолчаниюОписание
WEEEK_API_TOKEN—Токен из Weeek (Настройки workspace → API). Без него чтения невозможны.
READ_ONLYtruefalse/0 — открыть изменяющие операции (создание, правка, удаление, CRM).
WEEEK_ALLOW_ACTIONS—Белый список операций (operationId или маски *): всё, что не перечислено (включая чтения), запрещено. Несовместим с WEEEK_PROFILE.
WEEEK_DENY_ACTIONS—Чёрный список операций (или масок: delete-*): не вызываются и не показываются. Сильнее белого списка и профиля.
WEEEK_PROFILE—Профиль доступа: executor — чтения плюс создание задач и комментариев.
WEEEK_LANGruЯзык пользовательских текстов (ru/en): справка, описания инструментов, промпты, ошибки.
WEEEK_BASE_URLhttps://api.weeek.net/public/v1Свой прокси/хост при необходимости.
WEEEK_TIMEOUT_MS30000Таймаут запроса.
WEEEK_MAX_RESPONSE_CHARS60000Обрезка больших ответов.
WEEEK_DISABLE_KEYCHAIN—1 — не читать токен из системного хранилища.
WEEEK_KEYCHAIN_ACCOUNTapi-tokenИмя записи в системном хранилище (для нескольких аккаунтов).
WEEEK_MAX_ATTACHMENT_BYTES67108864 (64 МиБ)Лимит скачивания вложения (защита от гигантских ответов).
WEEEK_RETRY_MAX2Дополнительные попытки при 429, 502/503/504 и сетевых сбоях (0–5); таймауты не повторяются.
WEEEK_RETRY_BASE_MS300База экспоненциального бэкоффа (потолок 5 с; Retry-After учитывается, потолок 30 с).
WEEEK_RPS—Клиентский лимит запросов в секунду (token bucket; включая ретраи). Пустое/≤0 — выключен; 0 < RPS < 0.001 — ошибка старта.
WEEEK_RPS_BURSTceil(RPS), минимум 1Ёмкость всплеска в токенах.
WEEEK_LOG—debug — подробные HTTP-логи в stderr (метод, путь, статус, мс; токен не логируется).
Откуда берётся токен
  1. WEEEK_API_TOKEN (или WEEEK_TOKEN) из окружения — приоритет всегда за ним.
  2. В системном хранилище — запись сервиса weeek-mcp с именем WEEEK_KEYCHAIN_ACCOUNT (по умолчанию api-token): Windows Credential Manager (target api-token.weeek-mcp), macOS Keychain, Linux Secret Service (GNOME Keyring/KWallet через D-Bus); сохраняется командой weeeking store-token. Значение никогда не логируется.
  3. Если пусто — сервер поднимается, но вызовы возвращают isError с подсказкой.

Системное хранилище работает на всех платформах; на headless-Linux без D-Bus его нет — задайте токен переменными окружения WEEEK_API_TOKEN или WEEEK_TOKEN.

Несколько аккаунтов Weeek

Личность действий (автор комментариев, задач) определяется токеном: API всегда действует от владельца токена. Для второго пользователя нужен его собственный токен (создаётся в Настройках workspace → API; доступ к разделу есть у супер-админов и админов).

# 1) Сохранить токен второго аккаунта (ввод скрыт, в argv токен не попадает)
weeeking store-token --account api-token-anna

# 2) Запуск сервера под этим аккаунтом
$env:WEEEK_KEYCHAIN_ACCOUNT = "api-token-anna"; weeeking   # PowerShell (Windows)
WEEEK_KEYCHAIN_ACCOUNT=api-token-anna weeeking             # bash/zsh (macOS, Linux)

Пример второго инстанса в конфиге OpenCode (нативная форма V2):

"mcp": {
  "servers": {
    "weeek-anna": {
      "type": "local",
      "command": ["C:\\путь\\weeeking.exe"],
      "environment": {
        "WEEEK_KEYCHAIN_ACCOUNT": "api-token-anna",
        "READ_ONLY": "false"
      }
    }
  }
}

Агент сможет выбирать, от кого действовать: тулы weeek-anna_* пишут от Анны, weeek_* — от основного аккаунта. Удалить запись из хранилища: Windows — cmdkey /delete:api-token-anna.weeek-mcp; macOS — security delete-generic-password -s weeek-mcp -a api-token-anna; Linux — средствами вашего хранилища (GNOME Keyring / KWallet).

На headless-Linux без D-Bus системного хранилища нет: мультиаккаунт — отдельный инстанс сервера с собственным WEEEK_API_TOKEN в окружении.

CLI
weeeking                                запустить MCP-сервер (stdio)
weeeking store-token [--account <имя>]  сохранить токен в системное хранилище
weeeking --help                         справка

Ограничение операций

READ_ONLY — грубый переключатель: false открывает весь изменяющий API. Тоньше доступ настраивается фильтром операций (по operationId из OpenAPI):

  • WEEEK_DENY_ACTIONS — чёрный список: перечисленные операции (или маски: delete-*) не вызываются и не показываются в описаниях инструментов;
  • WEEEK_ALLOW_ACTIONS — абсолютный белый список: всё, что не перечислено (включая чтения), запрещено; несовместим с WEEEK_PROFILE;
  • WEEEK_PROFILE=executor — готовый узкий профиль: чтения плюс create-task и create-task-comment (создание задачи и комментария; без изменений и удалений).

Семантика: READ_ONLY=true сильнее списков и профиля (они игнорируются с предупреждением); WEEEK_DENY_ACTIONS сильнее WEEEK_ALLOW_ACTIONS и профиля. Fail-closed: пустое значение WEEEK_ALLOW_ACTIONS/WEEEK_DENY_ACTIONS и маска, не совпавшая ни с одной операцией OpenAPI, останавливают сервер с ошибкой при старте; под READ_ONLY=true такие настройки игнорируются, но о проблеме сообщается предупреждением. Списки разделяются запятыми и/или пробелами; * в маске — любая подстрока.

Запрещённые действия не рекламируются в tools/list (действие исчезает из action-enum, инструмент — из списка) и отклоняются при вызове с типизированной ошибкой. Ресурсы, промпты и серверная инструкция тоже следуют политике: если контекст (weeek_context и ресурсы weeek://me, weeek://projects) недоступен, он не рекламируется и не читается, а промпты, опирающиеся на скрытые инструменты, пропадают из prompts/list.

# Запретить все удаления, остальное оставить:
READ_ONLY=false WEEEK_DENY_ACTIONS="delete-*" weeeking

# Узкий исполнитель: чтения, создание задач и комментариев:
READ_ONLY=false WEEEK_PROFILE=executor weeeking

# Явный белый список (абсолютный — чтения тоже перечисляются):
READ_ONLY=false WEEEK_ALLOW_ACTIONS="get-tasks,get-task,get-task-comments,create-task,create-task-comment" weeeking

Соответствие curated-инструментов операциям OpenAPI:

ИнструментОперации
weeek_contextget-profile, get-workspace, get-workspace-members, get-tags, get-projects (+get-boards, get-board-columns при аргументах projectId/boardId)
weeek_search_tasksget-tasks
weeek_get_taskget-task, get-task-comments
weeek_list_commentsget-task-comments
weeek_download_attachmentget-attachment
weeek_create_taskcreate-task
weeek_update_taskupdate-task
weeek_move_taskchange-task-board, change-task-board-column
weeek_complete_taskcomplete-task, uncomplete-task
weeek_set_task_peopleadd-assignees-to-task, remove-assignees-from-task, add-watchers-to-task, remove-watchers-from-task
weeek_add_commentcreate-task-comment
weeek_delete_commentdelete-task-comment

Инструмент доступен, только если разрешены все его операции (у weeek_context дополнительные выборки get-boards/get-board-columns проверяются отдельно — при передаче projectId/boardId). Админ-группы (weeek_project, weeek_task, …) фильтруют action-список: доступные операции перечислены в описании инструмента.

Сосуществование потребителей

Weeek не публикует лимиты запросов, и они, по-видимому, общие на workspace. Когда рядом работают несколько потребителей (инстансы weeeking, сервис-синхронизатор, скрипты), бюджет можно сгладить:

  • WEEEK_RPS — клиентский лимит запросов в секунду для этого инстанса (token bucket): действует на все HTTP-запросы, включая повторные попытки; Retry-After не отменяется — пауза берётся не меньше предписанной API;
  • WEEEK_RPS_BURST — допуск всплеска в токенах: по умолчанию «секунда запаса» (ceil(RPS), минимум 1) — короткая пачка укладывается в секунду без лишнего пейсинга; если при малом RPS параллельные выборки не должны тормозить, задайте burst вручную;
  • по умолчанию throttle выключен; пустое или ≤0 значение — тоже выключен (baseline не меняется); значения меньше 0.001 отклоняются на старте (иначе один запрос ждал бы тысячи секунд).

Общий бюджет на несколько инстансов: разделите WEEEK_RPS между ними вручную или поставьте перед API общий throttle-прокси и укажите его в WEEEK_BASE_URL — тогда лимит соблюдается суммарно.

# Строгий режим для сервиса-синхронизатора: 1 запрос/с без всплеска
READ_ONLY=false WEEEK_RPS=1 WEEEK_RPS_BURST=1 weeeking

# Интерактивный инстанс: в среднем 4 запроса/с, всплеск до 8
WEEEK_RPS=4 WEEEK_RPS_BURST=8 weeeking

Подключение (OpenCode)

Нативная форма OpenCode V2 — серверы живут в mcp.servers:

"mcp": {
  "servers": {
    "weeek": {
      "type": "local",
      "command": ["C:\\путь\\weeeking.exe"],   // на любой ОС: ["npx", "-y", "weeeking"]
      "environment": { "READ_ONLY": "false" }
    }
  }
}

Добавить из CLI: opencode mcp add weeek -- npx -y weeeking (с --global — для всех проектов). Отключить сервер, не удаляя из конфига: "disabled": true (нативная V2-форма; V1-форма "mcp": { "weeek": { … } } с enabled тоже поддерживается).

Любой другой MCP-клиент: команда — путь к бинарнику (или npx -y weeeking), транспорт — stdio.

Обновление спецификации

pip install quickjs            # зависимость кодогенератора (один раз)
python tools/update_spec.py    # developers.weeek.net → src/spec_generated.rs (кодогенерация)
cargo fmt && cargo build --release

Разработка

cargo fmt
cargo clippy --all-targets
cargo test                   # unit + mock-сюита (HTTP против эмулятора) + smoke

Приёмочный smoke против живого API (перед релизом; read-only по умолчанию):

python tools/live_smoke.py
python tools/live_smoke.py --write-test <PROJECT_ID>   # + цикл мутаций в sandbox-проекте

Пересборка при работающем OpenCode (exe залочен запущенным MCP-сервером):

python tools\rebuild.py

Ограничения API Weeek (важно агенту)

  • Описание задачи задаётся только при создании — позже не изменить.
  • tags в weeek_update_task заменяет весь список — сначала прочитайте задачу.
  • Комментарии можно создать и удалить, но не отредактировать.

Участие

Проект открыт для вклада и вопросов: баг-репорты, идеи и вопросы — в issues (для типовых случаев есть шаблоны).

Мейнтейнер — @OniVe.

Безопасность

Об уязвимостях сообщайте приватно — см. SECURITY.md. Токены не попадают в логи; не прикладывайте их к issue и PR.

Лицензия

MIT — см. LICENSE.

Questions fréquentes

Qu'est-ce que Weeeking ?

MCP server for Weeek with full public API coverage: tasks, projects, CRM, time tracking.

Comment installer Weeeking ?

Il s'exécute sur votre machine. Dans Claude Code : claude mcp add weeeking -e 'WEEEK_API_TOKEN=<your weeek_api_token>' -e 'WEEEK_TOKEN=<your weeek_token>' -e 'READ_ONLY=<READ_ONLY>' -e 'WEEEK_LANG=<WEEEK_LANG>' -e 'WEEEK_ALLOW_ACTIONS=<WEEEK_ALLOW_ACTIONS>' -e 'WEEEK_DENY_ACTIONS=<WEEEK_DENY_ACTIONS>' -e 'WEEEK_PROFILE=<WEEEK_PROFILE>' -e 'WEEEK_BASE_URL=<WEEEK_BASE_URL>' -e 'WEEEK_DISABLE_KEYCHAIN=<WEEEK_DISABLE_KEYCHAIN>' -e 'WEEEK_MAX_RESPONSE_CHARS=<WEEEK_MAX_RESPONSE_CHARS>' -e 'WEEEK_RPS=<WEEEK_RPS>' -e 'WEEEK_RPS_BURST=<WEEEK_RPS_BURST>' -e 'WEEEK_LOG=<WEEEK_LOG>' -- npx -y weeeking@0.6.0. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour Weeeking ?

Oui. Il attend WEEEK_API_TOKEN, WEEEK_TOKEN, à renseigner dans sa configuration.

Weeeking est-il open source ?

Oui. Son code est sur GitHub sous licence MIT.

Qui maintient Weeeking ?

Il est publié par OniVe. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.