TaskView は、プロジェクト管理・タスク管理・時間計測・権限管理を一式でまとめた、自己ホスト(セルフホスト)前提のプラットフォームだ。star 1.1k、fork 81。Vue/Nuxt UI/Express/PostgreSQL/Drizzle ORM という構成で、Docker イメージで自分のサーバーに立てる。そしてこの手のプロジェクトを取り上げる理由になっているのが、同梱のMCPサーバーと Claude Code 用プラグインだ。ただし調べ始めて最初に分かったのは、もっと手前の話だった——これはオープンソースではない。
- ・自己ホスト型のプロジェクト/タスク管理基盤。Vue・Nuxt UI・Express・PostgreSQL・Drizzle ORM
- ・**ライセンスは Source-Available で、OSSではない**。SaaS提供・競合製品・顧客の招待が禁止
- ・MCPサーバーを同梱。stdioで実取得した tools/list は**61ツール・約6,999トークン**
- ・61本のうち `delete_*` が9本。`delete_organization` まで含まれる
- ・Claude Code プラグインも同梱(スラッシュコマンド4本+SKILL.md+`.mcp.json`)
- ・`npx -y taskview-mcp` が引くのは npm の 1.48.3(2026-06-27公開)。リポジトリ側は 1.55.0
MCPサーバーの仕組みそのものはMCPサーバーの作り方2026年完全ガイド:TypeScript・Python両対応チュートリアルにまとめてある。本記事はその応用として、「業務データを持つ自己ホスト製品がMCPを生やすと何が起きるか」を1つ分解する。
TaskViewとは:自己ホスト前提のタスク管理プラットフォーム
リポジトリの About は「clarity, ownership, and control に focus した自己ホスト型のプロジェクト/タスク管理プラットフォーム」「SaaSのタスク管理に対する透明で自己ホスト可能な代替」と名乗っている。機能の範囲はREADMEの見出しを追うだけでも広い。プロジェクトとタスク管理、チーム協働、ID・アクセス管理(ロールと権限)、開発者向け連携(GitHub/GitLab の OAuth 連携)、時間計測と分析、そしてAIとMCP連携。
モノレポの構成は api/(Express)、web/(Vue・Nuxt UI)、taskview-packages/(taskview-api / taskview-db-schemas / taskview-mcp / capacitor-widget-bridge)、taskview-plugin/(Claude Code プラグイン)。Capacitor が入っているのはモバイル対応のためで、web__old/ に Android のリソースが残っている。タグは v1.48.7 から v1.56.0 まで24件、最終コミットは 2026-09-22 だった。READMEは「バージョンはパッケージ単位ではなくTaskView製品全体を表す」と明記している。
自己ホストの手順は docs/1.getting-started/2.installation.md にある。Docker Compose の全文が載っていて、Docker Hub の gimanhead/taskview-ce-db-migration taskview-ce-api-server taskview-ce-webapp を引き、ポート8888(Web)と1725(API)で上げる形だ。コンポーズファイルはリポジトリには置かれておらず、ドキュメントからコピーして自分で作る。コメントアウトされた行に gimanhead/taskview-ce-mcp:latest というMCP用イメージもあり、HTTP経由でMCPを喋らせる選択肢が用意されている。
この手順は当記事では実行できなかった。Docker のデーモンまでは動かせたが、Docker Hub が匿名プルの上限に達していて postgres:17 の時点で 429 Too Many Requests を返し、イメージを1つも取得できなかった。後述のとおり、本記事で実測したのはMCPサーバーとプラグインの側だけだ。
ライセンスを読む:star 1.1kでもOSSではない
LICENSE.md は125行の独自ライセンスで、冒頭は「TaskView Source-Available License / Version 1.0」。GitHubのサイドバーも OSI ライセンス名ではなく「Source-Available License」と表示する。第1節が目的を自分で要約していて、これが一番分かりやすい。ソースは公開する。個人とチーム(家族を含む)の自分の仕事のための利用は認める。企業の自己ホストと社内利用も認める。フォークも認めるがTaskViewの名称とブランドは守る。third parties 向けのSaaS/マネージドホスティングは明確に禁止。競合する商用製品も明確に禁止。
実務で効いてくるのは定義節のほうだ。“Permitted Users” は個人なら本人と同一世帯の家族、組織なら従業員と「自社のために働く業務委託」まで。原文は続けて 「Permitted Users には、あなたの顧客、エンドユーザー、および従業員/業務委託でない第三者は含まれない」と書く。そして “Managed Service” の定義には、念のためとしてこう並ぶ。
・第三者(たとえばクライアント)のためにソフトウェアをホスト/運用すること。コンサルティングやIT業務の一部として提供する場合も含む
・あなたのインスタンスへ第三者にアクセス(アカウント・ワークスペース・共有プロジェクト)を与えること。有償・無償を問わない
タスク管理ツールでこれは重い。クライアントを1つのプロジェクトに招いて進捗を見せるという、受託開発でごく普通の使い方が Managed Service の定義に入る。社内だけで完結するなら問題ないが、外部と共有する運用を想定しているなら、そこは商用ライセンスの相談窓口([email protected])の側になる。
“Competing Product” の定義も広い。「主目的がプロジェクト/タスク管理または作業追跡で、第三者に提供され、TaskViewと合理的に代替可能なもの」。括弧書きで「医療・法務・工業など特定の業種向け製品を含む」と明示している。つまり「TaskViewをベースに業種特化のタスク管理SaaSを作る」は正面から塞がれている。
フォークについては第4節と第5節の組み合わせで条件が付く。商標(名称・ロゴ)は外すこと、由来を誤認させないこと、そして配布するならこのライセンスか、5.1と5.2(マネージドサービス禁止・競合製品禁止)について同等以上に厳しい条件のライセンスで出すこと。より緩いライセンスへの付け替えはできない。第10節では、第4節か第5節への違反は自動的に権利を終了させると定めている。加えて CONTRIBUTING.md は大きな変更の前にCLA(Contributor License Agreement)への署名を求める。著作権を集約して商用ライセンスを出せるようにする、この種のプロジェクトの定石どおりの構えだ。
誤解のないように書いておくと、これは批判ではない。自己ホストできて、ソースが読めて、社内で好きに改変できるのは十分な価値だ。問題は「star 1.1kの自己ホスト型OSS」という紹介のされ方でこれが流れてきたとき、読む側が受け取る条件が実際とずれることにある。当サイトの表記では、TaskViewはソース公開(Source-Available)の商用プロダクトであって、OSSではない。
実測:MCPは61ツール・約6,999トークン
ここからが本題だ。TaskViewはMCPサーバーを taskview-mcp として npm に公開していて、READMEは npx -y taskview-mcp を stdio で起動し、TASKVIEW_URL と TASKVIEW_TOKEN(tvk_ で始まるAPIトークン)を環境変数で渡す構成を案内している。まず入れて、環境変数なしで起動してみた。
npm install taskview-mcp # 1.48.3 が入る(node_modules は29MB)
node node_modules/taskview-mcp/dist/index.js
# Required environment variables: TASKVIEW_URL, TASKVIEW_TOKEN
# Example: TASKVIEW_URL=https://api.taskview.tech TASKVIEW_TOKEN=tvk_...
環境変数が無いと起動せず、例つきのメッセージで終わる。行儀がいい。次に、ダミーのトークンを渡してMCPのstdioでハンドシェイクし、tools/list を実取得した。
# initialize → notifications/initialized → tools/list を送って応答を数える
TASKVIEW_URL=https://api.taskview.tech TASKVIEW_TOKEN=tvk_dummy \
node probe.mjs node node_modules/taskview-mcp/dist/index.js
# tools: 61
# wire bytes: 27996 ~tokens(ascii/4): 6999
# 動詞別: list 15 / delete 9 / update 8 / get 7 / create 7 / toggle 4 / その他 11
61ツール・27,996バイト。tools/token_audit.py の heuristic 近似トークナイザ(ASCII 4文字=1トークン)で約6,999トークンになる。
個別に重いのは update_task(1,471バイト)、create_task(1,223バイト)、get_time_report(1,093バイト)、list_tasks(972バイト)。逆に list_tags は169バイト、list_permissions は162バイトしかない。総量の押し上げ要因は1本あたりの重さではなく本数で、61本という広さがそのまま常駐コストになっている。
ここで注意すべきことが1つある。ダミーのトークンで起動しても、返ってきたツールは61本すべてだった。READMEは「MCPのアクセスは権限と選択したプロジェクトで制限できる」と書いているが、その制限はAPI側で効くのであって、ツール一覧が縮むわけではない。つまりトークンをどれだけ絞っても、エージェントの文脈に載る6,999トークンは減らない。
当サイトで同じ物差しで測ったMCPサーバーと並べると位置づけが見える。
| MCPサーバー | ツール数 | 常駐トークン(近似) | 絞り込みの手段 |
|---|---|---|---|
| TaskView MCP 1.48.3 | 61 | 約6,999 | 見当たらない(トークン権限はAPI側で効く) |
| Backlog MCP | 62 | 約11,710 | ENABLE_TOOLSETS でほぼ半減 |
| Supabase MCP | — | — | --read-only で書き込み系10本が消える |
| GitHub MCP | 86 | — | toolset とリモート/ローカルの選択 |
| MegaMemory 1.6.2 | 9 | 約1,732 | 不要(最初から最小構成) |
同じ「タスク管理のMCP」でも、Backlog は環境変数でツールセットを切れる。TaskView の 1.48.3 には同等の仕組みが見当たらなかった。ツール数がほぼ同じで常駐が約4,700トークン少ないのは、スキーマの説明文が簡潔だからで、これはこれで美点ではある。ただ要らないツールを外す手段が無い点は、61本という規模では効いてくる。
削除系が9本ある点も設計判断として見ておきたい。delete_task delete_list delete_goal(プロジェクト削除)に加えて、delete_organization まである。エージェントに渡すトークンの権限設計を間違えると、会話の一往復で組織ごと消える経路が存在するということだ。Supabase MCP の --read-only のような、サーバー側で破壊的ツールを落とすスイッチがあると安心なのだが、そこは現状APIトークンの権限に委ねられている。
npx が引くのは3か月前のTaskView MCP
もう1つ、実測して分かったずれがある。npm の taskview-mcp の最新は 1.48.3(2026-06-27 公開)で、公開バージョンは4件しかない。一方でリポジトリの taskview-packages/taskview-mcp/package.json は 1.55.0、リポジトリ自体のタグは v1.56.0(2026-09-22)まで進んでいる。README も .mcp.json も npx -y taskview-mcp を案内しているので、プラグインを入れた読者の手元に来るのは3か月前の版だ。
では実害はどれくらいかを確かめた。リポジトリ側のソースで server.registerTool( の呼び出しを数えると62本、npm 版の tools/list は61本。差分を取ると増えていたのは get_agenda の1本だけだった。バージョン番号の開き(1.48.3 → 1.55.0)ほどの機能差は無い。READMEが「バージョンは製品全体を表す」と書いているとおりで、番号だけを見て慌てる必要はない。
ただし配布物の中身には差がある。リポジトリ側の package.json は bin に taskview-mcp と taskview-mcp-http の2本を宣言しているが、npm の 1.48.3 の dist/ には index.js しか入っていない。HTTPトランスポート版は npm に出ていない。インストール手順のコンポーズファイルにコメントアウトで置かれていた gimanhead/taskview-ce-mcp:latest がこれに対応するのだろう。リモートMCPとして立てたい場合は npm ではなくDockerイメージを見る、という理解になる。
なお npx -y taskview-mcp は毎回レジストリの最新を取りに行くので、公開が進めば自動で追随する。固定したいならバージョンを明示するのが安全だ。パッケージの engines は node >=24 を要求しているので、Node.js 22 以下の環境ではそこも引っかかる。
61ツールを渡す前に決めること
TaskViewは Claude Code 用のプラグインも同梱している。.claude-plugin/marketplace.json がリポジトリ直下にあり、taskview-plugin/ の中身は .claude-plugin/plugin.json、.mcp.json、skills/taskview/SKILL.md、そしてスラッシュコマンド4本(taskview-tasks taskview-new-task taskview-projects taskview-log)。MCPサーバーの設定を手で書かなくてよい形にまとまっている。
{
"mcpServers": {
"taskview": {
"command": "npx",
"args": ["-y", "taskview-mcp"],
"env": {
"TASKVIEW_URL": "https://api.taskview.tech",
"TASKVIEW_TOKEN": "tvk_your_token_here"
}
}
}
}
READMEが案内する設定はこれで、プラグイン側の .mcp.json も同じコマンドを ${user_config.taskview_url} 経由で埋める。既定値として案内されている https://api.taskview.tech はベンダーのクラウドであり、自己ホストしたなら自分のURLに差し替える。plugin.json の userConfig はトークンを sensitive: true で受け取り、説明文でも「アシスタントが届くべき最小の権限とプロジェクトにスコープを絞れ」と促している。
同梱の SKILL.md(2,255バイト)がよくできていて、エージェントに渡す前提を言語化している。goal と project は同義であること(ツール名は *_goal だが利用者は「プロジェクト」と言う)、組織→プロジェクト→リスト→タスクという階層、IDを推測せず必ず list_* で名前から引いてから渡すこと、list_tasks は0始まりで約30件ずつのページングであること、そして delete_* の前と重複作成の前には必ず確認を取ること。61ツールを渡す側の現実的な事故——IDの取り違えと、ページングを忘れた「タスクは30件です」という誤報——を先回りしている。
taskview プラグイン"] --> B["skills/taskview/SKILL.md
ID解決・ページング・確認の作法"] A --> C["スラッシュコマンド4本
tasks / new-task / projects / log"] A --> D[".mcp.json
npx -y taskview-mcp を stdio で起動"] D --> E["61ツール・約6,999トークンが
文脈に常駐"] E --> F["TASKVIEW_URL
クラウド または 自己ホストAPI"] F --> G["PostgreSQL
組織 / プロジェクト / タスク / 時間記録"] H["APIトークン tvk_...
権限とプロジェクトを絞る"] --> F
検証環境:Linux 6.18.44/Node.js 24.21.0/2026-09-29。npm から taskview-mcp 1.48.3 を空のプロジェクトへ導入し、環境変数なしでの起動メッセージを確認したうえで、MCPのstdioで initialize → notifications/initialized → tools/list を送って応答を実取得した。リポジトリは git clone --depth 1 し、LICENSE.md 全125行、taskview-plugin/ 一式、taskview-packages/taskview-mcp/src/tools/ の registerTool 呼び出しを読んでいる。npm のメタデータは registry.npmjs.org から取得。トークン量は tools/token_audit.py の heuristic 近似トークナイザ(ASCII 4字=1)で計測し、tiktoken の cl100k_base はBPE辞書を取得できないため使っていない。未検証:TaskView本体を動かしていない。ドキュメントの Docker Compose 手順は、Docker Hub が 429 Too Many Requests を返しイメージを取得できなかったため実行できていない。したがってWeb UI、権限設計の実挙動、GitHub/GitLab連携、時間計測、そしてMCPツールの実行結果(tools/call)はいずれも未確認。star 1.1k・fork 81・open issues 4 はリポジトリページの表示値。ライセンスの記述は原文の読解であり、法的助言ではない。
導入前に押さえる点
・ライセンスが最初の関門:社内利用と自己ホストは自由。顧客をインスタンスに招く/受託でホストする/競合製品を作る、は不可
・フォークの条件:商標を外し、5.1・5.2と同等以上に厳しい条件で配布する。緩いライセンスへの付け替えは不可
・CLAがある:大きな変更を投げるならContributor License Agreementへの署名が求められる
・MCPは61ツール・約6,999トークン:絞り込みの仕組みは見当たらない。常駐前提で予算を確保する
・delete_* が9本:delete_organization を含む。APIトークンの権限は必ず絞る
・npmは3か月前の版:npx -y taskview-mcp は 1.48.3。差分は get_agenda 1本だが、HTTP版バイナリは未公開
・Node.js 24以上:taskview-mcp の engines 指定。22以下では動かない
・自己ホストはドキュメント側:コンポーズファイルはリポジトリに無く、docs/1.getting-started/2.installation.md からコピーして作る
・開発は活発だが破壊的変更あり:READMEが「リリース間にDBマイグレーションやAPIの破壊的変更が入りうる。更新前にバックアップを」と明記
総括。 TaskViewは、自己ホストのタスク管理という枯れた領域に、MCPとClaude Codeプラグインという新しい口を最初から付けてきた製品だ。61ツールという広さは、エージェントに「プロジェクトを作り、タスクを切り、時間を記録し、メンバーを招く」までやらせる気があることの表れで、同梱の SKILL.md が事故の型まで書いているあたりに本気度が出ている。常駐6,999トークンは決して軽くはないが、Backlog MCP の11,710と比べれば健闘している部類だ。
一方で、評価の順番は逆にしたほうがいい。まずライセンスを読む。「自己ホストできる」と「自由に使える」は別の話で、TaskViewの場合その線は「顧客をプロジェクトに招けるか」というごく日常的な操作の上に引かれている。社内だけで閉じるチームなら問題にならないし、受託や顧客共有が前提なら最初から商用ライセンスの話になる。ここを確かめてから、61ツールをエージェントに渡す権限設計に進むのが順序だ。
参照ソース
・Gimanh/taskview-community(公式リポジトリ) — README・LICENSE.md・taskview-plugin/・taskview-packages/taskview-mcp/ を 2026-09-29 に確認
・taskview-mcp(npmレジストリ) — 実際に導入した 1.48.3 の配布メタデータ
・Model Context Protocol 公式サイト — READMEが参照しているMCPの仕様