baton-board-mcp
v0.1.0
Published
MCP server for Baton Board — lets an AI agent (Claude Desktop/Code) read and update your local board (data.json).
Maintainers
Readme
Baton Board MCP サーバー
AIエージェント(Claude Desktop / Claude Code など MCP対応クライアント)が、あなたのローカルの
Baton Board(data.json)を直接 読み書きできるようにする MCP サーバー。
=「人間とAIが同じ盤を共有する」を、コピペ無しの直接連携で実現します。
- ローカルのみ・ネットワーク非経由(ゼロトラスト)。クラウドに何も送りません。
- 対象=デスクトップ版や
data.jsonをファイルで持っている使い方(純ブラウザのみの人は対象外)。
公開しているツール
| ツール | 説明 |
|---|---|
| get_board | 盤の要約(ボード・ウィジェット・未完/全タスク数) |
| list_widgets | ウィジェット一覧(id/種別/タイトル)=対象特定用 |
| list_tasks | タスク一覧(status: open / done / all) |
| add_task | タスク追加(text、任意で due=YYYY-MM-DD。source は ai で記録) |
| complete_task | 完了マーク(taskId 優先・無ければ text 完全一致) |
| add_note | メモ追記(notes widget へ・無ければ作成) |
| record_kpi | KPIに日付つき値を記録(value・任意 label/unit/date・履歴追加+現在値更新) |
| mark_habit | 習慣をその日「達成」に(name・任意 date/done・無ければ作成) |
| list_boards | ボード(プロファイル)一覧。add_task の profileId で対象指定 |
| bulk_add_tasks | 箇条書き(配列)を一括タスク化 |
| update_goal | 目標の現在値/目標値を更新(label で特定・無ければ作成) |
| search_board | 盤を横断検索(タスク/タグ・メモ・リンク・目標・KPI・カウントダウン・習慣) |
| get_agenda | 直近N日(既定7)+期限超過の未完タスクを締切順で |
セットアップ(npx・推奨・インストール不要)
data.json の場所を環境変数 BATON_BOARD_DATA で渡します(デスクトップ版の保存ファイル、または書き出した data.json)。
npx -y baton-board-mcp(単独実行では stdio 待ちで無反応に見えますが正常。AIクライアント側の MCP 設定から起動されると動きます)
Claude Desktop の設定例(claude_desktop_config.json)
{
"mcpServers": {
"baton-board": {
"command": "npx",
"args": ["-y", "baton-board-mcp"],
"env": {
"BATON_BOARD_DATA": "C:/path/to/your/data.json",
"POLAR_ORG_ID": "org_xxx",
"BATON_BOARD_LICENSE": "your-pro-license-key"
}
}
}
}Claude Code の場合
claude mcp add baton-board -e BATON_BOARD_DATA=C:/path/to/your/data.json -- npx -y baton-board-mcpローカルのソースから直接起動する場合(開発・このリポジトリを clone 済みの場合)
cd mcp
npm install # @modelcontextprotocol/sdk を取得command/args を node / ["C:/Projects/baton-board/mcp/server.mjs"] に置き換えれば同様に動きます(npx 版と挙動は同じ)。
設定後、AI に「ボードの状況を見て」「"請求書を送る" をタスク追加して」のように頼むと、
AI が get_board / add_task などを呼んであなたの盤を直接更新します(追記は source=ai 記録=アクティビティログに残る)。
Pro限定(買ってから連携)
MCP連携は Pro機能です。Polar のライセンスキーで検証します(src/license.ts と同じ公開エンドポイント)。
POLAR_ORG_ID=Polar organization ID(アプリと同値)/BATON_BOARD_LICENSE=購入者の Pro キー。- 挙動:
POLAR_ORG_ID未設定=ゲート無効(launch前/開発中は誰でも動く)。POLAR_ORG_ID設定済み+キーが有効=全ツール利用可。- キー無効/未設定=全ツールが「Pro が必要」エラーを返す。
- オフライン/Polar障害時は grace で許可(支払い済みユーザーをオフラインで締め出さない)。ローカルコードゆえ完全強制ではありません(アプリのProゲートと同程度)。
- 検証は起動時に1回。キー更新後はサーバー再起動で再検証。
セキュリティ
- 通信は AIクライアント ↔ ローカルプロセス(stdio)のみ=ネットワークに出ません。
- 書き込みは
data.jsonを原子的に置換(temp→rename)。当社サーバーは一切関与しません。 - 書込前に1世代バックアップ(
data.json.bak)=AIの誤操作からすぐ戻せる安全網。
開発メモ
board.mjs…data.json読み書き+操作の純ロジック(テスト容易)。server.mjs… MCP(stdio)でツールを公開。- 依存は
mcp/配下に隔離(本体アプリの依存は汚さない)。node_modulesはコミットしない。
License
MIT License. See LICENSE.
