使用说明
🧠🕸️ 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",
"<your-username>",
"--password",
"<your-password>"
]
}
}
或者,您可以设置环境变量:
"mcpServers": {
"neo4j": {
"command": "uvx",
"args": [ "mcp-neo4j-memory@0.4.5" ],
"env": {
"NEO4J_URL": "neo4j+s://xxxx.databases.neo4j.io",
"NEO4J_USERNAME": "<your-username>",
"NEO4J_PASSWORD": "<your-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=<your-username>",
"-e", "NEO4J_PASSWORD=<your-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文件。