mcpField
W
Weeeking

Weeeking

ローカル
github.com/OniVe生産性01 週間前に更新

Weeeking について

Weeekingは、公開API経由でWeeekワークスペースを管理するRust製MCPサーバーです。タスク、プロジェクト、CRM、時間管理を扱い、既定で読み取り専用となり、操作フィルターで権限を設定できます。

主な機能

  1. 01Weeek公開APIの操作をカバー
  2. 02タスク、プロジェクト、CRM、時間管理
  3. 03既定で読み取り専用
  4. 04操作の許可・拒否フィルター
  5. 05MCPリソースとワークフロープロンプト
  6. 06ページネーション、簡潔な応答、再試行

活用シーン

  1. 01Weeekタスクの検索と更新
  2. 02プロジェクトやワークスペースの状況確認
  3. 03エージェントが実行できる操作の制限
  4. 04日次タスクや週次まとめのプロンプト利用

MCP 対応

Weeek API操作をMCPツールとして提供し、`weeek://me`と`weeek://projects`のリソース、日次タスクと週次まとめのプロンプトも公開します。stdioで動作し、許可されていない操作を非表示または拒否できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"onive-weeeking": {
"command": "npx",
"args": [
"-y",
"weeeking"
],
"env": {
"WEEEK_API_TOKEN": "<WEEEK_API_TOKEN>",
"WEEEK_TOKEN": "<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>"
}
}
}
}
起動コマンドnpx -y weeeking
設定が必要な環境変数
WEEEK_API_TOKENシークレットWeeek API token (Weeek: Settings → API). Alternative: store it with `weeeking store-token`.
WEEEK_TOKENシークレットAlias for WEEEK_API_TOKEN (checked second).
READ_ONLYtrue (default) — read-only mode: write tools are hidden. Set false to allow changes.
WEEEK_LANGLanguage of user-facing texts: ru (default) or en — help, tool descriptions, prompts, errors.
WEEEK_ALLOW_ACTIONSAbsolute 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_ACTIONSDeny 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_PROFILEReady access profile: executor — reads plus task and comment creation only.
WEEEK_BASE_URLCustom 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_CHARSMaximum response size in characters (default 60000).
WEEEK_RPSClient-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_BURSTBurst capacity in tokens (default: ceil(RPS), at least 1).
WEEEK_LOGdebug — verbose HTTP logs to stderr (no token).

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmweeeking0.6.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Weeeking 🛡️

Русский · English

CI Release License: MIT

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 パッケージは薄いラッパーです。同じバージョンの GitHub Releases から、対象プラットフォーム用のネイティブバイナリ(Windows x64/arm64、Linux x64 gnu/musl、Linux arm64、macOS arm64/x64)を取得します。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 のトークン(ワークスペースの設定 → 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 MiB)添付ファイルのダウンロード上限(巨大なレスポンスへの対策)。
WEEEK_RETRY_MAX2429、502/503/504、ネットワーク障害時の追加試行回数(0~5)。タイムアウト時は再試行しません。
WEEEK_RETRY_BASE_MS300指数バックオフの基準値(上限 5 秒。Retry-After を考慮し、上限は 30 秒)。
WEEEK_RPS—クライアント側の毎秒リクエスト数上限(トークンバケット方式、再試行を含む)。未設定または ≤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(D-Bus 経由の GNOME Keyring/KWallet)が対象です。weeeking store-token コマンドで保存します。値がログに記録されることはありません。
  3. どちらも空の場合、サーバーは起動しますが、呼び出しはヒントとともに isError を返します。

システムキーチェーンはすべてのプラットフォームで使用できますが、D-Bus のないヘッドレス Linux では利用できません。その場合は、環境変数 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.

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。