mcp-name: io.github.neo4j-contrib/mcp-neo4j-memory
这是一个通过集成 Neo4j 图数据库实现持久化内存能力的 Model Context Protocol (MCP) 服务器。
通过在图结构中存储信息,该服务器能够维护实体之间的复杂关系作为记忆节点,并支持长期保留知识,这些知识可以在多个对话或会话之间进行查询和分析。
使用 Neo4j Aura,您可以免费托管自己的数据库服务器,或者与您的合作者共享。否则,您也可以在本地运行自己的 Neo4j 服务器。
MCP 服务器利用 Neo4j 的图数据库功能创建一个相互连接的知识库,作为外部记忆系统。通过 Cypher 查询,它允许探索和检索存储的信息,分析不同数据点之间的关系,并从积累的知识中生成见解。这种记忆可以通过增强 Claude 的功能来进一步提升。
Memory - 表示具有名称、类型和观察结果的实体的节点。Relationship - 两个实体之间的关系及其类型。让我们添加一些记忆
我,Michael,在德国德累斯顿工作,我的同事Andreas(英国剑桥)和Oskar(瑞典哥德堡)一起在总部位于瑞典的Neo4j公司工作。
我在产品管理部工作,Oskar在工程部门,Andreas在开发者关系部门。
结果是 Claude 调用 create_entities 和 create_relations 工具。


服务器提供以下核心工具:
read_graph
search_nodes
query (字符串):匹配名称、类型、观察结果的搜索查询find_nodes
names (字符串数组):要检索的实体名称create_entities
entities:对象数组,包含:
name (字符串):实体名称type (字符串):实体类型observations (字符串数组):关于实体的初始观察结果delete_entities
entityNames (字符串数组):要删除的实体名称create_relations
relations:对象数组,包含:
source (字符串):源实体名称target (字符串):目标实体名称relationType (字符串):关系类型delete_relations
relations:对象数组,与 create_relations 的模式相同add_observations
observations:对象数组,包含:
entityName (字符串):要添加到的实体contents (字符串数组):要添加的观察结果delete_observations
deletions:对象数组,包含:
entityName (字符串):要从中删除的实体observations (字符串数组):要移除的观察结果pip install mcp-neo4j-memory
在您的 claude_desktop_config.json 中添加服务器配置:
"mcpServers": {
"neo4j": {
"command": "uvx",
"args": [
"mcp-neo4j-memory@0.4.2",
"--db-url",
"neo4j+s://xxxx.databases.neo4j.io",
"--username",
"<your-username>",
"--password",
"<your-password>"
]
}
}
或者,您可以设置环境变量:
"mcpServers": {
"neo4j": {
"command": "uvx",
"args": [ "mcp-neo4j-memory@0.4.2" ],
"env": {
"NEO4J_URL": "neo4j+s://xxxx.databases.neo4j.io",
"NEO4J_USERNAME": "<your-username>",
"NEO4J_PASSWORD": "<your-password>"
}
}
}
对于多租户部署,添加 --namespace 来前缀工具名称:
"args": [ "mcp-neo4j-memory@0.4.2", "--namespace", "myapp", "--db-url", "..." ]
工具变为:myapp-read_graph,myapp-create_entities 等。
也可以使用 NEO4J_NAMESPACE 环境变量。
服务器支持 HTTP 传输以适应基于 Web 的部署和微服务:
# 基本 HTTP 模式(默认:host=127.0.0.1,port=8000,path=/mcp/)
mcp-neo4j-memory --transport http
# 自定义 HTTP 配置
mcp-neo4j-memory --transport http --host 127.0.0.1 --port 8080 --path /api/mcp/
用于 HTTP 配置的环境变量:
export NEO4J_TRANSPORT=http
export NEO4J_MCP_SERVER_HOST=127.0.0.1
export NEO4J_MCP_SERVER_PORT=8080
export NEO4J_MCP_SERVER_PATH=/api/mcp/
export NEO4J_NAMESPACE=myapp
mcp-neo4j-memory
服务器支持三种传输模式:
"mcpServers": {
"neo4j": {
"command": "docker",
"args": [
"run",
"--rm",
"-e", "NEO4J_URL=neo4j+s://xxxx.databases.neo4j.io",
"-e", "NEO4J_USERNAME=<your-username>",
"-e", "NEO4J_PASSWORD=<your-password>",
"mcp/neo4j-memory:0.4.2"
]
}
}
服务器包括全面的安全保护措施,具有安全默认值,可以防止常见的基于 Web 的攻击,同时在使用 HTTP 传输时保留完整的 MCP 功能。
TrustedHost 中间件验证 Host 头以防止 DNS 重绑定攻击:
默认安全:
localhost 和 127.0.0.1 主机环境变量:
export NEO4J_MCP_SERVER_ALLOWED_HOSTS="example.com,www.example.com"
跨源资源共享 (CORS) 保护默认阻止浏览器发起的请求:
环境变量:
export NEO4J_MCP_SERVER_ALLOW_ORIGINS="https://example.com,https://app.example.com"
开发设置:
mcp-neo4j-memory --transport http \
--allowed-hosts "localhost,127.0.0.1" \
--allow-origins "http://localhost:3000"
生产设置:
mcp-neo4j-memory --transport http \
--allowed-hosts "example.com,www.example.com" \
--allow-origins "https://example.com,https://app.example.com"
对于 allow_origins:
["https://example.com", "https://example.com"]"*"对于 allowed_hosts:
["example.com", "www.example.com"]"*"Neo4j 记忆 MCP 服务器可以使用 Docker 进行远程部署。Docker 部署应使用 HTTP 传输以确保 Web 可访问性。为了将此部署与 Claude Desktop 等应用程序集成,您需要在 MCP 配置中使用代理,如 mcp-remote。
在本地构建后使用 docker build -t mcp-neo4j-memory:latest .:
# 使用 http 传输运行(Docker 默认)
docker run --rm -p 8000:8000 \
-e NEO4J_URI="bolt://host.docker.internal:7687" \
-e NEO4J_USERNAME="neo4j" \
-e NEO4J_PASSWORD="password" \
-e NEO4J_DATABASE="neo4j" \
-e NEO4J_TRANSPORT="http" \
-e NEO4J_MCP_SERVER_HOST="0.0.0.0" \
-e NEO4J_MCP_SERVER_PORT="8000" \
-e NEO4J_MCP_SERVER_PATH="/mcp/" \
mcp/neo4j-memory:latest
# 使用生产中间件运行
docker run --rm -p 8000:8000 \
-e NEO4J_URI="bolt://host.docker.internal:7687" \
-e NEO4J_USERNAME="neo4j" \
-e NEO4J_PASSWORD="password" \
-e NEO4J_DATABASE="neo4j" \
-e NEO4J_TRANSPORT="http" \
-e NEO4J_MCP_SERVER_HOST="0.0.0.0" \
-e NEO4J_MCP_SERVER_PORT="8000" \
-e NEO4J_MCP_SERVER_PATH="/mcp/" \
-e NEO4J_MCP_SERVER_ALLOWED_HOSTS="example.com,www.example.com" \
-e NEO4J_MCP_SERVER_ALLOW_ORIGINS="https://example.com" \
mcp/neo4j-memory:latest
| 变量 | 默认值 | 描述 |
|---|---|---|
NEO4J_URI | bolt://localhost:7687 | Neo4j 连接 URI |
NEO4J_USERNAME | neo4j | Neo4j 用户名 |
NEO4J_PASSWORD | password | Neo4j 密码 |
NEO4J_DATABASE | neo4j | Neo4j 数据库名称 |
NEO4J_TRANSPORT | stdio (本地), http (远程) | 传输协议 (stdio, http, 或 sse) |
NEO4J_MCP_SERVER_HOST | 127.0.0.1 (本地) | 绑定的主机 |
NEO4J_MCP_SERVER_PORT | 8000 | HTTP/SSE 传输端口 |
NEO4J_MCP_SERVER_PATH | /mcp/ | 访问 MCP 服务器的路径 |
NEO4J_MCP_SERVER_ALLOW_ORIGINS | (空,默认安全) | 允许的 CORS 源列表(逗号分隔) |
NEO4J_MCP_SERVER_ALLOWED_HOSTS | localhost,127.0.0.1 | 允许的主机列表(DNS 重绑定保护) |
NEO4J_NAMESPACE | (空,无前缀) | 工具名称的命名空间前缀(例如,myapp-read_graph) |
当使用 SSE 传输(针对旧版 Web 客户端)时,服务器暴露一个 HTTP 端点:
# 使用 SSE 传输启动服务器
docker run -d -p 8000:8000 \
-e NEO4J_URI="neo4j+s://demo.neo4jlabs.com" \
-e NEO4J_USERNAME="recommendations" \
-e NEO4J_PASSWORD="recommendations" \
-e NEO4J_DATABASE="neo4j" \
-e NEO4J_TRANSPORT="sse" \
-e NEO4J_MCP_SERVER_HOST="0.0.0.0" \
-e NEO4J_MCP_SERVER_PORT="8000" \
--name neo4j-memory-mcp-server \
mcp-neo4j-memory:latest
# 测试 SSE 端点
curl http://localhost:8000/sse
# 使用 MCP Inspector
npx @modelcontextprotocol/inspector http://localhost:8000/sse
uv(通用虚拟环境):# 使用 pip
pip install uv
# 使用 macOS 上的 Homebrew
brew install uv
# 使用 cargo(Rust 包管理器)
cargo install uv
# 克隆仓库
git clone https://github.com/yourusername/mcp-neo4j-memory.git
cd mcp-neo4j-memory
# 使用 uv 创建并激活虚拟环境
uv venv
source .venv/bin/activate # 在 Unix/macOS 上
.venv\Scripts\activate # 在 Windows 上
# 安装依赖项,包括开发依赖项
uv pip install -e ".[dev]"
构建并运行 Docker 容器:
# 构建镜像
docker build -t mcp/neo4j-memory:latest .
# 运行容器
docker run -e NEO4J_URL="neo4j+s://xxxx.databases.neo4j.io" \
-e NEO4J_USERNAME="your-username" \
-e NEO4J_PASSWORD="your-password" \
mcp/neo4j-memory:latest
此 MCP 服务器根据 MIT 许可证发布。这意味着您可以在遵守 MIT 许可证条款和条件的情况下自由使用、修改和分发软件。更多详细信息,请参阅项目仓库中的 LICENSE 文件。