Polypack Memory

io.github.imattau由 GitHub 帳號 imattau 發布v0.1.31更新於 Oct 24, 2026

MCP server exposing Polypack as persistent adaptive memory

發布方自己的服務:Memory.fit

已驗證STDIO僅桌面資料庫知識與記憶

概覽

AI 產生的概覽

一個本機 MCP 伺服器,透過 Polypack 為助理提供持久、自適應的記憶,可儲存、召回、連結與整併記憶。

可以做什麼
儲存、依 ID 取得、更新、批次儲存與永久刪除記憶,刪除需確認,內容變更以取代方式保留歷史。依 token 預算召回記憶並組裝上下文,可選嚴格上下文隔離與按需、有上限的圖鄰居補全。連結與取消連結記憶,取代與整併記憶,並查詢關係圖。送出活化回饋、抑制記憶並列出上下文。讀取 polypack 協定下的上下文、活躍記憶、結構定義、統計與工作流程指引資源。
適用情境
適合需要助理跨工作階段記住專案或使用者偏好、過往事件與操作流程的情境,也適合讓 Claude 與 Codex 等多個用戶端共用同一份持久記憶。
執行需求
以本機 Python 套件形式執行,從 PyPI 安裝,polypack 額外相依會引入 polypack-db。需以 --store 指定持久儲存目錄,否則使用記憶體後端。多用戶端共用需執行常駐的本機 Streamable HTTP 服務,可透過 systemd 使用者服務、Debian 或 RPM 套件或手動指令啟動。選用的語意檢索會下載一次 Qwen 嵌入模型。
安裝前請注意
記憶工具會寫入、修改與刪除本機儲存中的資料;memory_delete 為永久刪除且需 confirm=true。變更操作會立即寫入持久儲存。選用的嵌入設定會下載模型並執行本機 helper。不要讓多個用戶端以指令方式共用同一儲存,程序競爭可能破壞共用記憶。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Polypack Memory,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[polypack-mcp]

Persistent, adaptive memory for MCP clients.

An MCP server that exposes Polypack as persistent adaptive memory. MCP-specific tools live here; the database remains an independent dependency.

Install and run

The simplest installation is from PyPI:

sh
python3 -m pip install 'polypack-mcp[polypack]'

For one MCP client, use the default stdio server configuration. For Claude and Codex sharing the same durable memory, install once and create a long-running user service:

sh
polypack-mcp setup --store ~/.local/share/polypack-mcp

This starts a stateless Streamable HTTP server at http://127.0.0.1:8765/mcp/, restarts it after a failure, and prints client configuration snippets. The setup command uses systemd --user; on systems without systemd, start the server directly:

sh
polypack-mcp --transport streamable-http --port 8765 --store ~/.local/share/polypack-mcp

In shared Streamable HTTP mode, configure both clients with the URL. Do not configure them with a command and --store, since that starts two processes competing for the same durable store.

Codex (~/.codex/config.toml):

toml
[mcp_servers.polypack]  url = "http://127.0.0.1:8765/mcp/"

Claude Desktop:

json
{  "mcpServers": {    "polypack": { "url": "http://127.0.0.1:8765/mcp/" }  }}

Debian package

The Debian package installs and starts a system-level polypack-mcp service automatically. It runs as the dedicated polypack user, stores data in /var/lib/polypack-mcp, and exposes the same local Streamable HTTP endpoint:

sh
sudo apt install ./polypack-mcp_<version>_amd64.deb

After installation, point Claude and Codex at http://127.0.0.1:8765/mcp/. The default port can be changed in /etc/default/polypack-mcp, followed by a service restart. The service can be managed with:

sh
sudo systemctl status polypack-mcpsudo systemctl restart polypack-mcp

The PyPI installation remains user-managed and uses polypack-mcp setup to create a per-user service instead.

Optional semantic retrieval

The default installation uses Polypack's local graph, activation, and lexical retrieval without downloading an AI model. To enable local Qwen semantic retrieval, run:

sh
sudo polypack-mcp embeddings setup qwen3 --system --store /var/lib/polypack-mcp

This creates a managed localhost helper, downloads Qwen once into the store's embedding cache, and reindexes existing memories. The model is not bundled in the Debian/RPM package.

The helper loads Qwen3-Embedding-0.6B in bfloat16 (~1GB resident once loaded, versus ~2.4GB in fp32) and unloads it after 15 minutes of inactivity, reloading automatically on the next request. memory_recall results include a semantic entry in scoreComponents whenever the helper is reachable, alongside lexical and activation — the three sum to the reported score. If the helper is stopped or errors, recall falls back to lexical + activation scoring automatically. Check or disable it with:

sh
polypack-mcp embeddings statussudo polypack-mcp embeddings disable --system --store /var/lib/polypack-mcp

For a PyPI user service, omit sudo --system and use the user store:

sh
polypack-mcp embeddings setup qwen3

