FishMem

Agent Plugins

Persistent memory for coding agents and CLIs via the FishMem MCP server.

Agent plugins give coding agents and CLIs persistent memory through the FishMem MCP server. Instead of re-learning your codebase, conventions, and decisions every session, the agent recalls what it already knows and stores new facts as it works.

Every plugin is the same thing under the hood: the @fishmem/mcp server, run with npx -y @fishmem/mcp, wired into a host's MCP configuration. The only difference between hosts is the config file format and location.

How it works

The FishMem MCP server is a thin bridge between an MCP-capable agent and your FishMem memories. It reads your API key from the environment, talks to the FishMem API, and exposes three tools to the agent:

  • search_memory({ query, top_k? }) — recall memories relevant to a query using hybrid recall (vector, keyword, temporal, and graph signals).
  • add_memory({ content, metadata? }) — store a durable fact, such as a build command, a naming convention, or an architectural decision.
  • list_memories({ scope? }) — list the memories visible in the current scope.

The agent decides when to call these tools. A well-configured agent searches before it answers and adds a memory whenever it learns something worth keeping.

Configuration

All plugins run the same command and read the same environment variables:

npx -y @fishmem/mcp
VariableRequiredPurpose
FISHMEM_API_KEYyesYour fm_... key. See Authentication.
FISHMEM_USER_IDnoDefault user_id for stored and recalled memories.
FISHMEM_PROJECTnoDefault project/run scope for memories.
FISHMEM_BASE_URLnoPoint at a self-hosted engine instead of the cloud.

Why per-project scoping

Coding agents work inside a repository, and what they learn is almost always specific to that repository: its test command, its module layout, the reason a workaround exists. FishMem scopes memories by user_id, agent_id, and run_id, so the recommended setup for coding agents is:

  • run_id = the repository or project. Memory becomes per-project — facts from one repo never leak into another.
  • agent_id = a stable id per tool. Keeps each tool's memories attributable and easy to list or prune.

Because memories persist on the server, they outlive the session. Close the terminal, come back tomorrow, switch machines — the agent still knows your codebase.

Plugins

Next steps

On this page