Generated banner for Knowledge Graph Memory Server
Generated logo for Knowledge Graph Memory Server

Knowledge Graph Memory Server

Memory serverOfficial Model Context Protocol project

Created by Model Context Protocol

Published in modelcontextprotocol/servers. Publisher page

91,920 GitHub stars

What it is

MCP server for enabling memory for Claude through a knowledge graph
— the description by Model Context Protocol

AutoGineer overview, from the brain’s own files

This memory server enables AI agents, specifically those using the Model Context Protocol, to maintain persistent information across sessions. It structures data as a knowledge graph consisting of entities, relations, and observations. Entities represent distinct nodes, relations define directed connections between them, and observations store atomic facts about specific entities. The system supports full CRUD operations on the graph, allowing agents to create, search, and delete nodes and connections. It stores data in a local JSONL file and includes locking mechanisms to ensure data integrity when accessed by multiple processes.

How it works

Memory model: Knowledge graph

AutoGineer overview, from the brain’s own files

The system operates as an MCP server that manages a knowledge graph stored in a local JSONL file. It provides tools for agents to create entities with types and observations, establish directed relations between entities, and perform granular updates or deletions of facts. The server exposes the entire graph as an MCP resource, allowing agents to read, search, and modify the graph structure dynamically. It handles concurrent access through file-based locking and ensures atomic saves by writing updates to temporary files before renaming them.

Folders
FolderRoleFiles
src/memory/__tests__tests17

The agent reads

Requirements

Apps: Docker

Runtimes: Node.js >=24

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Google Antigravity, Kiro, OpenCode, Amp, Roo Code, Cline, JetBrains Junie, Devin (ex-Windsurf)

Set it up

  1. This brain runs code automatically: 1 script. Review src/memory/package.json before opening the folder in Claude Code. No step below turns a hook on for you.

    • src/memory/package.json: npm run build
  2. Not scanned by AutoGineerThe author’s MCP configuration (src/memory/README.md) also starts it in a way AutoGineer does not offer. Read that file: AutoGineer did not scan that path; what it runs is listed under “This brain runs”. https://github.com/modelcontextprotocol/servers/blob/e1dc4b18dbb948921da37f3d4224a628730b43b0/src/memory/README.md
  3. Not scanned by AutoGineerIts dependencies are installed by npm when you run it and were not scanned by AutoGineer (2 declared). https://www.npmjs.com/package/@modelcontextprotocol/server-memory
  4. Created by Model Context Protocol. Published in modelcontextprotocol/servers. Licence: Apache License 2.0.

Usage

AutoGineer overview, from the brain’s own files

  • Configure the server in the Claude Desktop or VS Code MCP settings.
  • Use the provided tools to create entities for people, organizations, or events.
  • Define relations between entities to map connections.
  • Add atomic observations to entities to store specific facts.
  • Search or read the graph to retrieve relevant context for agent interactions.
  • Delete specific observations or entities to manage memory size and relevance.
“Create an entity for 'John Smith' with the observation 'Speaks fluent Spanish'.”
The agent calls create_entities to add John Smith to the knowledge graph with the specified observation.
“Connect 'John Smith' to 'Anthropic' with the relation 'works_at'.”
The agent calls create_relations to establish a directed link between the two entities.

Documentation by Model Context Protocol

Knowledge Graph Memory Server

A basic implementation of persistent memory using a local knowledge graph. This lets Claude remember information about the user across chats.

Published on npm as @modelcontextprotocol/server-memory.

Core Concepts

Entities

Entities are the primary nodes in the knowledge graph. Each entity has:

  • A unique name (identifier)

  • An entity type (e.g., "person", "organization", "event")

  • A list of observations

Example:

{
  "name": "John_Smith",
  "entityType": "person",
  "observations": ["Speaks fluent Spanish"]
}
Relations

Relations define directed connections between entities. They are always stored in active voice and describe how entities interact or relate to each other.

Example:

{
  "from": "John_Smith",
  "to": "Anthropic",
  "relationType": "works_at"
}
Observations

Observations are discrete pieces of information about an entity. They are:

  • Stored as strings

  • Attached to specific entities

  • Can be added or removed independently

  • Should be atomic (one fact per observation)

Example:

{
  "entityName": "John_Smith",
  "observations": [
    "Speaks fluent Spanish",
    "Graduated in 2019",
    "Prefers morning meetings"
  ]
}

API

Tools
  • create_entities

    • Create multiple new entities in the knowledge graph

    • Input: entities (array of objects)

      • Each object contains:

        • name (string): Entity identifier

        • entityType (string): Type classification

        • observations (string[]): Associated observations

    • Ignores entities with existing names (and repeats of a name earlier in the same call); their observations are not added

    • Returns the created entities. When any were skipped, the structured result also lists their names in skipped, and a second text item says which were skipped (use add_observations to extend an existing entity)

  • create_relations

    • Create multiple new relations between entities

    • Input: relations (array of objects)

      • Each object contains:

        • from (string): Source entity name

        • to (string): Target entity name

        • relationType (string): Relationship type in active voice

    • Skips duplicate relations

    • Fails if either the source or target entity doesn't exist

  • add_observations

    • Add new observations to existing entities

    • Input: observations (array of objects)

      • Each object contains:

        • entityName (string): Target entity

        • contents (string[]): New observations to add

    • Returns added observations per entity

    • Fails if entity doesn't exist

  • delete_entities

    • Remove whole entities, with all their observations

    • Input: entityNames (string[])

    • Cascading deletion of every relation that points to or from a deleted entity

    • To remove a link between two entities and keep both, use delete_relations; to remove facts from an entity, use delete_observations

    • No error if an entity doesn't exist; the response reports which names were not found

  • delete_observations

    • Remove specific observations from entities

    • Input: deletions (array of objects)

      • Each object contains:

        • entityName (string): Target entity

        • observations (string[]): Observations to remove

    • No error if an observation doesn't exist; the response reports how many were deleted

  • delete_relations

    • Remove specific relations from the graph, keeping the entities they connect (to remove an entity itself, use delete_entities)

    • Input: relations (array of objects)

      • Each object contains:

        • from (string): Source entity name

        • to (string): Target entity name

        • relationType (string): Relationship type

    • A relation is deleted only when from, to and relationType all match a stored one exactly; read the stored relationType with open_nodes (or search_nodes) first if unsure

    • No error if a relation doesn't exist; the response reports how many were deleted

  • read_graph

    • Read the entire knowledge graph

    • Optional input:

      • entityTypes (string[], at least one): return only entities of these types, and the relations that touch one of them

      • observationLimit (integer, 0 or more): see below

    • Returns complete graph structure with all entities and relations

    • With observationLimit, each entity carries at most that many observations (the first ones, in the order they were added) and an observationCount with its total. observationLimit: 0 returns names, types and counts only: a cheap overview of a large graph, from which open_nodes reads the entities you need in full

  • search_nodes

    • Search for nodes based on query

    • Input: query (string, at most 2048 characters; a longer query is rejected)

    • Searches across:

      • Entity names

      • Entity types

      • Observation content

    • Returns matching entities and their relations

    • Optional input:

      • limit (integer, 1 or more): return at most this many matches (the first, in stored order), with the relations that touch them

      • observationLimit (integer, 0 or more): as for read_graph

  • open_nodes

    • Retrieve specific nodes by name

    • Input: names (string[])

    • Returns:

      • Requested entities

      • Relations between requested entities

    • Silently skips non-existent nodes

    • Optional input: observationLimit (integer, 0 or more), as for read_graph