APT repository

The latest Debian package is also published to the public APT repository at https://imattau.github.io/polypack-mcp. Configure it with the repository's signing key, then install and update normally:

sh
curl -fsSL https://imattau.github.io/polypack-mcp/gpg.key \  | sudo gpg --dearmor -o /usr/share/keyrings/polypack-mcp.gpgecho "deb [signed-by=/usr/share/keyrings/polypack-mcp.gpg] https://imattau.github.io/polypack-mcp stable main" \  | sudo tee /etc/apt/sources.list.d/polypack-mcp.listsudo apt updatesudo apt install polypack-mcp

The repository is updated automatically for each v*.*.* release tag. See docs/apt-repository.md for maintainer setup instructions.

RPM package

RPM-based distributions can install from the public RPM repository:

sh
sudo rpm --import https://imattau.github.io/polypack-mcp/rpm/RPM-GPG-KEY-polypack-mcpsudo tee /etc/yum.repos.d/polypack-mcp.repo >/dev/null <<'EOF'[polypack-mcp]name=Polypack MCPbaseurl=https://imattau.github.io/polypack-mcp/rpm/enabled=1gpgcheck=1gpgkey=https://imattau.github.io/polypack-mcp/rpm/RPM-GPG-KEY-polypack-mcpEOFsudo dnf install polypack-mcp

The matching .rpm asset is also attached to the GitHub release:

sh
sudo dnf install ./polypack-mcp-<version>-1.x86_64.rpm

The RPM package provides the same systemd service, store location, localhost Streamable HTTP endpoint, and Python 3.12 requirement as the Debian package.

Run manually

sh
pip install -e '.[polypack]'polypack-mcp --store ./polypack-data

The server exposes seventeen focused tools: memory_store, memory_get, memory_update, memory_list_contexts, memory_delete, memory_recall, memory_context, memory_feedback, memory_suppress, memory_supersede, memory_consolidate, memory_link, memory_unlink, memory_thread, memory_store_batch, memory_link_batch, and graph_query. It also publishes context, active-memory, schema, stats, and agent workflow guidance resources under polypack://.

Memory classes are entity, episodic, procedural, and semantic. Store project or user preferences as procedural memories; preference is not a separate memory class.

When using a durable Polypack store, mutating operations checkpoint immediately and the server flushes the store during shutdown.

Retrieval tools return {items, metadata}. Metadata includes candidate and excluded counts, context matches, score components, fallback behavior, the retrieval version, and selection statistics. memory_context uses estimated tokens (ceil(content characters / 4), minimum one) as its token_budget. An item is never returned if it would exceed the remaining budget; budgets less than or equal to zero are rejected. Context is a soft preference: matching memories are preferred and unscoped global memories may be used as fallback. Pass strict_context: true for isolation. An empty isolated result reports reason: "no_context_match" and the searched context.

memory_recall can optionally hydrate related graph memories in the same call:

json
{  "query": "identity cache fix",  "context": "cross-agent",  "include_neighbors": true,  "edge_types": ["RESPONDS_TO"],  "depth": 2,  "neighbor_limit": 3,  "limit": 20,  "token_budget": 4000}

Neighbor traversal is opt-in and bounded. limit caps the total response and neighbor_limit caps hydrated neighbors; metadata reports moreNeighborsAvailable when additional eligible neighbors were found. Neighbor items include their distance and connecting relationship metadata. Use memory_link with the default RESPONDS_TO relationship for handoffs, reviews, and fixes that address an earlier memory. Graph edges are authoritative for relationships; use graph_query(operation="relationship_diagnostics") to find legacy provenance.responds_to values that are not backed by edges. See polypack://help/workflow for the agent-facing workflow.

Feedback is activation feedback: useful=true reinforces a memory and useful=false provides negative retrieval feedback. Responses expose activation before and after plus whether learned weights changed. Supersession and consolidation materialize SUPERSEDES, SUPERSEDED_BY, and CONSOLIDATED_FROM graph edges.

Use memory_get for exact ID lookup and memory_update for mutable fields (context, confidence, provenance, and metadata). Content changes should use memory_supersede so history remains intact. Use memory_unlink to correct a relationship and memory_list_contexts to discover namespaces. memory_delete is permanent, requires confirm=true, and supports an optional revision check; prefer memory_suppress when retaining history is useful.

Pass --store to open a durable Polypack directory. Without it, the server uses the in-memory reference backend, which is convenient for smoke tests. The polypack extra requires polypack-db>=3.3.1 and uses its native ActivationEngine.working_memory selector for context assembly.

Development

sh
pip install -e '.[dev]'pytest

The test suite includes an MCP client/server protocol smoke test covering tool discovery, memory storage, recall, and resource reads.

Documentation

來源:README.md,提交 201feb8

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.31最新Sep 16, 2026

評分

已滿足適用檢查項的 40%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。

其他 Memory 整合