mcp

package
v1.14.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 27, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Overview

Package mcp implements the Model Context Protocol server for Engram.

This exposes memory tools via MCP stdio transport so ANY agent (OpenCode, Claude Code, Cursor, Windsurf, etc.) can use Engram's persistent memory just by adding it as an MCP server.

Tool profiles allow agents to load only the tools they need:

engram mcp                    → all 16 tools (default)
engram mcp --tools=agent      → 12 tools agents actually use (per skill files)
engram mcp --tools=admin      → 4 tools for TUI/CLI (delete, stats, timeline, merge)
engram mcp --tools=agent,admin → combine profiles
engram mcp --tools=mem_save,mem_search → individual tool names

Index

Constants

This section is empty.

Variables

View Source
var ProfileAdmin = map[string]bool{
	"mem_delete":         true,
	"mem_stats":          true,
	"mem_timeline":       true,
	"mem_merge_projects": true,
}

ProfileAdmin contains tools for TUI, dashboards, and manual curation that are NOT referenced in any agent skill or memory protocol.

View Source
var ProfileAgent = map[string]bool{
	"mem_save":              true,
	"mem_search":            true,
	"mem_context":           true,
	"mem_session_summary":   true,
	"mem_session_start":     true,
	"mem_session_end":       true,
	"mem_get_observation":   true,
	"mem_suggest_topic_key": true,
	"mem_capture_passive":   true,
	"mem_save_prompt":       true,
	"mem_update":            true,
	"mem_current_project":   true,
	"mem_judge":             true,
}

ProfileAgent contains the tool names that AI agents need. Sourced from actual skill files and memory protocol instructions across all 4 supported agents (Claude Code, OpenCode, Gemini CLI, Codex).

View Source
var Profiles = map[string]map[string]bool{
	"agent": ProfileAgent,
	"admin": ProfileAdmin,
}

Profiles maps profile names to their tool sets.

Functions

func NewServer

func NewServer(s *store.Store) *server.MCPServer

NewServer creates an MCP server with ALL tools registered (backwards compatible).

func NewServerWithConfig added in v1.11.0

func NewServerWithConfig(s *store.Store, cfg MCPConfig, allowlist map[string]bool) *server.MCPServer

NewServerWithConfig creates an MCP server with full configuration including default project detection and optional tool allowlist.

func NewServerWithTools

func NewServerWithTools(s *store.Store, allowlist map[string]bool) *server.MCPServer

NewServerWithTools creates an MCP server registering only the tools in the allowlist. If allowlist is nil, all tools are registered.

func ResolveTools

func ResolveTools(input string) map[string]bool

ResolveTools takes a comma-separated string of profile names and/or individual tool names and returns the set of tool names to register. An empty input means "all" — every tool is registered.

Types

type MCPConfig added in v1.11.0

type MCPConfig struct {
	// BM25Floor overrides the default BM25 score floor used by FindCandidates
	// during conflict candidate detection (REQ-001). The floor is the minimum
	// acceptable BM25 rank (negative; closer to 0 = better match). Candidates
	// whose score falls below this threshold are excluded.
	//
	// nil means "use the store default" (-2.0). An explicit pointer value
	// (including 0.0) is forwarded directly. Using a pointer avoids the
	// zero-value ambiguity where 0.0 would otherwise be indistinguishable
	// from "not set".
	BM25Floor *float64

	// Limit overrides the maximum number of conflict candidates returned per
	// mem_save call (REQ-001). nil means "use the store default" (3).
	// An explicit pointer value (including 0) is forwarded directly.
	Limit *int
}

MCPConfig holds configuration for the MCP server. JW6: DefaultProject removed — it was populated but never read (dead code). Project is always auto-detected from cwd at call time via resolveWriteProject/resolveReadProject.

type SessionActivity added in v1.12.0

type SessionActivity struct {
	// contains filtered or unexported fields
}

SessionActivity tracks tool call activity for save reminders and activity scores.

func NewSessionActivity added in v1.12.0

func NewSessionActivity(nudgeAfter time.Duration) *SessionActivity

NewSessionActivity creates a new activity tracker with the given nudge threshold.

func (*SessionActivity) ActivityScore added in v1.12.0

func (a *SessionActivity) ActivityScore(sessionID string) string

ActivityScore returns a formatted activity score string for the session.

func (*SessionActivity) ClearSession added in v1.12.0

func (a *SessionActivity) ClearSession(sessionID string)

ClearSession removes the session entry, freeing memory.

func (*SessionActivity) NudgeIfNeeded added in v1.12.0

func (a *SessionActivity) NudgeIfNeeded(sessionID string) string

NudgeIfNeeded returns a reminder string if too much time has passed since the last save in this session. Returns empty string if no nudge needed.

func (*SessionActivity) RecordSave added in v1.12.0

func (a *SessionActivity) RecordSave(sessionID string)

RecordSave increments the save counter and updates lastSaveAt.

func (*SessionActivity) RecordToolCall added in v1.12.0

func (a *SessionActivity) RecordToolCall(sessionID string)

RecordToolCall increments the tool call counter for a session.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL