🧠🕸️ Neo4j知识图内存MCP服务器
mcp名称:io.github.neo4j-contrib/mcp-neo4j-memory
🌟 概述
一种模型上下文协议(MCP)服务器实现,通过Neo4j图形数据库集成提供持久内存功能。
通过将信息存储在图形结构中,该服务器将实体之间的复杂关系作为内存节点进行维护,并能够长期保留可以在多个对话或会话中查询和分析的知识。
随着 Neo4j光环 您可以免费托管自己的数据库服务器,也可以与合作者共享。否则,您可以在本地运行自己的Neo4j服务器。
MCP服务器利用Neo4j的图形数据库功能创建了一个作为外部存储系统的互连知识库。通过Cypher查询,它允许探索和检索存储的信息,分析不同数据点之间的关系,并从积累的知识中生成见解。克劳德的能力可以进一步增强这种记忆。
🕸️ 图形架构
Memory-用名称、类型和观察值表示实体的节点。Relationship-具有类型的两个实体之间的关系。
🔍 用法示例
Let's add some memories
I, Michael, living in Dresden, Germany work at Neo4j which is headquartered in Sweden with my colleagues Andreas (Cambridge, UK) and Oskar (Gothenburg, Sweden)
I work in Product Management, Oskar in Engineering and Andreas in Developer Relations.结果Claude调用了create_entities和create_relations工具。


📦 组件
🔧 工具
服务器提供以下核心工具:
🔎 查询工具
read_graph
- 阅读整个知识图谱 - 无需输入 - 返回:包含实体和关系的完整图
search_nodes
- 基于查询搜索节点 - 输入: - query (string):搜索与名称、类型、观察结果匹配的查询 - 返回:匹配子图
find_nodes
- 按名称查找特定节点 - 输入: - names (字符串数组):要检索的实体名称 - 返回:具有指定节点的子图
♟️ 实体管理工具
create_entities
- 在知识图中创建多个新实体 - 输入: - entities:对象数组,包含: - name (string):实体名称 - type (string):实体的类型 - observations (字符串数组):对实体的初步观察 - 返回:已创建实体
delete_entities
- 删除多个实体及其关联关系 - 输入: - entityNames (字符串数组):要删除的实体名称 - 返回:成功确认
🔗 关系管理工具
create_relations
- 在实体之间创建多个新关系 - 输入: - relations:对象数组,包含: - source (string):源实体的名称 - target (string):目标实体的名称 - relationType (string):关系类型 - 返回:已创建关系
delete_relations
- 从图中删除多个关系 - 输入: - relations:与create_relations具有相同架构的对象数组 - 返回:成功确认
📝 观测管理工具
add_observations
- 向现有实体添加新的观察结果 - 输入: - observations:对象数组,包含: - entityName (string):要添加的实体 - contents (字符串数组):要添加的观察值 - 返回:添加了观察详细信息
delete_observations
- 从实体中删除具体观察结果 - 输入: - deletions:对象数组,包含: - entityName (string):要从中删除的实体 - observations (字符串数组):要删除的观察值 - 返回:成功确认
🔧 使用Claude Desktop
💾 安装
pip install mcp-neo4j-memory⚙️ 配置
将服务器添加到您的 claude_desktop_config.json 配置如下:
"mcpServers": {
"neo4j": {
"command": "uvx",
"args": [
"mcp-neo4j-memory@0.4.5",
"--db-url",
"neo4j+s://xxxx.databases.neo4j.io",
"--username",
"",
"--password",
""
]
}
}或者,您可以设置环境变量:
"mcpServers": {
"neo4j": {
"command": "uvx",
"args": [ "mcp-neo4j-memory@0.4.5" ],
"env": {
"NEO4J_URL": "neo4j+s://xxxx.databases.neo4j.io",
"NEO4J_USERNAME": "",
"NEO4J_PASSWORD": ""
}
}
}命名空间
对于多租户部署,请添加 --namespace 在工具名称前添加前缀:
"args": [ "mcp-neo4j-memory@0.4.5", "--namespace", "myapp", "--db-url", "..." ]工具变成: myapp-read_graph, myapp-create_entities等等。
也可以使用 NEO4J_NAMESPACE 环境变量。
🌐 HTTP传输模式
服务器支持基于web的部署和微服务的HTTP传输:
# Basic HTTP mode (defaults: host=127.0.0.1, port=8000, path=/mcp/)
mcp-neo4j-memory --transport http
# Custom HTTP configuration
mcp-neo4j-memory --transport http --host 127.0.0.1 --port 8080 --path /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=/mcp/
export NEO4J_NAMESPACE=myapp
mcp-neo4j-memory🔄 运输方式
服务器支持三种传输模式:
- 工作室 (默认):本地工具和Claude Desktop的标准输入/输出
- 上海证券交易所:基于web的部署的服务器发送事件
- 超文本传输协议:适用于现代web部署和微服务的流式HTTP
🐳 使用Docker
"mcpServers": {
"neo4j": {
"command": "docker",
"args": [
"run",
"--rm",
"-e", "NEO4J_URL=neo4j+s://xxxx.databases.neo4j.io",
"-e", "NEO4J_USERNAME=",
"-e", "NEO4J_PASSWORD=",
"mcp/neo4j-memory:0.4.5"
]
}
}🔒 安全保护
服务器包括全面的安全保护 安全默认值 在使用HTTP传输时,可以防止常见的基于网络的攻击,同时保留完整的MCP功能。
🛡️ DNS重新绑定保护
可信主机中间件 验证主机标头以防止DNS重新绑定攻击:
默认安全:
- 仅
localhost和127.0.0.1默认情况下允许主机
环境变量:
export NEO4J_MCP_SERVER_ALLOWED_HOSTS="example.com,www.example.com"🌐 CORS保护
跨源资源共享(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"] - 从不使用
"*"在生产中持有证书 - 在生产中使用HTTPS源
对于 allowed_hosts:
- 包括您的实际域名:
["example.com", "www.example.com"] - 仅包括用于开发的localhost
- 从不使用
"*"除非你了解风险
🐳 Docker部署
Neo4j内存MCP服务器可以使用Docker进行远程部署。Docker部署应该使用HTTP传输来实现web可访问性。为了将此部署与Claude Desktop等应用程序集成,您必须在MCP配置中使用代理,例如 mcp-remote.
📦 使用您的内置图像
在当地建造后 docker build -t mcp-neo4j-memory:latest .:
# Run with http transport (default for 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
# Run with security middleware for production
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) |
🌐 传统Web访问的SSE传输
当使用SSE传输(用于传统web客户端)时,服务器会公开一个HTTP端点:
# Start the server with SSE transport
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
# Test the SSE endpoint
curl http://localhost:8000/sse
# Use with MCP Inspector
npx @modelcontextprotocol/inspector http://localhost:8000/sse🚀 发展
📦 先决条件
- 安装
uv(通用虚拟环境):
# Using pip
pip install uv
# Using Homebrew on macOS
brew install uv
# Using cargo (Rust package manager)
cargo install uv- 克隆存储库并设置开发环境:
# Clone the repository
git clone https://github.com/yourusername/mcp-neo4j-memory.git
cd mcp-neo4j-memory
# Create and activate virtual environment using uv
uv venv
source .venv/bin/activate # On Unix/macOS
.venv\Scripts\activate # On Windows
# Install dependencies including dev dependencies
uv pip install -e ".[dev]"🐳 码头工人
构建并运行Docker容器:
# Build the image
docker build -t mcp/neo4j-memory:latest .
# Run the container
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文件。
