Neo4j MCP Server
Um serviço de consulta somente leitura para bancos de dados gráficos Neo4j.
Documentação
Documentação de Uso do Neo4j MCP Server
Introdução
O Neo4j MCP Server é um serviço de consulta somente leitura para o banco de dados Neo4j, construído com Spring AI e Model Context Protocol (MCP). Ele fornece aos assistentes de IA a capacidade de acessar com segurança o banco de dados de grafos Neo4j.
Início Rápido
1. Requisitos de Ambiente
- Java 21+
- Maven 3.6+
- Banco de dados Neo4j (local ou remoto)
2. Configurar Conexão com o Banco de Dados
Edite src/main/resources/application.properties:
# Neo4j 数据库连接配置
neo4j.uri=bolt://localhost:7687
neo4j.username=neo4j
neo4j.password=your_password
neo4j.database=neo4j
3. Iniciar o Servidor
# 编译和运行
./mvnw spring-boot:run
# 或者打包后运行(跳过测试)
./mvnw clean package -DskipTests
java -jar target/neo4jmcp-0.0.1-SNAPSHOT.jar
Após iniciar com sucesso, você verá:
INFO o.s.a.m.s.a.McpServerAutoConfiguration : Registered tools: 10
INFO com.hy.neo4jmcp.Neo4jmcpApplication : Started Neo4jmcpApplication
Ferramentas Disponíveis
Ferramentas de Consulta Principais
1. executeCypher
Executa consultas Cypher somente leitura
// 示例调用
executeCypher("MATCH (n:Person) RETURN n.name LIMIT 10", {})
2. getDatabaseInfo
Obtém informações completas do banco de dados (versão, estatísticas, esquema, etc.)
3. getNodeLabels
Obtém a lista de todos os rótulos de nós
4. getRelationshipTypes
Obtém a lista de todos os tipos de relacionamento
5. getPropertyKeys
Obtém a lista de todas as chaves de propriedade
Ferramentas de Consulta de Esquema
6. getSchemaInfo
Obtém informações sobre restrições e índices do banco de dados
7. findNodesByLabel
Encontra nós por rótulo, com suporte a filtro de propriedades
// 示例:查找特定属性的Person节点
findNodesByLabel("Person", {"age": 25}, 50)
Ferramentas de Travessia de Grafo
8. getRelationshipsBetweenNodes
Obtém os relacionamentos entre dois nós
// 示例:查找节点123和456之间的KNOWS关系
getRelationshipsBetweenNodes(123, 456, "KNOWS")
9. getNodeNeighborhood
Obtém a vizinhança de um nó (nós conectados)
// 示例:获取节点123的2层邻居,最多返回100个
getNodeNeighborhood(123, 2, 100)
10. searchNodesByText
Pesquisa texto nas propriedades dos nós
// 示例:在Person节点中搜索包含"John"的属性
searchNodesByText("John", "Person", 50)
Conexão com Cliente MCP
Conexão no Modo STDIO
Este servidor habilita o modo de transporte STDIO por padrão e pode ser conectado diretamente por clientes MCP:
{
"mcpServers": {
"neo4j": {
"command": "java",
"args": ["-jar", "/path/to/neo4jmcp-0.0.1-SNAPSHOT.jar"]
}
}
}
Integração com Claude Desktop
Adicione no arquivo de configuração do Claude Desktop:
{
"mcpServers": {
"neo4j-server": {
"command": "java",
"args": [
"-jar",
"/Users/carl/IdeaProjects/neo4jmcp/target/neo4jmcp-0.0.1-SNAPSHOT.jar"
]
}
}
}
Recursos de Segurança
Proteção Somente Leitura
- ✅ Apenas operações de leitura como
MATCH,RETURN,WITH,OPTIONAL MATCH,UNWINDsão permitidas - ❌ Operações de escrita como
CREATE,MERGE,DELETE,SET,DROPsão proibidas - ✅ Alguns comandos
SHOWsão permitidos (CONSTRAINTS, INDEXES, PROCEDURES, FUNCTIONS)
Limitações de Consulta
- Número máximo de registros retornados por consulta: 1000
- Tempo limite de consulta: 30 segundos
- Número máximo de conexões no pool: 50
Parâmetros de Configuração
Configuração do Servidor MCP
spring.ai.mcp.server.enabled=true
spring.ai.mcp.server.name=neo4j-mcp-server
spring.ai.mcp.server.type=ASYNC
spring.ai.mcp.server.stdio=true
Configuração de Conexão Neo4j
neo4j.uri=bolt://localhost:7687
neo4j.username=neo4j
neo4j.password=your_password
neo4j.database=neo4j
neo4j.max-connection-pool-size=50
neo4j.connection-acquisition-timeout=60s
neo4j.connection-timeout=5s
neo4j.max-transaction-retry-time=15s
neo4j.max-query-execution-time=30s
neo4j.max-result-records=1000
Solução de Problemas
Perguntas Frequentes
-
Falha de conexão
- Verifique se o serviço Neo4j está em execução
- Valide os parâmetros de conexão (URI, nome de usuário, senha)
- Confirme as configurações do firewall
-
Ferramenta não registrada
- Verifique as informações de "Registered tools" no log de inicialização
- Confirme se a configuração automática do Spring AI está funcionando corretamente
-
Consulta rejeitada
- Confirme se a consulta é uma operação somente leitura
- Verifique se a sintaxe Cypher está correta
Ajuste do Nível de Log
logging.level.com.hy.neo4jmcp=DEBUG
logging.level.org.springframework.ai.mcp=DEBUG
Exemplos de Uso
Exploração Básica de Grafo
-- 查看数据库概览
MATCH (n) RETURN labels(n), count(n)
-- 探索节点关系
MATCH (n)-[r]->(m)
RETURN type(r), count(r)
ORDER BY count(r) DESC
-- 查找高度连接的节点
MATCH (n)-[r]-()
RETURN n, count(r) as degree
ORDER BY degree DESC LIMIT 10
Análise de Esquema
-- 查看所有标签
CALL db.labels()
-- 查看所有关系类型
CALL db.relationshipTypes()
-- 查看属性键
CALL db.propertyKeys()
Desenvolvimento e Extensão
Consulte o Java_MCP_Server_Development_Guide.md no diretório raiz do projeto para obter um guia detalhado de desenvolvimento e melhores práticas.
Suporte Técnico
- Verifique os logs do console para obter informações detalhadas de erro
- Verifique o status da conexão com o banco de dados Neo4j
- Valide se a configuração do cliente MCP está correta