Resources
  • knowledge-graph (memory://knowledge-graph)

    • The full knowledge graph as a readable MCP Resource

    • MIME type: application/json

    • Returns the same shape as read_graph (entities and relations)

    • Mutation tools (create_entities, create_relations, add_observations, delete_entities, delete_observations, delete_relations) emit notifications/resources/updated for this URI, so subscribed clients see live changes

    • How a client subscribes depends on its protocol version: a 2026-07-28 client names the URI in the resourceSubscriptions of its subscriptions/listen request and gets the updates on that stream; a 2025-era client calls resources/subscribe

Protocol versions

The server serves both protocol eras on stdio from the same process. The client's first message picks the era of the connection: a 2026-07-28 client opens with server/discover and sends its protocol version, identity and capabilities with each request, and a 2025-era client opens with the initialize handshake. The tools and the resource are the same on both.

Requirements

Node.js 24 or later, when the server runs through npx or from source.

Usage with Claude Desktop

Setup

Add this to your claude_desktop_config.json:

Docker
{
  "mcpServers": {
    "memory": {
      "command": "docker",
      "args": ["run", "-i", "-v", "claude-memory:/app/dist", "--rm", "mcp/memory"]
    }
  }
}
NPX
{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-memory"
      ]
    }
  }
}

On Windows, use cmd /c to launch npx:

{
  "mcpServers": {
    "memory": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "@modelcontextprotocol/server-memory"
      ]
    }
  }
}
NPX with custom setting

The server can be configured using the following environment variables:

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-memory"
      ],
      "env": {
        "MEMORY_FILE_PATH": "/path/to/custom/memory.jsonl"
      }
    }
  }
}

On Windows, use:

{
  "mcpServers": {
    "memory": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "@modelcontextprotocol/server-memory"
      ],
      "env": {
        "MEMORY_FILE_PATH": "/path/to/custom/memory.jsonl"
      }
    }
  }
}
  • MEMORY_FILE_PATH: Path to the memory storage JSONL file (default: memory.jsonl in the server directory). A leading ~ expands to your home directory; a relative path resolves against the server directory. Set it to an absolute path you own; see Choosing where the graph is stored.

When MEMORY_FILE_PATH is not set and the server directory still holds a legacy memory.json but no memory.jsonl, the server renames memory.json to memory.jsonl at startup. If that rename fails, the server exits with an error naming both paths and the cause, rather than starting on an empty graph; fix the cause (a permission problem, say) and restart, or set MEMORY_FILE_PATH to choose a file explicitly.

Choosing where the graph is stored

Set MEMORY_FILE_PATH to an absolute path you own, such as ~/memory.jsonl, as in the configuration above. The default memory.jsonl sits in the server's own directory, next to its code. Under npx or an npm install, that directory is inside a node_modules tree, which npm manages as its own: reinstalling or updating the server, or clearing the npx cache, can delete the file and the knowledge graph in it. A relative MEMORY_FILE_PATH resolves against that same directory, so it has the same problem.

  • When the memory file it resolves is inside a node_modules directory, the server prints a warning on stderr at startup naming the file; most clients show a server's stderr in its log. Move the file to the new path when you set the variable, or the server starts on an empty graph.

  • The directory must already exist: the server creates the memory file, not the directories above it.

  • The default stays where it is so that existing graphs keep loading. The Docker setup above keeps it in a named volume mounted over /app/dist, so the graph there survives restarts and draws no warning.

Saves are atomic. Every write tool writes the whole graph to a temporary file in the same directory and renames it over the memory file, so a server stopped or killed mid-save leaves the previous graph intact rather than a half-written file. The file's permission bits are kept across the rename. Writes from several processes are serialized by a lock, described next.

Sharing one memory file between clients

