JauMemory MCP Server
OfficialProvides persistent memory capabilities for GitHub Copilot.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@JauMemory MCP Server save this for later: meeting with John about Q3 results"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
JauMemory MCP Server
A Model Context Protocol (MCP) server that provides persistent memory capabilities for AI assistants like Claude. Store, recall, and analyze information across conversations with intelligent memory management.
Features
🧠 Persistent Memory: Store information that persists across all sessions
🔍 Smart Recall: Search memories using keywords or semantic similarity
📊 Pattern Analysis: Automatically detect patterns and extract insights
🏷️ Automatic Classification: Memories are automatically categorized (errors, solutions, insights, questions)
🔄 Collection Consolidation: Roll a collection's memories up into a single summary memory
🎯 Importance Scoring: Content-based importance assessment with learning value metrics
🤝 Multi-Agent Support: Agent identities, shared memory, assignments via shortcut flags, error-pattern learning
🚀 Production Ready: Connects to JauMemory cloud service with secure authentication
Related MCP server: Recall
Prerequisites
Node.js 18.0.0 or higher
npm or yarn
JauMemory account (free tier available at mem.jau.app)
Installation
From NPM
npm install -g @jaumemory/mcp-serverFrom GitHub
git clone https://github.com/Jau-app/jaumemory-mcp-server.git
cd jaumemory-mcp-server
npm install
npm run buildConfiguration
Claude Desktop
Add to your Claude desktop configuration file:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"jaumemory": {
"command": "npx",
"args": ["-y", "@jaumemory/mcp-server"]
}
}
}Note: Claude Desktop works with the npx approach without requiring global installation.
Claude Code
Add to your Claude Code configuration:
MacOS/Linux: ~/.config/claude/claude_code_config.json
Windows: %APPDATA%\claude\claude_code_config.json
{
"mcpServers": {
"jaumemory": {
"command": "npx",
"args": ["-y", "@jaumemory/mcp-server"]
}
}
}Cursor
Open Cursor Settings
Navigate to MCP section
Add new MCP server with command:
npx -y @jaumemory/mcp-server
Or edit configuration file:
MacOS/Linux: ~/.cursor/mcp_config.json
Windows: %APPDATA%\Cursor\mcp_config.json
{
"mcpServers": {
"jaumemory": {
"command": "npx",
"args": ["-y", "@jaumemory/mcp-server"]
}
}
}Cline
Installation (Required):
⚠️ IMPORTANT: Install in the same terminal environment where Cline will run:
Windows (native): Install in PowerShell or Command Prompt (the same environment Cline uses)
WSL (Windows Subsystem for Linux): Install in WSL terminal for your specific user
macOS/Linux: Install in your terminal of choice
npm install -g @jaumemory/mcp-serverIf using both Windows and WSL, install in both environments:
# In Windows PowerShell
npm install -g @jaumemory/mcp-server
# In WSL terminal
npm install -g @jaumemory/mcp-serverAdd to Cline MCP settings (in your Cline configuration file):
{
"mcpServers": {
"jaumemory": {
"type": "stdio",
"timeout": 60,
"command": "npx",
"args": ["-y", "@jaumemory/mcp-server"]
}
}
}Note: The "type": "stdio" and "timeout": 60 settings are important for Cline compatibility. Installing in the correct terminal environment ensures Cline can find and execute the server. The global installation helps avoid Windows file locking issues.
Windsurf
Add to Windsurf MCP configuration:
{
"mcpServers": {
"jaumemory": {
"command": "npx",
"args": ["-y", "@jaumemory/mcp-server"]
}
}
}GitHub Copilot
Add to GitHub Copilot MCP settings:
{
"mcpServers": {
"jaumemory": {
"command": "npx",
"args": ["-y", "@jaumemory/mcp-server"]
}
}
}ChatGPT (Plus/Pro Required)
Add to ChatGPT MCP configuration:
{
"mcpServers": {
"jaumemory": {
"command": "npx",
"args": ["-y", "@jaumemory/mcp-server"]
}
}
}Advanced Configuration (Optional)
Environment variables are not required for basic setup. Authentication is handled by the mcp_login and mcp_authenticate tools; no identity or credential values belong in configuration files.
Optional settings (see .env.example for the full list):
# Optional: Logging configuration
LOG_LEVEL=info
NODE_ENV=productionNote: Even with environment variables set, you must still authenticate using the mcp_login tool on first use.
Authentication
First-Time Setup
Launch your AI assistant (Claude Desktop, Cursor, etc.) - the MCP server will start automatically
Use the
mcp_logintool to initiate authenticationClick the approval link that opens in your browser
Complete the authentication in your web browser
The server will automatically store your credentials securely
That's it! No configuration files or environment variables needed for basic setup.
Usage
MCP Tools Available
The server exposes 50 tools. Full argument contracts for every
tool are available in-band — call
get_guide({ topic: "tools/<category>/<name>" }), or browse the
same docs at https://mem.jau.app/v1/help.
Category | Tools |
Discovery |
|
Auth |
|
Memory |
|
Agents |
|
Collections |
|
Credential vault |
|
Tool registry |
|
Skills |
|
Toolkit |
|
Scheduling |
|
Berrry integration |
|
Highlights with examples:
Core Memory Tools
remember - Store a new memory with automatic classification
remember({
content: "Important insight about TypeScript generics",
tags: ["typescript", "learning"],
importance: 0.8,
shortcuts: ["--insight", "--high"]
})recall - Search and retrieve memories
recall({
query: "typescript generics",
limit: 10,
mode: "keyword" // or "semantic" for AI-powered search
})forget - Delete a specific memory
forget({
memoryId: "550e8400-e29b-41d4-a716-446655440000"
})update - Update an existing memory
update({
memoryId: "memory-id",
content: "Updated content",
importance: 0.9
})Analysis Tools
analyze - Analyze patterns and extract insights
analyze({
timeRange: "week" // or "day", "month", "all"
})consolidate - Consolidate similar memories (args:
similarity_threshold, min_group_size, archive_originals,
dry_run). Note: the server does not implement standalone
consolidation yet and returns a clean error pointing to
consolidate_collection, which summarizes one collection's memories
for real.
memory_stats - Get statistics about memories
memory_stats({
query: "project-name",
timeRange: { start: "2024-01-01", end: "2024-12-31" }
})Multi-Agent Features
create_agent - Create an AI agent with personality
create_agent({
name: "Code Reviewer",
personalityTraits: ["analytical", "detail-oriented"],
specializations: ["code-review", "best-practices"]
})agent_error_learning - Two-strike error learning for agents
agent_error_learning({
action: "report",
agentId: "…uuid…",
errorSignature: "TypeError user.profile undefined",
errorMessage: "Undefined property access in user service"
})Shortcuts System
Quick memory creation with metadata flags:
remember({
content: "Fix authentication bug",
shortcuts: ["--bug", "--high", "--assign @backend-dev", "--project webapp"]
})Available shortcuts:
Types:
--todo,--task,--bug,--question,--note,--reflectionStatus:
--pending,--wip,--done,--blocked [reason]Priority:
--low,--medium,--high,--urgentAssignment:
--assign @agent-name,--notify @agent1,@agent2Context:
--project name,--repo url
The full semantics live in
get_guide({ topic: "concepts/shortcuts" }).
Memory Types
JauMemory automatically classifies memories:
🔴 Error: Problems and bugs encountered
✅ Solution: Fixes and resolutions
💡 Insight: Patterns and realizations
❓ Question: Unknowns and research needs
Development
# Install dependencies
npm install
# Run in development mode
npm run dev
# Build for production
npm run build
# Run tests
npm test
# Lint code
npm run lintProject Structure
jaumemory-mcp-server/
├── src/ # TypeScript source code
│ ├── index.ts # Main entry point
│ ├── auth/ # Authentication logic
│ ├── client/ # gRPC client code
│ ├── tools/ # MCP tool implementations
│ └── utils/ # Utility functions
├── dist/ # Compiled JavaScript
├── proto/ # Protocol buffer definitions
└── package.json # Package configurationTroubleshooting
Windows Installation Issues
If you encounter TAR_ENTRY_ERROR errors on Windows when using npx:
Solution 1: Use global installation
# Run in PowerShell as Administrator
npm install -g @jaumemory/mcp-server --forceThen update your config to use the global command:
{
"mcpServers": {
"jaumemory": {
"command": "jaumemory-mcp-server",
"args": []
}
}
}Solution 2: Clear npm cache
npm cache clean --force
npm config set fetch-retries 10
npm config set fetch-timeout 60000
npx -y @jaumemory/mcp-serverSolution 3: Local installation
mkdir C:\JauMemory
cd C:\JauMemory
npm install @jaumemory/mcp-serverThen use in config:
{
"mcpServers": {
"jaumemory": {
"command": "node",
"args": ["C:\\JauMemory\\node_modules\\@jaumemory\\mcp-server\\dist\\index.js"]
}
}
}Authentication Issues
Ensure you have a valid JauMemory account
Check your username and email are correct
Look for the approval link in your browser
Check logs:
LOG_LEVEL=debug npm start
Connection Problems
Verify internet connection
Check if JauMemory service is available at https://mem.jau.app
Ensure firewall allows HTTPS/gRPC connections
Try clearing auth cache and re-authenticating
Claude Integration
Verify MCP configuration in Claude desktop
Restart Claude after configuration changes
Check Claude logs for MCP errors
Ensure Node.js version is 18.0.0 or higher
Security
Authentication uses secure MCP approval flow
Credentials are encrypted and stored securely
All communication uses HTTPS/TLS
No sensitive data is logged
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Fork the repository
Create your feature branch (
git checkout -b feature/AmazingFeature)Commit your changes (
git commit -m 'Add some AmazingFeature')Push to the branch (
git push origin feature/AmazingFeature)Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
Acknowledgments
Built for use with Claude by Anthropic
Uses the Model Context Protocol specification
Powered by JauMemory's high-performance Rust backend
Made with ❤️ for the AI assistant community
Available Tools
25 toolsadd_to_collectionC
Add a memory to a collection.
Inputs: collection_id (required), memory_id (required).
agent_collaborationA
Manage collaboration between agents.
Usage Examples: // Start a collaboration agent_collaboration({ action: "start", agentId: "frontend-dev", collaboratorId: "backend-dev", collaborationType: "api-integration", memoryId: "task-123" })
// Complete a collaboration agent_collaboration({ action: "complete", agentId: "frontend-dev", collaborationId: "collab-456", outcome: "success" })
// List collaborations for an agent agent_collaboration({ action: "list", agentId: "backend-dev" })
Collaboration Types:
code-review: Code review collaboration
pair-programming: Pair programming session
api-integration: API integration work
testing: Testing collaboration
debugging: Debugging session
planning: Planning and design
documentation: Documentation work
Outcomes:
success: Collaboration completed successfully
partial: Some goals achieved
failed: Collaboration did not achieve goals
Inputs: action (required), agentId (required), collaboratorId, collaborationType, +3 more.
agent_error_learningA
Enable agents to learn from errors using a 2-strike protocol.
Usage Examples: // Report a new error agent_error_learning({ action: "report", agentId: "backend-dev", errorSignature: "TypeError: Cannot read property 'x' of undefined", errorMessage: "Undefined property access in user service", contextSnapshot: "const name = user.profile.name; // user.profile is undefined", attemptedSolution: "Added optional chaining: user.profile?.name", projectContext: "api-service" })
// Mark error as solved agent_error_learning({ action: "solve", agentId: "backend-dev", patternId: "err-pattern-123", solution: "Always check if user.profile exists before accessing properties", verificationSteps: [ "Run: npm test user.service.spec.ts", "Verify no TypeErrors in logs", "Check user profile endpoint returns 200" ] })
// Record failed attempt agent_error_learning({ action: "fail", agentId: "frontend-dev", patternId: "err-pattern-456", attemptedSolution: "Tried using default values but still crashed" })
The 2-Strike Protocol:
First encounter: Agent gets the error signature to recognize it
Second encounter: Agent must solve it or face consequences
After 2 failures: Error importance increases, agent status may change
Response Types:
first_occurrence: New error, pattern ID provided
solution_found: Previous solution exists
previous_attempts_failed: Shows attempt count (pressure!)
new_problem: Similar to other errors but unique
Inputs: action (required), agentId (required), errorSignature, errorMessage, +6 more.
agent_memoryA
Link memories to agents or recall agent-specific memories.
Usage Examples: // Link a memory to an agent agent_memory({ action: "link", agentId: "frontend-dev", memoryId: "mem-123-456", category: "learning", projectContext: "webapp" })
// Recall all memories for an agent agent_memory({ action: "recall", agentId: "backend-dev" })
// Search agent memories agent_memory({ action: "recall", agentId: "code-reviewer", query: "authentication", category: "error", limit: 10 })
// Project-specific recall agent_memory({ action: "recall", agentId: "test-engineer", projectContext: "api-service", category: "task" })
Memory Categories:
task: Assigned tasks and TODOs
learning: Things the agent learned
error: Errors encountered
solution: Solutions found
reflection: Agent reflections
Inputs: action (required), agentId (required), memoryId, category, +3 more.
agent_reflectionB
Create and retrieve agent reflections for continuous improvement.
Usage Examples: // Create a learning reflection agent_reflection({ action: "create", agentId: "frontend-dev", reflectionType: "learning", content: "Discovered that React.memo can prevent unnecessary re-renders in large lists", lessonsLearned: [ "Use React.memo for expensive components", "Profile before optimizing", "Not all components need memoization" ] })
// Create a mistake reflection agent_reflection({ action: "create", agentId: "backend-dev", reflectionType: "mistake", content: "Forgot to add database indexes, causing slow queries in production", lessonsLearned: [ "Always analyze query patterns before deployment", "Add indexes for frequently filtered columns", "Monitor query performance in staging" ] })
// Create a collaboration reflection agent_reflection({ action: "create", agentId: "code-reviewer", reflectionType: "collaboration", content: "Worked with frontend-dev to establish better PR review guidelines", lessonsLearned: [ "Clear PR descriptions save review time", "Automated checks reduce manual review burden" ], relatedAgents: ["frontend-dev", "test-engineer"] })
// List all reflections for an agent agent_reflection({ action: "list", agentId: "test-engineer" })
// List specific type of reflections agent_reflection({ action: "list", agentId: "project-manager", reflectionType: "success" })
Reflection Types:
learning: New knowledge or insights gained
mistake: Errors made and lessons learned
success: Achievements and what worked well
collaboration: Insights from working with other agents
Inputs: action (required), agentId (required), reflectionType, content, +2 more.
analyzeB
Analyze memory patterns and extract insights
Inputs: timeRange.
consolidateB
Consolidate similar memories into insights based on semantic similarity
Inputs: similarity_threshold, min_group_size, archive_originals, dry_run.
consolidate_collectionB
Consolidate all memories in a collection into a comprehensive summary or insight.
Inputs: collection_id (required), summarize_only, title.
create_agentB
Create a new agent with personality traits and specializations.
Usage Examples: // Basic agent create_agent({ name: "Code Reviewer" })
// Agent with personality create_agent({ name: "Frontend Expert", personalityTraits: ["detail-oriented", "creative", "user-focused"], specializations: ["React", "TypeScript", "CSS", "UX"] })
// Agent with custom prompts create_agent({ name: "Test Engineer", personalityTraits: ["thorough", "systematic"], specializations: ["Jest", "Cypress", "TDD"], updatePrompts: [ "Always consider edge cases", "Write tests before implementing fixes" ] })
Pre-configured Agents (from migration):
code-reviewer: Analytical, detail-oriented reviewer
backend-dev: Systems thinker for backend development
frontend-dev: Creative UI/UX focused developer
test-engineer: Quality-focused testing specialist
project-manager: Organized project coordinator
Inputs: name (required), personalityTraits, specializations, updatePrompts, +2 more.
create_collectionC
Create a new collection for organizing memories.
Inputs: name (required), description, memory_ids.
delete_collectionA
Delete a collection (memories are not deleted, only the collection).
Inputs: collection_id (required).
forgetB
Delete a specific memory
Inputs: memoryId (required).
get_collectionB
Get details of a specific collection including all its memories.
Inputs: collection_id (required).
list_agentsA
List all available agents with their details.
Usage Examples: // List all agents list_agents({})
// List only active agents list_agents({ status: "active" })
// List agents in error state list_agents({ status: "error" })
Agent Statuses:
active: Ready for tasks
learning: Currently improving from errors
error: Encountered issues, needs attention
archived: No longer in use
Inputs: status.
list_collectionsB
List all your collections.
Inputs: no named parameters.
mcp_authenticateB
Complete MCP authentication with the auth token you received from the web approval page. You MUST have clicked the link, approved in your browser, and copied the authentication code.
Inputs: auth_token (required), request_id.
mcp_loginA
Initiate MCP authentication flow. Provide your REAL JauMemory username and email to start the manual approval process. NOTE: You MUST click the link provided and approve in your browser. Test accounts will not work. Username and email can be optionally set via JAUMEMORY_USERNAME and JAUMEMORY_EMAIL environment variables.
Inputs: username, email.
mcp_logoutA
Logout and revoke the current MCP session.
Inputs: no named parameters.
memory_statsA
Get statistics about memories with optional filtering.
Usage Examples: // Get overall stats memory_stats()
// Stats for memories containing "error" memory_stats({ query: "error" })
// Stats for last week memory_stats({ timeRange: { start: "2025-01-17", end: "2025-01-24" } })
// Stats for React-related errors memory_stats({ query: "react error*", minImportance: 0.5 })
// Stats for specific tags memory_stats({ tags: ["bug", "frontend"] })
Returns:
Total memory count (filtered)
Memory type distribution
Top 20 tags with counts
Importance distribution
Keyword frequency (if applicable)
Inputs: query, tags, minImportance, timeRange.
recallB
Search and retrieve memories
Inputs: query (required), limit.
rememberB
Store a new memory with optional context and importance scoring
Inputs: content (required), context, importance, tags, +1 more.
remove_from_collectionB
Remove a memory from a collection.
Inputs: collection_id (required), memory_id (required).
updateC
Update an existing memory
Inputs: memoryId (required), content, importance.
update_agent_nameA
Update an agent's name using the new naming convention.
Usage Examples: // Update an agent's name update_agent_name({ agentId: "DW1", newName: "Documentation Writer:dw1" })
// Change to a different role update_agent_name({ agentId: "ta1", newName: "Test Automation Engineer:tae1" })
Name Format Requirements:
Must include both long name and short name
Format: "Long Name:shortname"
Example: "Backend Developer:bd1"
Short names should be 2-4 characters
This allows agents to be reassigned to different roles as they grow and evolve.
Inputs: agentId (required), newName (required).
update_collectionC
Update collection details (name and/or description).
Inputs: collection_id (required), name, description.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 25 tools
Most tools have clearly distinct purposes, such as memory CRUD, collection management, and agent operations. However, tools like 'analyze', 'consolidate', and 'consolidate_collection' could cause slight confusion due to overlapping analytical functions, though descriptions help differentiate them.
All tool names follow a consistent snake_case pattern, typically using verb_noun structure (e.g., 'add_to_collection', 'create_agent', 'list_collections'). Even simple verbs like 'update' and 'forget' fit the pattern. The 'mcp_' prefix is uniformly used for authentication tools.
The server provides 25 tools covering memory operations, agent management, collections, authentication, and analysis. While slightly above the typical compact range, the number is justified by the breadth of features and each tool serves a specific purpose without unnecessary duplication.
The tool set covers full CRUD for memories and collections, agent lifecycle (create, list, update name), and additional agent-specific features like error learning and reflections. Missing an explicit 'delete_agent' tool and bulk operations, but the core workflows are well-supported.
Related MCP Connectors
Long-term memory for AI assistants. Isolated per-user storage, recall across conversations.
Persistent memory for AI assistants: store, search, and connect knowledge across conversations.
Gives your AI assistant persistent memory and intelligence about your work patterns.
Persistent personal memory for AI assistants — save, search, and recall across every MCP client.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides AI agents with persistent, searchable memory that survives across conversations using semantic search, temporal versioning, and smart organization. Enables long-term context retention and cross-session continuity for AI assistants.14-
- FlicenseAqualityNot gradedmaintenanceProvides long-term memory storage for AI assistants with semantic search, enabling persistent storage of preferences, decisions, and context with relationship tracking between memories.19-
- AlicenseBqualityDmaintenanceProvides persistent memory for AI assistants, enabling storage, recall, and analysis of information across conversations with intelligent memory management.5014 npmMIT
- FlicenseNot gradedqualityBmaintenanceProvides persistent memory for LLM applications, enabling AI assistants to remember user preferences, facts, and conversation history across sessions.2-