projectstate について
projectstate は、AI エージェント向けに決定事項、失敗した試行、未完了タスクを記録するプロジェクト単位の MCP サーバーです。ランキング検索と計画チェックでセッションをまたぐ情報を簡潔に返し、x402 と USDC による従量課金に対応します。
主な機能
- 01決定事項、試行、タスク、メモの保存
- 02文字数を制限したランキング検索
- 03失敗や制約を示す計画チェック
- 04ステータス更新と決定事項の置き換え
- 05x402 と USDC による従量課金
活用シーン
- 01作業開始前に関連する失敗を確認
- 02セッション間で状態と未完了タスクを引き継ぎ
- 03複数のエージェント間で決定事項を共有
MCP 対応
Streamable HTTP の MCP サーバーとして、プロジェクト設定、状態管理、記録、検索、計画チェックのツールを提供します。呼び出しは x402 経由で USDC 決済されます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://projectstate.online/mcpclaude mcp add --transport http online-projectstate-projectstate https://projectstate.online/mcp{"mcpServers":{"online-projectstate-projectstate":{"type":"http","url":"https://projectstate.online/mcp"}}}Cursor で開く{"servers":{"online-projectstate-projectstate":{"type":"http","url":"https://projectstate.online/mcp"}}}VS Code で開く{"mcpServers":{"online-projectstate-projectstate":{"type":"http","url":"https://projectstate.online/mcp"}}}{"mcpServers":{"online-projectstate-projectstate":{"serverUrl":"https://projectstate.online/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
6| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| name | any | いいえ | |
| project | any | いいえ | |
| description | any | いいえ |
詳細
projectstate
x402経由でUSDCを呼び出しごとに支払い、AIエージェント向けの永続的なプロジェクトメモリを提供します。アカウントもAPIキーも不要です。
https://projectstate.online/mcp — MCP サーバー(Streamable HTTP)です。プロジェクトごとに、何が決定され、何が試されて失敗し、何が未解決なのかを記憶し、履歴全体ではなく、エージェントが必要とする3つの事実を返します。
目的
エージェントには、すでに「メモリ」があります。しかし、ツールやセッションをまたいで保持されるプロジェクトの状態はありません。Claude Code、Cursor、CI エージェント、スクリプトが同じリポジトリで作業し、決定事項や行き詰まった点を、順位付けされた簡潔な記録として共有する仕組みです。これがこのツールの役割です。重要なのは検索です。recall は文字数の上限内で数行だけを返し、置き換えられた決定は順位を下げ、現在有効な決定は順位を上げます。
ツール
| ツール | 機能 | 価格 |
|---|---|---|
project_open(project, name?, description?) | プロジェクトを開く/作成する。状況、未完了タスク、最新の決定、失敗した試行を含む概要を返します | $0.002 |
project_status(project, set_status?) | 1行の状況(セッション間の引き継ぎメモ)を読み取る、または設定します | $0.002 |
remember(project, kind, title, body?, tags?, files?, status?, supersedes?, idempotency_key?) | decision、attempt、task、noteを保存します | $0.002 |
recall(project, query?, kind?, status?, tags?, files?, limit=5, max_chars=1500) | キーワードで順位付けして検索し、上限に合わせて短縮します | $0.005 |
plan_check(project, intent, files?, limit=3, max_chars=1200) | これから行う作業を伝えると、計画を変更する可能性のある失敗した試行、拘束力のある決定、重複するタスクを返します | $0.010 |
update(project, id, status?, title?, body?, append?, tags?, files?, delete?) | タスクを完了にし、試行を記録し、決定を置き換えます | $0.002 |
失敗した呼び出しは無料です。同一の再試行(または同じidempotency_keyを使った呼び出し)は、二重に請求されることはありません。価格はtools/listの各ツールの_meta.priceUsdで公開されています。
plan_check
本格的な作業を始める前に呼び出すツールです。
plan_check(project="my-app", intent="switch the session cache to Redis", files=["src/cache.py"])
Plan check for 'my-app': 'switch the session cache to Redis'
Prior failures (1):
#8 attempt/failed (2026-09-12): Tried Redis for the session cache — connection pool exhausted under load
Active decisions that constrain this (1):
#9 decision/active (2026-09-12): Cache with SQLite instead of Redis — one less service to run
Open tasks that overlap (1):
#10 task/open (2026-09-12): Benchmark the cache options
1回の呼び出しで、対象を絞った3つの検索を行い、計画を変更するものだけを返します。該当する記録がない場合は「この計画に一致する記録はありません」と返すため、エージェントは再検索せずに作業を進められます。
支払い方法
- ツールを呼び出します。クレジットがない場合、結果は
isError: trueとなり、x402 v2のPaymentRequiredがstructuredContentに含まれます(スキームexact、Base上のUSDC、金額、支払い先アドレス)。 - USDCの支払いに署名し、ペイロードを
_meta["x402/payment"]に含めて同じ呼び出しを再試行します。 - 結果には決済レシートが
_meta["x402/payment-response"]に、クレジットトークンが_meta["projectstate/x402-credit"]に含まれます。 - 1回の支払いでクレジットを購入できます(セッションベースの接続では$0.10、セッションがない場合は呼び出しごとに最低$0.01)。以降の呼び出しでは、セッション内で自動的にクレジットが使われます。または、クレジットトークンを
Authorization: Bearer xc_…として送信します。未使用のクレジットはウォレットアドレスに残ります。
x402対応のクライアントであれば利用できます。Vercel AI SDK向けのx402-mcp(withPayment())、x402 Pythonパッケージ、またはscripts/x402_agent_demo.pyにある30行のハンドシェイクに対応しています。
from eth_account import Account
from mcp import Client
from x402 import x402Client
from x402.mechanisms.evm.exact import register_exact_evm_client
from x402.mechanisms.evm.signers import EthAccountSigner
from x402.schemas import PaymentRequired
x = x402Client(); register_exact_evm_client(x, EthAccountSigner(Account.from_key(KEY)))
async with Client("https://projectstate.online/mcp") as mcp:
r = await mcp.call_tool("project_open", {"project": "my-app"}) # -> PaymentRequired
pay = (await x.create_payment_payload(PaymentRequired(**r.structured_content))).model_dump(by_alias=True, exclude_none=True)
r = await mcp.call_tool("project_open", {"project": "my-app"}, meta={"x402/payment": pay})
token = r.meta["projectstate/x402-credit"] # reuse on later calls
内部の仕組み
Python 3.12、公式MCP Python SDK(v2)、SQLite + FTS5(bm25、ベクトル検索なし)、Baseメインネット上のCoinbaseファシリテーターを利用する公式x402パッケージを使用しています。プロセスは1つ、SQLiteファイルは1つです。管理ダッシュボードには、ツールごとのレイテンシ、エラーメッセージ、完全な監査台帳、検索品質メーター(結果ゼロ率と再クエリ率)があり、キーワード検索だけでは不十分になるタイミングがわかります。
ドキュメント:https://projectstate.online/docs · レジストリ:online.projectstate/projectstate · ライセンス:MIT
独自に実行する
deploy/install.sh は、小規模な Ubuntu VPS に systemd、nginx、fail2ban、SQLite の毎時バックアップ、および無人アップグレードをセットアップします。deploy/env.example にすべての設定が記載されています。deploy/x402_live_setup.sh は、Coinbase CDP キーを使って x402 の決済レールを Base メインネットに切り替えます。pytest tests/ を実行すると、実際の EIP-712 署名を検証する x402 ファシリテーターのモックを含む 33 件のテストが実行されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。