You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/CHANGELOG.md
+7-1Lines changed: 7 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,10 +4,15 @@ All notable changes to Palinode. Format follows [Keep a Changelog](https://keepa
4
4
5
5
## Unreleased
6
6
7
-
## [0.8.5] — 2026-04-28
7
+
## [0.8.6] — 2026-04-29
8
8
9
9
### Added
10
10
11
+
-`pyproject.toml` bumped to **v0.8.6** and `[tool.setuptools] packages` list corrected: `palinode.diagnostics`, `palinode.diagnostics.checks`, `palinode.import_`, and `palinode.lint` were missing and would have been silently omitted from the wheel. All declared packages now match on-disk layout.
12
+
-`palinode mcp-config --diagnose` now covers **Roo Cline** (`rooveterinaryinc.roo-cline`) in addition to the original Cline extension. Roo Cline uses a different extension ID and settings filename (`mcp_settings.json` instead of `cline_mcp_settings.json`).
-`docs/MCP-INSTALL-RECIPES.md` — transport quick reference expanded into a "which transport?" decision block with use-when guidance.
15
+
-`docs/MCP-CONFIG-HOMES.md` — JetBrains section added (UI-first, version-specific path caveat) and Roo Cline paths added. Closes public #24.
11
16
-`tests/integration/test_mcp_e2e.py` — E2E test suite for the MCP client flow: exercises every major MCP tool (search, save, session_end, status, read, history, doctor, list) via in-process FastAPI dispatch with no Ollama required (#122).
12
17
-`tests/integration/test_security.py` — Security test suite covering OWASP top-10: path traversal, null bytes, symlink escape, SQL injection, SSRF, CORS enforcement, rate limiting, request size limit, no stack traces, YAML injection, CRLF header injection, and XSS/script injection (#123).
13
18
-`palinode_cluster_neighbors` / `palinode cluster-neighbors` / `POST /cluster-neighbors` — given a memory file path, returns the top-K semantically related files that are NOT already wikilinked to or from it; surfaces implicit relationships for the LLM to propose new cross-links (#235).
@@ -42,6 +47,7 @@ All notable changes to Palinode. Format follows [Keep a Changelog](https://keepa
42
47
43
48
### Fixed
44
49
50
+
-`palinode init` HOOK_SCRIPT (the scaffolded SessionEnd hook) now uses `jq -s` slurp extraction for both MSG_COUNT and FIRST_PROMPT, eliminating the SIGPIPE class entirely. #257 fixed the same bug pattern in `examples/hooks/palinode-session-end.sh` but the scaffolded version in `palinode/cli/init.py` was missed; #267 closes that gap so `palinode init` produces a non-buggy hook on fresh installs.
45
51
- Default `audit.log_path` is now resolved to an absolute path under `memory_dir` at config load time, eliminating the spurious `audit_log_writable` doctor warning on every fresh install (#254).
46
52
-`mcp_config_homes` doctor check no longer reports a misleading "run \`palinode init\`" message when palinode is running over SSH stdio — detects `SSH_CONNECTION` and returns an informational result explaining the remote context (#255).
47
53
-`0.0.0.0` binding warning is now suppressed when `PALINODE_API_BIND_INTENT=public` is set, allowing intentional network-exposed deployments (e.g., Tailscale) to start quietly. The systemd API service template sets this by default (#253).
Copy file name to clipboardExpand all lines: docs/MCP-CONFIG-HOMES.md
+27Lines changed: 27 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -82,6 +82,16 @@ JSON shape: `{ "mcpServers": { "palinode": { ... } } }` — same as Claude Deskt
82
82
| Linux |`~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`|
83
83
| Windows |`%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json`|
84
84
85
+
### Roo Cline (VS Code extension — fork of Cline)
86
+
87
+
Roo Cline uses a different extension ID (`rooveterinaryinc.roo-cline`) and a different settings filename (`mcp_settings.json`). Same JSON shape as Cline.
@@ -15,18 +15,29 @@ reports which ones contain a `palinode` entry. See
15
15
16
16
---
17
17
18
-
## Transport quick reference
18
+
## Which transport should I use?
19
19
20
-
| Transport |Best for|Key field|
21
-
|-----------|----------|-----------|
22
-
|**stdio**| Palinode installed on the same machine as the IDE|`"command": "palinode-mcp"`|
23
-
|**Streamable HTTP**| Palinode on a remote server, or any IDE that supports it |`"url": "http://host:6341/mcp/"`|
20
+
| Transport |Config field|Use when|
21
+
|-----------|-------------|----------|
22
+
|**stdio**|`"command": "palinode-mcp"`|Palinode is installed on the **same machine** as the IDE |
23
+
|**Streamable HTTP**|`"url": "http://host:6341/mcp/"`|Palinode runs on a **remote server** (homelab, VPS, dev box), or when multiple IDEs or team members share one instance|
24
24
25
-
For remote HTTP setups, start `palinode-mcp-sse`*(serves streamable-HTTP at
26
-
`/mcp/` — name is historical)* on the server before configuring the client.
27
-
Clients should use `"type": "http"` (not `"type": "sse"`) and always include
28
-
the trailing slash: `"url": "http://host:6341/mcp/"`. For stdio, `palinode-mcp`
29
-
must be on PATH (`which palinode-mcp`).
25
+
**Use stdio if:**
26
+
- You ran `pip install palinode` on your laptop and want a single-user local setup.
27
+
-`which palinode-mcp` prints a path.
28
+
29
+
**Use HTTP if:**
30
+
- Palinode lives on a separate machine and you connect over a network.
31
+
- Multiple IDEs or team members should share the same memory store.
32
+
- You want to switch IDEs without re-configuring the server.
33
+
34
+
For HTTP setups, start `palinode-mcp-sse` on the server first (despite the
35
+
name, it serves Streamable HTTP at `/mcp/`). Always include the trailing slash
36
+
in the URL. Confirm the server is reachable before editing the IDE config:
| Linux | `~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json` |
308
+
| Windows | `%APPDATA%\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\mcp_settings.json` |
283
309
284
-
1. Open the Cline sidebar.
285
-
2. Click the **MCP Servers** icon (plug icon) in Cline's top navigation bar.
310
+
The easiest way to open the file without navigating manually:
311
+
312
+
1. Click the extension's icon in the VS Code Activity Bar to open its sidebar.
313
+
2. Click the **MCP Servers** icon (plug icon) in the top navigation bar.
286
314
3. Select the **Installed** tab.
287
-
4. Click **Configure MCP Servers** — this opens `cline_mcp_settings.json`
315
+
4. Click **Configure MCP Servers** — this opens the correct settings file
288
316
directly in the editor.
289
317
318
+
> **Note:** the settings file does not exist until you open the MCP settings
319
+
> panel at least once. Use the UI path above to let the extension create it
320
+
> before editing.
321
+
290
322
### stdio (local install)
291
323
324
+
Use this when Palinode is installed on the same machine as VS Code.
325
+
292
326
```json
293
327
{
294
328
"mcpServers": {
@@ -307,9 +341,9 @@ The easiest way to open the file is from within VS Code:
307
341
308
342
### HTTP (remote server)
309
343
310
-
Cline uses `"url"` for remote MCP endpoints. `palinode-mcp-sse` serves
311
-
streamable-HTTP at `/mcp/` (the binary name is historical). Always include
312
-
the trailing slash in the URL:
344
+
Use this when Palinode runs on a separate machine. Both forks use `"url"` for
345
+
the HTTP endpoint. `palinode-mcp-sse` serves streamable-HTTP at `/mcp/` (the
346
+
binary name is historical). Always include the trailing slash:
313
347
314
348
```json
315
349
{
@@ -323,42 +357,76 @@ the trailing slash in the URL:
323
357
}
324
358
```
325
359
360
+
Replace `your-server` with your server's hostname or IP (`localhost` for a
361
+
local HTTP server, or a stable hostname / IP for remote). Confirm the MCP
362
+
server is reachable before configuring the client:
363
+
364
+
```bash
365
+
curl http://your-server:6341/mcp/
366
+
```
367
+
326
368
### Restart sequence
327
369
328
-
Cline picks up config changes without a VS Code restart. After saving
329
-
`cline_mcp_settings.json`:
370
+
Both forks pick up config changes without a VS Code restart:
330
371
331
-
1. Return to the Cline sidebar → MCP Servers tab.
332
-
2. The `palinode` entry should appear. If it shows an error badge, click
372
+
1. Save the settings file.
373
+
2. Return to the extension sidebar → **MCP Servers** tab.
374
+
3. The `palinode` entry should appear. If it shows an error badge, click
333
375
**Restart Server**.
334
-
3. No full VS Code restart is needed.
376
+
4. No full VS Code restart is needed.
335
377
336
378
### Verification
337
379
338
380
```bash
339
381
palinode mcp-config --diagnose
340
382
```
341
383
342
-
The diagnose command does not currently know Cline's globalStorage path; it
343
-
will not report this file. Instead, verify directly in the Cline sidebar —
344
-
the server should show as connected (green) and the tool list should expand
345
-
to show all palinode tools.
384
+
The diagnose command knows both Cline and Roo Cline paths — it will report
385
+
whichever file is present. Also verify in the sidebar: the server should show
386
+
as connected (green) and the tool list should expand to show all palinode tools.
346
387
347
-
Then in a Cline conversation:
388
+
Then in a conversation with the extension:
348
389
349
390
```
350
391
Use palinode_status to check memory health
351
392
```
352
393
394
+
### Reducing approval prompts
395
+
396
+
Both forks prompt for approval on every MCP tool call by default. To
397
+
pre-approve the tools you use most often, add their names to `alwaysAllow`:
398
+
399
+
```json
400
+
{
401
+
"mcpServers": {
402
+
"palinode": {
403
+
"url": "http://your-server:6341/mcp/",
404
+
"disabled": false,
405
+
"alwaysAllow": [
406
+
"palinode_search",
407
+
"palinode_save",
408
+
"palinode_status",
409
+
"palinode_read",
410
+
"palinode_list",
411
+
"palinode_history"
412
+
]
413
+
}
414
+
}
415
+
}
416
+
```
417
+
418
+
See [MCP-SETUP.md](MCP-SETUP.md) for the full tool list.
419
+
353
420
### Troubleshooting
354
421
355
422
| Symptom | Fix |
356
423
|---------|-----|
357
-
| Server shows error badge immediately | `palinode-mcp` not found on PATH. Set `"command"` to the absolute path: open a VS Code terminal, activate your palinode venv, run `which palinode-mcp` |
358
-
| `cline_mcp_settings.json` not found | The file does not exist until you open Cline's MCP settings at least once. Use the UI path above to let Cline create it |
359
-
| Tools appear but all fail | Palinode API not running. Run `curl http://127.0.0.1:6340/status` from a terminal |
360
-
| HTTP: `url`field ignored | Confirm the key is lowercase `"url"` — Cline does not accept `serverUrl` |
361
-
| `alwaysAllow` prompts every tool call | Add the tool names to the `alwaysAllow` array: `["palinode_search", "palinode_save", "palinode_status"]`|
424
+
| Server shows error badge immediately | `palinode-mcp` not found on PATH. Open a VS Code terminal, activate your palinode venv, run `which palinode-mcp` — use that absolute path as `"command"` |
425
+
| Settings file not found | Open the MCP settings panel from the extension UI (step 4 above) to let the extension create it, then edit |
426
+
| Tools appear but all fail | Palinode API not running. `curl http://127.0.0.1:6340/status` should return JSON |
427
+
| HTTP: `url`field ignored | Confirm the key is lowercase `"url"` — neither fork accepts `serverUrl` |
428
+
| HTTP: cannot connect to remote | Confirm `palinode-mcp-sse` is running on the server: `curl http://your-server:6341/mcp/` |
429
+
| Wrong file edited — change had no effect | Run `palinode mcp-config --diagnose` to see which file your installed extension reads |
362
430
363
431
---
364
432
@@ -455,9 +523,84 @@ Use palinode_status to check memory health
The MCP client is built into the **AI Assistant** plugin, available in
531
+
IntelliJ IDEA, PyCharm, WebStorm, GoLand, Rider, CLion, DataGrip, and
532
+
RubyMine. It is bundled in 2025.2+; for 2025.1 install the AI Assistant
533
+
plugin from the marketplace.
534
+
535
+
> **JetBrains is UI-first.** MCP servers are configured via the IDE settings
536
+
> panel, not a hand-edited file. The underlying config directory varies by
537
+
> product and version — use the UI path below rather than editing files
538
+
> directly.
539
+
540
+
### Add via settings UI
541
+
542
+
1. Open **Settings** (`Cmd+,` on macOS / `Ctrl+Alt+S` on Windows/Linux).
543
+
2. Navigate to **Tools → AI Assistant → Model Context Protocol (MCP)**.
544
+
3. Click **+** (Add) and choose **As JSON**.
545
+
4. Paste the appropriate snippet below.
546
+
5. Click **Apply** — this starts the server immediately. No restart needed.
547
+
548
+
> **Settings Sync:** If you use JetBrains Settings Sync, the MCP config
549
+
> propagates automatically to all your other JetBrains IDEs.
550
+
551
+
### stdio (local install)
552
+
553
+
```json
554
+
{
555
+
"mcpServers": {
556
+
"palinode": {
557
+
"command": "palinode-mcp",
558
+
"args": [],
559
+
"env": {
560
+
"PALINODE_API_HOST": "127.0.0.1",
561
+
"PALINODE_API_PORT": "6340"
562
+
}
563
+
}
564
+
}
565
+
}
566
+
```
567
+
568
+
### HTTP (remote server)
569
+
570
+
```json
571
+
{
572
+
"mcpServers": {
573
+
"palinode": {
574
+
"url": "http://your-server:6341/mcp/"
575
+
}
576
+
}
577
+
}
578
+
```
579
+
580
+
### Verification
581
+
582
+
After clicking Apply, open the AI Assistant chat panel. In Agent mode, the
583
+
tool list should include all palinode tools. Then run:
584
+
585
+
```
586
+
Use palinode_status to check memory health
587
+
```
588
+
589
+
### Troubleshooting
590
+
591
+
| Symptom | Fix |
592
+
|---------|-----|
593
+
| Server entry saves but tools never appear | Re-open **Settings → Tools → AI Assistant → MCP** and confirm the entry is enabled |
594
+
| stdio server fails immediately | Replace `"command": "palinode-mcp"` with the absolute path returned by `which palinode-mcp` in the same shell environment the IDE inherits |
595
+
| HTTP server fails immediately | Confirm the server is reachable first: `curl http://your-server:6341/mcp/`|
596
+
| Config seems to disappear across IDEs | Check whether JetBrains Settings Sync is enabled and overwriting the MCP entry from another machine |
597
+
| Unsure where the config lives on disk | Use the settings UI; the path is product- and version-specific, which is why `palinode mcp-config --diagnose` does not try to manage it |
598
+
599
+
---
600
+
458
601
## Environment variable reference
459
602
460
-
All five clients above can pass env vars to the stdio `palinode-mcp` process.
603
+
All six clients above can pass env vars to the stdio `palinode-mcp` process.
0 commit comments