Each MCP client starts its own server process, so two clients using the same MEMORY_FILE_PATH (or both using the default) are two processes writing one file. Every write tool takes an exclusive lock file, <memory file>.lock, next to the memory file while it reads, changes and saves the graph, so writes from different processes take turns and none is lost. The lock file exists only while a write is in progress, so the directory holding the memory file must be writable (it already must be, for the atomic save).

  • A lock left behind by a server that crashed mid-write is removed automatically: at once if its process is known to have exited on the same machine, otherwise once it has gone 30 seconds without being refreshed (a server holding the lock refreshes it every 15 seconds while it works). Only one waiting server breaks a stale lock at a time, guarded by a momentary <memory file>.lock.break file.

  • A write that cannot get the lock within 60 seconds fails with a tool error rather than overwriting the file.

  • The lock relies on exclusive file creation, which local filesystems provide; a network filesystem that does not honour it cannot be shared safely this way.

VS Code Installation Instructions

For quick installation, use one of the one-click installation buttons below:

Image: Install with NPX in VS Code Image: Install with NPX in VS Code Insiders

Image: Install with Docker in VS Code Image: Install with Docker in VS Code Insiders

For manual installation, you can configure the MCP server using one of these methods:

Method 1: User Configuration (Recommended) Add the configuration to your user-level MCP configuration file. Open the Command Palette (Ctrl + Shift + P) and run MCP: Open User Configuration. This will open your user mcp.json file where you can add the server configuration.

Method 2: Workspace Configuration Alternatively, you can add the configuration to a file called .vscode/mcp.json in your workspace. This will allow you to share the configuration with others.

For more details about MCP configuration in VS Code, see the official VS Code MCP documentation.

NPX
{
  "servers": {
    "memory": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-memory"
      ]
    }
  }
}

On Windows, use:

{
  "servers": {
    "memory": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "@modelcontextprotocol/server-memory"
      ]
    }
  }
}
Docker
{
  "servers": {
    "memory": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "-v",
        "claude-memory:/app/dist",
        "--rm",
        "mcp/memory"
      ]
    }
  }
}
System Prompt

The prompt for utilizing memory depends on the use case. Changing the prompt will help the model determine the frequency and types of memories created.

Here is an example prompt for chat personalization. You could use this prompt in the "Custom Instructions" field of a Claude.ai Project.

Follow these steps for each interaction:

1. User Identification:
   - You should assume that you are interacting with default_user
   - If you have not identified default_user, proactively try to do so.

2. Memory Retrieval:
   - Always begin your chat by saying only "Remembering..." and retrieve all relevant information from your knowledge graph
   - Always refer to your knowledge graph as your "memory"

3. Memory
   - While conversing with the user, be attentive to any new information that falls into these categories:
     a) Basic Identity (age, gender, location, job title, education level, etc.)
     b) Behaviors (interests, habits, etc.)
     c) Preferences (communication style, preferred language, etc.)
     d) Goals (goals, targets, aspirations, etc.)
     e) Relationships (personal and professional relationships up to 3 degrees of separation)

4. Memory Update:
   - If any new information was gathered during the interaction, update your memory as follows:
     a) Create entities for recurring organizations, people, and significant events
     b) Connect them to the current entities using relations
     c) Store facts about them as observations

Building

Docker:

docker build -t mcp/memory -f src/memory/Dockerfile . 
Upgrading a Docker install

The Docker setup mounts the named volume claude-memory over /app/dist, the image's code directory, so the volume holds the server's code (index.js, version.js) next to your memory.jsonl. Docker copies an image's files into a named volume only while the volume is empty. Once the volume holds your graph, a newer image never reaches it: the container keeps running the code from the image that first filled the volume, which may not even start against the newer image's dependencies. Deleting index.js from the volume does not help; it leaves /app/dist with no entry point.

To upgrade, build or pull the new mcp/memory image, quit the MCP clients that start it, then replace the code in the volume with the new image's, keeping memory.jsonl:

docker run --rm -v claude-memory:/volume --user root --entrypoint sh mcp/memory \
  -c 'rm -f /volume/*.js && cp /app/dist/*.js /volume/ && chown -R node:node /volume'

The volume is mounted at /volume rather than /app/dist, so the image's own /app/dist stays visible to copy from. Only the .js files are replaced; memory.jsonl (or a legacy memory.json) is left as it is. Repeat this after every image update.

