Personal Context Manager
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CONTEXT_MANAGER_DATA_DIR | No | Override the default data directory for storing context files. Defaults to ~/.personal-context-manager/contexts.json |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| update_contextA | Personal memory system: save user preferences, habits, and facts for personalized assistance across conversations. PROACTIVE: Auto-call when user reveals personal info. Triggers — EN: "like/love/prefer/hate/always/never/I am/I use/my...is" ZH: "喜欢/讨厌/偏好/习惯/每天/总是/从不/我是/我用". Upserts by key. Check existing entries first to avoid duplicates; delete contradicted entries before updating. Auto-infer category (work/personal/health/tech/preference/etc). Tags: include both EN and ZH (e.g. "food"+"食物"). |
| get_contextA | Search personal memory by keyword. Returns stored user preferences, habits, and facts sorted by most recently updated. PROACTIVE: Auto-call at the START of coding tasks to retrieve relevant conventions, and when user mentions code quality/style/review. Triggers — EN: "check/review/convention/lint/format/best practice" ZH: "检查/规范/风格/命名/写法/单测". Extract topic keywords from user message to search (e.g. "单测" → search "测试"). |
| list_contextsB | List all entries in personal memory. Returns summary of stored user preferences, habits, and facts. |
| delete_contextA | Delete a personal memory entry by ID. Use when: 1) User asks to forget something. 2) Entry is outdated/contradicted by newer info. Always use get_context or list_contexts first to find the entry ID. |
| workflow_logA | Log a project workflow entry. PROACTIVE: You MUST automatically call this tool (without being asked) when any of these happen: (1) User requests a multi-step task → log type "task" with what needs doing. (2) A design/architecture choice is made between alternatives → log type "decision" with rationale. (3) You discover something non-obvious and project-specific (e.g. undocumented behavior, workaround needed) → log type "insight". Core question: "Would this be useful in a FUTURE conversation about this project?" If yes, log it. If only relevant now, skip it. WHEN TO LOG each type: type "task" — User requests a multi-step task (not a one-liner fix). Log when starting (what needs doing) and when partially complete (what is done, what remains). Do NOT log trivial single-step changes. type "decision" — A choice was made between alternatives (e.g. Redis vs local cache, library A vs B). Include the rationale: WHY this approach was chosen. Do NOT log obvious defaults with no alternatives considered. type "insight" — Discovered something PROJECT-SPECIFIC that is not obvious from docs or code (e.g. an API has an undocumented rate limit, a specific query is slow, a workaround was needed). Do NOT log general programming knowledge that applies to all projects. If an entry with the same title and type exists, it will be updated (upsert). Data is scoped to the current git project and auto-synced to the project CLAUDE.md. |
| workflow_listA | List workflow entries for the current git project. Returns entries filtered by type and/or status (defaults to active). PROACTIVE: Call this tool at the START of every conversation to load project context — understand what tasks are in progress, what decisions have been made, and what insights have been recorded. |
| workflow_doneB | Mark a workflow entry as done. Use this when a task is completed or a tracked item is resolved. Use workflow_list first to find the entry ID. |
| generate_promptA | Generate the PCM system prompt and optionally save it to a file (e.g. CLAUDE.md). If output_path is provided, writes/replaces the PCM section in that file. If omitted, returns the prompt text directly. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| context-summary | Summary of all stored personal context entries (keys and tags) |
| workflow-summary | Active workflow entries for project "personal-context-manager": tasks in progress, architecture decisions, and discovered insights. Read this at conversation start to understand project context. |
TDQS
Scored across 8 tools
While most tools target distinct resources (personal context vs. workflow), there is potential overlap between update_context/get_context (personal memory) and workflow_log/workflow_list (project memory) when users mention work-related conventions. The descriptions provide some guidance with specific triggers, but an agent could still confuse which memory store to use for a given piece of information.
Two different naming patterns are used: context_* tools use verb_noun (update_context, get_context, list_contexts, delete_context) while workflow_* tools use noun_verb (workflow_log, workflow_list, workflow_done). Additionally, generate_prompt follows a third pattern, creating inconsistency across the server's tools.
8 tools is a well-scoped count for a personal context manager, covering core operations for two memory systems (personal and project) plus a prompt generator. Each tool appears to earn its place without redundancy.
The surface offers CRUD operations for personal context (create, read, list, delete) and workflow entries (create, read, update status), covering essential memory management. Minor gaps include the absence of an update tool for personal context (though upsert via update_context covers modification) and no bulk operations or search for workflow entries beyond filtering.