feat: Replace python tests with native E2E test suite and fix capabilities schema

- Added native E2E test suite in stub to validate server<->stub<->nvim IPC
- Added win-nvim integration tests
- Fixed empty capabilities schema in initialize response in server and win-nvim
- Refactored server to accept dynamic MCP_PORT for test isolation
- Made server exit gracefully on port 3000 collision
This commit is contained in:
Riz Ashraf committed 2026-09-13 18:03:27 +01:00
1 parent f2582b58be
commit d71b1e6e35
11 files changed
+327 -79

No files matched your search

+8 -11
View File
@@ -24,10 +24,12 @@ Copy-Item target\release\mcp-memory-stub.exe C:\Users\reazul.ashraf\.local\bin\m
if (-not (Get-Process mcp-memory-server -ErrorAction SilentlyContinue)) { Start-Process -FilePath "C:\Users\reazul.ashraf\.local\bin\mcp-memory-server.exe" -ArgumentList "--daemon" -WindowStyle Hidden -ErrorAction SilentlyContinue }
```
**Shutting Down:** If you need to stop the background daemon (e.g., to replace the executable after a recompile), use the built-in `--exit` flag instead of forcefully killing the process.
**Shutting Down:** If you need to stop or restart the background daemon (e.g., to replace the executable after a recompile), you MUST NEVER use brute-force OS kill commands (e.g., Stop-Process, pkill, or kill). Instead, you MUST ALWAYS use the server's built-in graceful shutdown mechanisms:
1. The CLI flag: `--exit` (or `--restart`)
```powershell
mcp-memory-server.exe --exit
```
2. The HTTP endpoint: `POST http://127.0.0.1:3000/shutdown`
`
**Step 2:** Update your Windows ~/.gemini/config/mcp_config.json to point the CLI to the ultra-lightweight stub (since the server is already running in the background):
`json
@@ -99,13 +101,8 @@ Whenever you alt-tab into a Neovim window (FocusGained) or switch files (BufEnte
### Neovim MCP Tools
The LLM agent interacts with your active Neovim session using a dedicated set of MCP tools. *(Note: /nvim/telemetry is strictly a one-way webhook for Neovim; the LLM uses the tools below to interact).*
* **
vim_goto_line**: Open files and jump cursors directly from the LLM.
* **
vim_set_diagnostics**: Push inline code review warnings as virtual text.
* **
vim_get_active_buffer**: Read live, unsaved buffer contents.
* **
vim_get_cursor**: Fetch precise line/column coordinates.
* **
vim_get_visual_selection**: Read highlighted code blocks.
* **vim_goto_line**: Open files and jump cursors directly from the LLM.
* **vim_set_diagnostics**: Push inline code review warnings as virtual text.
* **vim_get_active_buffer**: Read live, unsaved buffer contents.
* **vim_get_cursor**: Fetch precise line/column coordinates.
* **vim_get_visual_selection**: Read highlighted code blocks.