1
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# MCP Server API
2
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Navegador exposes all context-loading commands as an MCP server. The server is created with `create_mcp_server()` and speaks the [Model Context Protocol](https://modelcontextprotocol.io) over stdio.
4
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
5
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
6
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
from navegador.mcp import create_mcp_server
7
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
8
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
9
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
10
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
11
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## create_mcp_server
12
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
13
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
14
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
def create_mcp_server(
15
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
store: GraphStore | None = None,
16
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
db_path: str = "",
17
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
read_only: bool = False,
18
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
max_query_complexity: int = 0,
19
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
) -> MCPServer: ...
20
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
21
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
22
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Creates and returns an MCP server instance. If `store` is not provided, opens a `GraphStore.sqlite()` at `db_path` (or `NAVEGADOR_DB` env var, or `./navegador.db`).
23
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
24
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `read_only`: when `True`, disables the `ingest` tool and restricts the `query` tool to `MATCH`/`RETURN` only. Corresponds to `navegador mcp --read-only`.
25
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- `max_query_complexity`: if non-zero, rejects Cypher queries whose estimated complexity exceeds this value. Prevents runaway traversals in multi-agent environments.
26
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
27
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The CLI command `navegador mcp [--db path] [--read-only]` calls this function and runs the server loop.
28
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
29
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Usage
30
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
31
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
32
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
from navegador.graph import GraphStore
33
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
from navegador.mcp import create_mcp_server
34
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
35
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
store = GraphStore.sqlite(".navegador/navegador.db")
36
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
server = create_mcp_server(store=store)
37
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
server.run() # blocks; serves over stdio
38
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
39
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
40
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
To embed in a larger MCP server:
41
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
42
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
43
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
server = create_mcp_server(db_path=".navegador/navegador.db")
44
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# register additional tools on server before running
45
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
server.run()
46
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
47
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
48
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
49
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
50
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Available MCP tools
51
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
52
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
All tools accept JSON input and return JSON output. There are 11 tools in total.
53
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
54
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
55
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
56
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### `ingest`
57
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
58
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Ingest a repository or file into the graph.
59
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
60
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Input schema:**
61
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```json
62
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{
63
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "object",
64
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"properties": {
65
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"path": {
66
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "string",
67
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Path to the repo or file to ingest"
68
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
69
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"clear": {
70
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "boolean",
71
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Wipe the graph before ingesting",
72
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"default": false
73
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
74
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
75
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"required": ["path"]
76
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
77
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
78
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
79
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Output:** `IngestionResult` serialized to JSON.
80
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
81
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
82
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
83
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### `context`
84
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
85
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Return the full context bundle for a source file.
86
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
87
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Input schema:**
88
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```json
89
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{
90
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "object",
91
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"properties": {
92
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"file": {
93
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "string",
94
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Path to the source file"
95
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
96
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"format": {
97
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "string",
98
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"enum": ["json", "markdown"],
99
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"default": "json"
100
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
101
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
102
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"required": ["file"]
103
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
104
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
105
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
106
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Output:** `ContextBundle` as JSON or markdown string.
107
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
108
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
109
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
110
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### `function`
111
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
112
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Return a function's context bundle including callers, callees, and decorators.
113
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
114
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Input schema:**
115
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```json
116
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{
117
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "object",
118
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"properties": {
119
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"name": {
120
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "string",
121
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Function name"
122
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
123
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"file": {
124
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "string",
125
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Optional file path to disambiguate"
126
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
127
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"depth": {
128
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "integer",
129
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Call graph traversal depth",
130
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"default": 1
131
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
132
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
133
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"required": ["name"]
134
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
135
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
136
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
137
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Output:** `ContextBundle` as JSON.
138
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
139
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
140
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
141
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### `class`
142
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
143
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Return a class context bundle including hierarchy, methods, and references.
144
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
145
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Input schema:**
146
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```json
147
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{
148
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "object",
149
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"properties": {
150
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"name": {
151
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "string",
152
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Class name"
153
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
154
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"file": {
155
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "string",
156
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Optional file path to disambiguate"
157
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
158
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
159
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"required": ["name"]
160
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
161
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
162
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
163
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Output:** `ContextBundle` as JSON.
164
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
165
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
166
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
167
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### `explain`
168
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
169
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Universal lookup: explain any node (function, class, file, concept, rule, decision) by name.
170
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
171
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Input schema:**
172
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```json
173
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{
174
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "object",
175
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"properties": {
176
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"name": {
177
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "string",
178
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Node name to explain"
179
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
180
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"file": {
181
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "string",
182
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Optional file path to disambiguate code nodes"
183
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
184
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
185
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"required": ["name"]
186
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
187
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
188
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
189
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Output:** `ContextBundle` as JSON.
190
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
191
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
192
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
193
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### `search`
194
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
195
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Search the graph by text query.
196
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
197
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Input schema:**
198
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```json
199
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{
200
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "object",
201
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"properties": {
202
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"query": {
203
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "string",
204
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Search query"
205
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
206
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"all": {
207
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "boolean",
208
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Search all layers including knowledge layer",
209
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"default": false
210
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
211
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"docs": {
212
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "boolean",
213
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Search docstrings and wiki content only",
214
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"default": false
215
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
216
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"limit": {
217
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "integer",
218
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Maximum results to return",
219
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"default": 20
220
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
221
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
222
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"required": ["query"]
223
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
224
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
225
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
226
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Output:** Array of `ContextNode` objects as JSON.
227
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
228
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
229
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
230
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### `query`
231
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
232
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Execute a raw Cypher query against the graph.
233
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
234
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Input schema:**
235
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```json
236
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{
237
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "object",
238
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"properties": {
239
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"cypher": {
240
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "string",
241
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Cypher query string"
242
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
243
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"params": {
244
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "object",
245
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Optional query parameters",
246
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"default": {}
247
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
248
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
249
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"required": ["cypher"]
250
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
251
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
252
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
253
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Output:** Array of result rows as JSON.
254
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
255
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
!!! warning
256
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
This tool executes writes as well as reads. Agents should use read-only queries (`MATCH` / `RETURN`) unless explicitly performing graph updates. Use `--read-only` mode or `read_only=True` in `create_mcp_server()` to enforce this at the server level.
257
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
258
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
259
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
260
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### `get_rationale`
261
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
262
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Return the rationale, decisions, and rules that govern a named code node.
263
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
264
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Input schema:**
265
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```json
266
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{
267
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "object",
268
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"properties": {
269
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"name": {
270
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "string",
271
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Function, class, or file name"
272
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
273
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"file": {
274
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "string",
275
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Optional file path to disambiguate"
276
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
277
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
278
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"required": ["name"]
279
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
280
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
281
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
282
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Output:** Array of `Decision` and `Rule` nodes with `rationale` fields, as JSON.
283
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
284
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
285
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
286
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### `find_owners`
287
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
288
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Return the people and domains that own a code node, based on CODEOWNERS, annotation, and domain membership.
289
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
290
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Input schema:**
291
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```json
292
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{
293
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "object",
294
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"properties": {
295
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"name": {
296
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "string",
297
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Function, class, or file name"
298
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
299
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"file": {
300
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "string",
301
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Optional file path"
302
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
303
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
304
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"required": ["name"]
305
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
306
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
307
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
308
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Output:** Array of `Person` and `Domain` nodes as JSON.
309
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
310
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
311
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
312
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### `search_knowledge`
313
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
314
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Search the knowledge layer only (concepts, rules, decisions, wiki pages, domains).
315
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
316
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Input schema:**
317
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```json
318
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{
319
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "object",
320
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"properties": {
321
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"query": {
322
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "string",
323
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Search query"
324
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
325
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"limit": {
326
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "integer",
327
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Maximum results to return",
328
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"default": 20
329
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
330
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
331
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"required": ["query"]
332
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
333
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
334
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
335
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Output:** Array of knowledge layer `ContextNode` objects as JSON.
336
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
337
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
338
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
339
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### `blast_radius`
340
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
341
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Return all code nodes transitively reachable from a given node via CALLS, IMPORTS, and INHERITS edges — the set of things that could break if this node changes.
342
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
343
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Input schema:**
344
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```json
345
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
{
346
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "object",
347
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"properties": {
348
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"name": {
349
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "string",
350
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Starting node name"
351
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
352
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"file": {
353
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "string",
354
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Optional file path to disambiguate"
355
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
356
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"depth": {
357
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"type": "integer",
358
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"description": "Maximum traversal depth",
359
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"default": 3
360
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
361
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
},
362
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
"required": ["name"]
363
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
}
364
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
365
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
366
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Output:** Array of `ContextNode` objects ordered by distance from the starting node.
367
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
368
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
369
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
370
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Security
371
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
372
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Read-only mode
373
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
374
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Start the server in read-only mode to prevent agents from modifying the graph:
375
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
376
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
377
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
navegador mcp --read-only
378
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
379
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
380
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
In read-only mode:
381
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- The `ingest` tool is disabled (returns an error if called)
382
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- The `query` tool validates that queries contain only `MATCH`, `RETURN`, `WITH`, `WHERE`, `ORDER BY`, `LIMIT`, and `SKIP` clauses
383
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Write Cypher keywords (`CREATE`, `MERGE`, `SET`, `DELETE`, `DETACH`) are rejected
384
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
385
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Query complexity limits
386
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
387
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Set a maximum query complexity to prevent runaway traversals:
388
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
389
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```bash
390
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
navegador mcp --max-query-complexity 100
391
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
392
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
393
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Or in `.navegador/config.toml`:
394
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
395
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```toml
396
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[mcp]
397
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
max_query_complexity = 100
398
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
399
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
400
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Queries that exceed the complexity threshold return an error rather than executing.
401
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!