priostack について
priostackは、AIエージェント向けの長期メモリとマルチエージェント間のコンテキスト共有を提供するMCPサーバーです。Python SDKと多言語クライアントを備え、型付き情報と取り消し可能な権限付与でメモリをネットワークリソースとして扱います。
主な機能
- 01モデル非依存の長期メモリ
- 02エージェントの自己登録とセッション管理
- 03型付き情報の保存と取得
- 04権限を限定したコンテキスト共有
- 05アクセス権の取り消し
活用シーン
- 01実行をまたいだエージェントメモリの保持
- 02権限を限定したエージェント間の情報共有
- 03Python SDKによるメモリサービスへの接続
MCP 対応
MCPサーバーとして、JSON-RPC 2.0経由でエージェント登録、コンテキストスペース、情報の保存・取得、アクセス権付与のツールを提供します。MCPクライアントはStreamable HTTPのURLで接続できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://priostack.com/acn/rpcclaude mcp add --transport http priostack https://priostack.com/acn/rpc{"mcpServers":{"priostack":{"type":"http","url":"https://priostack.com/acn/rpc"}}}Cursor で開く{"servers":{"priostack":{"type":"http","url":"https://priostack.com/acn/rpc"}}}VS Code で開く{"mcpServers":{"priostack":{"type":"http","url":"https://priostack.com/acn/rpc"}}}{"mcpServers":{"priostack":{"serverUrl":"https://priostack.com/acn/rpc"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
42| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| actor | string | いいえ | |
| token | string | いいえ | |
| maxResponseTokens | integer | いいえ |
詳細
⚡ Priostack エージェントコンテキストネットワーク(ACN)
MCP を介した、セットアップ不要でモデルに依存しない長期記憶とマルチエージェント間のコンテキスト共有。
Priostack ACN は、エージェントの長期記憶を、単一の LLM ベンダーに後付けするものではなく、ネットワークリソースとして扱います。JSON-RPC 2.0 で接続する Model Context Protocol(MCP) サーバーであり、エージェントは自ら登録し、分離されたコンテキスト空間を保持して、型付きの事実を保存し、読み戻し、範囲を指定して取り消し可能な権限付与を通じて他のエージェントと共有できます。
公開サーバーは https://priostack.com/mcp で稼働中です(検出可能な Streamable-HTTP MCP エンドポイントです。https://priostack.com/acn/rpc も利用可能なエイリアスです)。
🔥 できること
- 🤖 セットアップ不要ですぐに利用開始 — エージェントは
noetic.registerで自ら登録し、ベアラートークンを取得します。ダッシュボードも UI もクレジットカードも不要です。 - 🌐 モデルに依存しないメモリ — 同じコンテキストを OpenAI、Anthropic、またはローカルモデルのエージェントで利用できます。メモリはモデルから切り離されています。
- 🤝 範囲を指定したマルチエージェント共有 — 他のエージェントに対し、空間内のコンテンツに対する明示的な権限(
read、quote、write、share、exportなど)を付与するか、request_accessでアクセスをリクエストさせて承認できます。権限付与は取り消し可能で、転送先からさらに転送することはできません。 - 🧠 型付きの事実 —
declaration(ルール/ポリシー)、observation(測定された事実)、measurementを保存し、「何が主張されているか」と「何が観察されたか」を分けて管理します。 - 🔌 ネイティブ MCP — URL から Claude Desktop、Cursor、または任意の MCP クライアントを接続するか、以下の SDK を利用できます。
🚀 クイックスタート(Python)
pip install priostack
from priostack import ACNClient
with ACNClient() as acn: # defaults to https://priostack.com/mcp
acn.register(display_name="my-agent") # self-register; token captured on the client
acn.connect() # open a session; session id captured internally
space = acn.create_space(display_name="prod-memory")
acn.store(space.space_id, objects=[
{"content": "Refunds over $500 require manager approval.", "type": "declaration"},
{"content": "Export pipeline latency was 1.8s at 14:02 UTC.", "type": "observation"},
])
hits = acn.fetch(space.space_id, query="refund") # substring content reader
for content in hits.contents():
print(content)
トークンを保存してください。
register()が返すベアラートークンは、一度だけ表示されます。トークン(およびスペース ID)を保存し、再登録する代わりに、後でACNClient(token=...)を使って再接続してください。
実行可能な例は examples/ にあります:マルチエージェント共有、アクセスのリクエストと承認、取得と想起、取り消しとローテーション、および LangChain、CrewAI、Claude エージェント向けのメモリ統合です。
各例は PRIOSTACK_ENDPOINT に対応しているため、環境変数を 1 つ設定するだけで、すべての例の接続先をセルフホスト可能なノード、ステージング環境、またはローカル環境に指定できます。
export PRIOSTACK_ENDPOINT=http://127.0.0.1:8091/rpc
🧩 エージェントフレームワーク別クイックスタート
どの例も、登録、スペースの作成、保存、2 つ目のエージェントとの共有、読み戻しまでを一通り実行します。それぞれ単独で動作し、ACN の呼び出しは実際に行われます。フレームワーク(または LLM キー)がインストールされていない場合は、メッセージを表示してフレームワーク部分をスキップします。
| フレームワーク | クイックスタート | 内容 |
|---|---|---|
| CrewAI | examples/crewai_quickstart.py | クルーの各メンバーがそれぞれ独自の ACN IDを持ちます。リサーチャーがスペースを所有し、ライターに read と quote を付与します |
| LangGraph | examples/langgraph_quickstart.py | グラフの実行後も残るメモリです。実行 2 は実行 1 で保存された情報をもとに回答し、その後、レビュアーエージェントに同じスペースの read を付与します |
| AutoGen | examples/autogen_quickstart.py | プル型のハンドシェイクです。アナリストが公開済みのスペースを見つけ、理由を添えて read をリクエストし、アーキビストが承認します |
pip install priostack
python examples/crewai_quickstart.py # works with or without crewai installed
🤝 マルチエージェント間のコンテキスト共有
所有者は、別のエージェントに特定の範囲のスペースへのアクセス権を付与します。付与先は受け取り側のエージェント ID(register() が返す値)であり、受け取り側は拡張されたスコープを反映するため、その後再接続する必要があります。
# Owner stores knowledge and grants read + quote to a worker agent.
grant = owner.grant_access(space.space_id, worker_agent_id, rights=["read", "quote"])
worker.connect() # reconnect to apply the grant
print(worker.fetch(space.space_id, query="refund").contents())
owner.revoke_access(grant.capability_ref) # immediate, forward-only
プルモデルを使いたい場合は、利用側が request_access(space_id, rights=["read"]) を呼び出し、所有者が list_requests() と approve_request(request_id) を呼び出します。詳しくは
examples/request_and_approve.py をご覧ください。
🌍 15 言語の SDK
Python はリファレンス SDK です(このリポジトリのルートにあり、PyPI で公開されています)。ほかの 14 言語向けの慣用的なクライアントは clients/ 以下にあり、それぞれ独自のクイックスタートと README を備え、まったく同じワイヤーコントラクトを実装しています(clients/SPEC.md)。
| 言語 | パス | HTTP + JSON スタック |
|---|---|---|
| Python | / · PyPI priostack | requests |
| JavaScript(Node ≥20) | clients/javascript | 組み込みの fetch |
| TypeScript | clients/typescript | グローバル fetch(型付き) |
| Java(Maven) | clients/java | java.net.http + Jackson |
| Go | clients/go | 標準ライブラリ net/http |
| C# / .NET 8 | clients/csharp | HttpClient + System.Text.Json |
| PHP(Composer) | clients/php | curl |
| Ruby | clients/ruby | 標準ライブラリ net/http |
| Rust | clients/rust | reqwest + serde |
| Kotlin(Gradle) | clients/kotlin | java.net.http |
| Swift(SwiftPM) | clients/swift | URLSession + Codable |
| C++17 | clients/cpp | libcurl + nlohmann/json |
| Dart | clients/dart | package:http |
| Scala | clients/scala | java.net.http + uPickle |
| Shell | clients/shell | curl + jq |
各クライアントには2 つのクイックスタートが付属しています。単独利用向け(登録 → スペースを作成 → 保存 → 取得)と、共有向け(share_quickstart — 2 つのエージェント、1 つのスペース、明示的な権限付与、その後の取り消し)です。自分自身としかやり取りしないエージェントは、ネットワークを使っているとは言えないためです。
各クライアントは MCP エンベロープを展開し、セッション ID を取得し、ツールによる拒否時には型付きエラーを送出し、1 つの HTTP 接続を再利用します。15 言語すべての共有クイックスタートを、稼働中の ACN ノードに対してエンドツーエンドで実行済みです — 2 つのエージェントを登録し、権限を付与し、読み取りと取り消しを行っています。また、すべてのクライアントが CI でビルドされます(.github/workflows/ci.yml を参照)。
🛠️ MCP クライアント(Claude Desktop、Cursor)から使う
ACN は検出可能な Streamable-HTTP MCP サーバーであるため、MCP クライアントは URL で接続します。すぐに使える設定は examples/mcp_config/ にあります。
Claude Desktop(Settings → Developer → Edit Config)、mcp-remote ブリッジ経由:
{
"mcpServers": {
"priostack-acn": { "command": "npx", "args": ["-y", "mcp-remote", "https://priostack.com/mcp"] }
}
}
Cursor(URL によるネイティブなリモート MCP):
{ "mcpServers": { "priostack-acn": { "url": "https://priostack.com/mcp" } } }
検出できることを自分で確認するには:
curl -s https://priostack.com/mcp -H 'Content-Type: application/json' -H 'Accept: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | jq '.result.tools | length'
📖 API リファレンス(JSON-RPC 2.0)
エンドポイント:https://priostack.com/mcp(エイリアス:https://priostack.com/acn/rpc)。
すべての呼び出しは tools/call です。
{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"noetic.store","arguments":{ "sessionId":"...", "space":"space-1", "objects":[...] }}}
レスポンスでは結果のエンベロープがテキストとして返されます。JSON.parse(response.result.content[0].text) でラップを解除すると、{ok, outcome, data, detail?} を取得できます。ok:false の場合、outcome は not-found、invalid-query、capability-denied、policy-denied、requires-governance、stale-base、integrity-fault、conflict、capacity-exhausted、not-implemented のいずれかです(上記の SDK はすべて、このラップ解除とエラーのマッピングを自動で行います)。
| メソッド | 目的 | 主な引数 | 備考 |
|---|---|---|---|
noetic.register | エージェントを自己登録する | displayName | data.token を返します(一度だけ表示) |
noetic.connect | セッションを開く | token、maxResponseTokens | data.SessionID を返します(パスカルケース) |
noetic.create_space | コンテキストスペースを作成する | sessionId、displayName、defaultRights | data.spaceId を返します |
noetic.store | 型付きの事実を永続化する | sessionId、space、objects[] | type ∈ declaration | observation | measurement |
noetic.fetch | 保存したコンテンツを読み戻す | sessionId、space、query、limit | 部分文字列で絞り込みます。読み取り用です |
noetic.grant | スコープ付きアクセス権を付与する | sessionId、subjectPrincipal、resource、rights[]、worldMutation | space 引数は resource です。付与された側は再接続が必要です |
noetic.revoke | ケイパビリティを取り消す | sessionId、capabilityRef | 即時に反映され、取り消しは元に戻せません |
noetic.request_access | アクセスをリクエストする | sessionId、space、rights[]、reason | 権限の引数名は rights です |
noetic.list_requests | 保留中のリクエストを一覧表示する | sessionId | オーナー側で使用します |
noetic.approve_request | リクエストを承認する | sessionId、requestId、rights[] | グラントを発行します |
noetic.discover | 公開スペースを一覧表示する | query、limit | セッションは不要です |
noetic.metrics | セッションの使用状況を取得する | sessionId | アカウントとスペースの指標 |
noetic.rotate_token | 新しいトークンを発行する | sessionId | 古いトークンは無効になります |
noetic.disconnect | セッションを終了する | sessionId | 永続化された事実は保持されます |
fetchとqueryの違い:noetic.fetchは保存されたコンテンツを返します(部分文字列で絞り込み)。noetic.queryはメモリに対する幾何学的な乖離プローブであり、コンテンツを読み取るものではありません。事実を読み戻すために使わないでください。
ツールは全部で約 40 個あります。各 SDK には、明示的にラップされていないツールを呼び出すための汎用的な call(method, arguments) エスケープハッチが用意されています。
📚 ドキュメント
| Agent Context Network とは | コンセプト、権限モデル、FAQ |
| API とツールのリファレンス | 各 MCP ツールを用途別に紹介 |
| インテグレーションガイド | Claude、Cursor、LangChain、CrewAI、OpenAI 互換エージェント |
| 開発者ハブ | MCP、Python、HTTP のエントリーポイント |
| チュートリアル | ステップごとのガイド |
| 無料プランと制限 | 無料で利用できます:エージェントアカウントごとにスペース 5 個、オブジェクト 500,000 個、月間クエリ 500,000 件 |
🧪 開発
pip install -e ".[dev]"
pytest # unit tests (mocked transport, no network)
ruff check src tests
./scripts/check-links.sh # every link in the docs still resolves
CI(GitHub Actions)は、各プルリクエストで Python テストスイートを実行し、すべての言語クライアントをビルドして型チェックし、ドキュメントのリンクを検査します。
📄 ライセンス
MIT。詳細は LICENSE をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。