The image runs the server as the unprivileged node user, not root, so it must own the volume to save the graph. A volume an older image created, which ran as root, is owned by root, and without the chown above the server fails to save with EACCES. That is why this step runs as --user root and ends by giving the volume to node.

Alternative: keep the graph in a volume of its own

Mounting a volume on a directory of its own and pointing MEMORY_FILE_PATH at it keeps the code out of the volume, so a new image takes effect with no copying step:

{
  "mcpServers": {
    "memory": {
      "command": "docker",
      "args": ["run", "-i", "-v", "claude-memory-data:/data", "-e", "MEMORY_FILE_PATH=/data/memory.jsonl", "--rm", "mcp/memory"]
    }
  }
}

To move an existing graph from the claude-memory volume into the new one, quit the MCP clients that start the server, then run:

docker run --rm -v claude-memory:/old -v claude-memory-data:/data \
  --entrypoint cp mcp/memory /old/memory.jsonl /data/memory.jsonl

If the old volume holds only a legacy memory.json, copy /old/memory.json to /data/memory.jsonl instead. Once the server has started on the new volume with your graph, you can remove the old volume with docker volume rm claude-memory.

License

This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

src/memory/LICENSE

Shown as plain text.

The MCP project is undergoing a licensing transition from the MIT License to the Apache License, Version 2.0 ("Apache-2.0"). All new code and specification contributions to the project are licensed under Apache-2.0. Documentation contributions (excluding specifications) are licensed under CC-BY-4.0.

Contributions for which relicensing consent has been obtained are licensed under Apache-2.0. Contributions made by authors who originally licensed their work under the MIT License and who have not yet granted explicit permission to relicense remain licensed under the MIT License.

No rights beyond those granted by the applicable original license are conveyed for such contributions.

---

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to the Licensor for inclusion in the Work by the copyright
      owner or by an individual or Legal Entity authorized to submit on behalf
      of the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

---

MIT License

Copyright (c) 2024-2025 Model Context Protocol a Series of LF Projects, LLC.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

---

Creative Commons Attribution 4.0 International (CC-BY-4.0)

Documentation in this project (excluding specifications) is licensed under
CC-BY-4.0. See https://creativecommons.org/licenses/by/4.0/legalcode for
the full license text.
30 files · 25 not served here

Advantages

Limitations

Security

Risk level: Medium risk

This brain runs

MCP servers (6)

  • src/memory/README.md (memory): docker run -i -v claude-memory:/app/dist --rm mcp/memory
  • src/memory/README.md (memory): npx -y @modelcontextprotocol/server-memory
  • src/memory/README.md (memory): cmd /c npx -y @modelcontextprotocol/server-memory
  • src/memory/README.md (memory): npx -y @modelcontextprotocol/server-memory
  • src/memory/README.md (memory): cmd /c npx -y @modelcontextprotocol/server-memory
  • src/memory/README.md (memory): docker run -i -v claude-memory-data:/data -e MEMORY_FILE_PATH=/data/memory.jsonl --rm mcp/memory

Package scripts (1)

  • src/memory/package.json (prepare): npm run build
  • Medium risk: runs-mcp-server-unpinned-runner (src/memory/README.md:178)
  • Medium risk: runs-mcp-server-unpinned-runner (src/memory/README.md:214)

Attribution and licence

Created by
Model Context Protocol
Declared authors
  • Model Context Protocol a Series of LF Projects, LLC. (declared in src/memory/package.json)
Publisher
Model Context Protocol (Official Model Context Protocol project)
Source
modelcontextprotocol/servers · src/memory · commit e1dc4b1
Licence
Apache License 2.0 (files served here)
  • src/memory/LICENSE (added by AutoGineer from LICENSE)
  • src/memory/ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Model Context Protocol.

Install from source

25 of its files are not served here, so there is no ZIP. modelcontextprotocol/servers at e1dc4b1