diff options
| author | Paul Buetow <paul@buetow.org> | 2026-02-12 09:32:26 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-02-12 09:32:26 +0200 |
| commit | cfd02d2874992f7e293d5098bd328a495825a8d4 (patch) | |
| tree | bb241a61ce35c717c16539ab5d4413264514168d /internal/mcp/server_test.go | |
| parent | 0cd9db181218eaf0fb1ec1cddcd83035d984e94c (diff) | |
feat: add automatic MCP prompt to slash command syncing
Adds optional syncing of MCP prompts to Markdown slash command files
for AI agents that don't yet support MCP prompts (e.g., Cursor IDE).
Features:
- Syncs prompts on create/update/delete operations
- Configurable via TOML config, environment vars, or CLI flags
- Backfill support with --sync-all flag
- Thread-safe atomic file writes
- Non-fatal sync failures (logged but don't break operations)
- Comprehensive test coverage (81.1% total)
Configuration:
- Config: [mcp] slashcommand_sync = true, slashcommand_dir = "~/.cursor/commands"
- Env: HEXAI_MCP_SLASHCOMMAND_SYNC, HEXAI_MCP_SLASHCOMMAND_DIR
- CLI: --slashcommand-sync, --slashcommand-dir, --sync-all
Fixes config merging bug where project config would reset global MCP settings.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Diffstat (limited to 'internal/mcp/server_test.go')
| -rw-r--r-- | internal/mcp/server_test.go | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/internal/mcp/server_test.go b/internal/mcp/server_test.go index 4b43f51..8e3d7b5 100644 --- a/internal/mcp/server_test.go +++ b/internal/mcp/server_test.go @@ -54,7 +54,7 @@ func createTestServer(t *testing.T, store promptstore.PromptStore) (*Server, *by inBuf := &bytes.Buffer{} outBuf := &bytes.Buffer{} logger := log.New(io.Discard, "", 0) - return NewServer(inBuf, outBuf, logger, store), inBuf, outBuf + return NewServer(inBuf, outBuf, logger, store, nil), inBuf, outBuf } // sendRequest writes a JSON-RPC request as newline-delimited JSON (MCP stdio protocol). @@ -395,7 +395,7 @@ func TestServer_Run(t *testing.T) { inBuf := &bytes.Buffer{} outBuf := &bytes.Buffer{} logger := log.New(io.Discard, "", 0) - server := NewServer(inBuf, outBuf, logger, store) + server := NewServer(inBuf, outBuf, logger, store, nil) err := server.Run() if err != nil { @@ -408,7 +408,7 @@ func TestServer_Run(t *testing.T) { inBuf := &bytes.Buffer{} outBuf := &bytes.Buffer{} logger := log.New(io.Discard, "", 0) - server := NewServer(inBuf, outBuf, logger, store) + server := NewServer(inBuf, outBuf, logger, store, nil) // Send initialize request req := Request{ @@ -465,7 +465,7 @@ func TestServer_ReadMessage(t *testing.T) { inBuf := &bytes.Buffer{} outBuf := &bytes.Buffer{} logger := log.New(io.Discard, "", 0) - server := NewServer(inBuf, outBuf, logger, store) + server := NewServer(inBuf, outBuf, logger, store, nil) // Write a newline-delimited JSON message (MCP stdio protocol) msg := `{"jsonrpc":"2.0","id":1,"method":"test"}` @@ -487,7 +487,7 @@ func TestServer_ReadMessage(t *testing.T) { inBuf := &bytes.Buffer{} outBuf := &bytes.Buffer{} logger := log.New(io.Discard, "", 0) - server := NewServer(inBuf, outBuf, logger, store) + server := NewServer(inBuf, outBuf, logger, store, nil) // Write empty lines followed by a valid message msg := `{"jsonrpc":"2.0","id":1,"method":"test"}` @@ -508,7 +508,7 @@ func TestServer_ReadMessage(t *testing.T) { inBuf := &bytes.Buffer{} outBuf := &bytes.Buffer{} logger := log.New(io.Discard, "", 0) - server := NewServer(inBuf, outBuf, logger, store) + server := NewServer(inBuf, outBuf, logger, store, nil) _, err := server.readMessage() if err != io.EOF { |
