Package Exports
- @memoryrelay/mcp-server
- @memoryrelay/mcp-server/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@memoryrelay/mcp-server) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@memoryrelay/mcp-server
MCP server for MemoryRelay - Give your AI agents persistent memory across sessions.
๐ Features
- Persistent Memory: Store and retrieve memories across conversations
- Semantic Search: Find relevant memories using natural language queries
- Batch Operations: Create multiple memories in a single request for optimal performance
- Security Hardened: API key masking, input validation, sanitized errors
- MCP Compliant: Works with Claude Desktop, OpenClaw, and any MCP client
- Fully Tested: 169 test cases covering all functionality
Why MemoryRelay?
| Feature | MemoryRelay | Mem0 | Basic MCP Memory |
|---|---|---|---|
| Semantic Search | Yes | Yes | No |
| Work Sessions | Yes | No | No |
| Architectural Decisions (ADRs) | Yes | No | No |
| Reusable Patterns | Yes | No | No |
| Project Orchestration | Yes | No | No |
| Knowledge Graph (Entities) | Yes | Limited | No |
| Multi-Agent Support | Yes | Yes | No |
| V2 Async Storage (60-600x faster) | Yes | No | No |
| Tools | 44 | ~10 | 3-5 |
MemoryRelay is purpose-built for engineering teams managing complex, long-running projects โ not general-purpose Q&A memory.
Use Cases
- Tech Lead managing 3+ projects โ track architectural decisions across repos, build pattern libraries, understand cross-project dependencies
- DevOps Engineer โ record infrastructure decisions with rationale, store runbooks as reusable patterns, track deployment configurations
- Solo Developer โ build a persistent knowledge base that grows across sessions, link related concepts through entities
- Coding Agent โ auto-capture important context, adopt proven patterns, maintain session continuity across conversations
๐ฆ Installation
Using npx (recommended)
No installation needed - run directly:
npx @memoryrelay/mcp-serverGlobal Installation
npm install -g @memoryrelay/mcp-serverLocal Project Installation
npm install @memoryrelay/mcp-serverโก Quick Start
1. Get Your API Key
Sign up at memoryrelay.ai to get your API key (format: mem_prod_xxxxx).
2. Configure Your MCP Client
For OpenClaw
See docs/OPENCLAW_GUIDE.md for a comprehensive setup guide.
Edit ~/.openclaw/openclaw.json:
{
"mcpServers": {
"memoryrelay": {
"command": "npx",
"args": ["-y", "@memoryrelay/mcp-server"],
"env": {
"MEMORYRELAY_API_KEY": "mem_prod_xxxxx",
"MEMORYRELAY_AGENT_ID": "iris"
}
}
}
}For Claude Desktop (macOS)
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"MemoryRelay": {
"command": "npx",
"args": ["-y", "@memoryrelay/mcp-server"],
"env": {
"MEMORYRELAY_API_KEY": "mem_prod_xxxxx"
}
}
}
}For Claude Desktop (Windows)
On Windows, npx with scoped packages can fail to resolve the bin entry. Install globally first, then use node directly.
Step 1: Install the package globally:
npm install -g @memoryrelay/mcp-serverStep 2: Edit %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"MemoryRelay": {
"command": "node",
"args": ["%APPDATA%\\npm\\node_modules\\@memoryrelay\\mcp-server\\dist\\index.js"],
"env": {
"MEMORYRELAY_API_KEY": "mem_prod_xxxxx"
}
}
}
}Note: Replace
%APPDATA%with your actual path (e.g.,C:\\Users\\YourName\\AppData\\Roaming). You can find it by runningecho %APPDATA%in Command Prompt.
3. Restart Your Client
Restart OpenClaw or Claude Desktop to load the MCP server.
4. Test It Out
Try asking:
- "Remember that I prefer Python over JavaScript"
- "What programming languages do I like?"
- "Create an entity for the MemoryRelay project"
๐ง Configuration
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
MEMORYRELAY_API_KEY |
โ Yes | - | Your API key (starts with mem_) |
MEMORYRELAY_API_URL |
No | https://api.memoryrelay.net |
API base URL (for custom deployments) |
MEMORYRELAY_AGENT_ID |
No | Auto-detected | Agent identifier (auto-generated if not set) |
MEMORYRELAY_TIMEOUT |
No | 30000 |
Request timeout in milliseconds |
MEMORYRELAY_LOG_LEVEL |
No | info |
Logging level (debug, info, warn, error) |
MEMORYRELAY_TOOLS |
No | all |
Comma-separated tool groups to enable (see below) |
OPENCLAW_AGENT_NAME |
No | - | Agent name when running under OpenClaw (used for agent ID detection) |
Tool Groups
Control which tools are exposed via the MEMORYRELAY_TOOLS environment variable:
| Group | Tools | Description |
|---|---|---|
core |
18 tools | Memory CRUD, entities, agents, health, aliases (forget/recall) |
v2 |
3 tools | Async memory storage, status polling, context building |
sessions |
4 tools | Session lifecycle (start, end, recall, list) |
decisions |
4 tools | Decision recording and checking |
patterns |
4 tools | Pattern library (create, search, adopt, suggest) |
projects |
3 tools | Project registration and listing |
relationships |
6 tools | Project graph (add, deps, dependents, related, impact, shared patterns) |
context |
2 tools | Project context, memory promotion |
Examples:
MEMORYRELAY_TOOLS=all(default) โ all tools enabledMEMORYRELAY_TOOLS=core,sessionsโ only core + session toolsMEMORYRELAY_TOOLS=core,relationships,contextโ core + graph tools
Agent ID Detection
The server automatically detects your agent ID from:
MEMORYRELAY_AGENT_IDenvironment variableOPENCLAW_AGENT_NAMEenvironment variable (OpenClaw)- Hostname-based generation (if neither is set)
๐ ๏ธ Available Tools
The MCP server provides 44 tools organized into groups:
Memory Management Tools
memory_store
Store a new memory with optional metadata.
Note: The
agent_idparameter is automatically injected fromMEMORYRELAY_AGENT_IDenvironment variable. You don't need to include it in your request.
Parameters:
content(string, required) - The memory content to store (1-50,000 characters)metadata(object, optional) - Key-value metadata to attach (max 10KB when serialized)
Example:
{
"content": "User prefers Python for data analysis projects",
"metadata": {
"category": "preference",
"topic": "programming"
}
}Returns: Memory object with id, content, agent_id, metadata, created_at, updated_at
Rate Limit: 30 requests per minute
memory_search
Search memories using semantic similarity.
Parameters:
query(string, required) - Natural language search querylimit(number, optional, default: 10) - Maximum results (1-50)threshold(number, optional, default: 0.5) - Minimum similarity score (0-1)
Example:
{
"query": "What are the user's programming preferences?",
"limit": 5,
"threshold": 0.7
}Returns: Array of memory objects with similarity scores
memory_list
List recent memories chronologically.
Parameters:
limit(number, optional, default: 20) - Number of memories to return (1-100)offset(number, optional, default: 0) - Pagination offset
Example:
{
"limit": 10,
"offset": 0
}Returns: Object with memories array, total, limit, offset
memory_get
Retrieve a specific memory by ID.
Parameters:
id(string, required) - Memory UUID
Example:
{
"id": "550e8400-e29b-41d4-a716-446655440000"
}Returns: Memory object
memory_update
Update an existing memory's content or metadata.
Note: Metadata updates are merged with existing metadata, not replaced. To remove a key, explicitly set it to
null.
Parameters:
id(string, required) - Memory UUIDcontent(string, required) - New content (1-50,000 characters)metadata(object, optional) - Updated metadata (merged with existing, max 10KB)
Example:
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"content": "Updated: User prefers Python and TypeScript for data analysis",
"metadata": {
"category": "preference",
"updated": "2026-02-12"
}
}Returns: Updated memory object
memory_delete
Permanently delete a memory.
Parameters:
id(string, required) - Memory UUID
Example:
{
"id": "550e8400-e29b-41d4-a716-446655440000"
}Returns: Success confirmation
Health Check Tool
memory_health
Check API connectivity and server health.
Parameters: None
Example:
{}Returns: Health status object with status, version, latency
๐ Security
This MCP server is designed with security best practices:
API Key Protection
- API keys starting with
mem_are automatically masked in all logs - Keys are never exposed in error messages or debug output
- Environment variables are the only supported authentication method
Input Validation
- All inputs validated using Zod schemas before processing
- UUIDs validated for format correctness
- String lengths enforced (content max 50,000 characters, metadata max 10KB)
- Memory IDs must be valid UUIDs
Error Handling
- Errors sanitized to prevent information leakage
- No internal paths or stack traces exposed to clients
- All errors logged to stderr (stdout reserved for MCP protocol)
STDIO Safety
- All logging strictly to stderr
- STDIO transport properly isolated per MCP specification
For detailed security information, see SECURITY.md.
๐งช Development
Prerequisites
- Node.js 18+ (22+ recommended)
- npm or yarn
Setup
# Clone the repository
git clone https://github.com/memoryrelay/mcp-server.git
cd mcp-server
# Install dependencies
npm install
# Build the project
npm run build
# Run tests
npm test
# Run all tests (including integration)
npm run test:all
# Generate coverage report
npm run test:coverage
# Type checking
npm run type-checkAvailable Scripts
npm run build- Build for productionnpm run dev- Build in watch modenpm test- Run unit testsnpm run test:watch- Run tests in watch modenpm run test:integration- Run integration tests (requires API key)npm run test:server- Run server-specific testsnpm run test:security- Run security-focused testsnpm run test:all- Run all testsnpm run test:coverage- Generate coverage reportnpm run type-check- Run TypeScript type checking
Project Structure
mcp-server/
โโโ src/
โ โโโ index.ts # Entry point with CLI routing
โ โโโ server.ts # MCP server implementation (44 tools)
โ โโโ client.ts # MemoryRelay API client
โ โโโ config.ts # Configuration loader + tool groups
โ โโโ logger.ts # Security-hardened logging
โ โโโ types.ts # TypeScript types
โ โโโ cli/
โ โโโ setup.ts # Interactive setup wizard
โ โโโ test.ts # Connection test command
โโโ tests/
โ โโโ server.test.ts # Server tests
โ โโโ client.test.ts # Client tests
โ โโโ config.test.ts # Config tests
โ โโโ security.test.ts # Security tests
โ โโโ entity.test.ts # Entity tests
โ โโโ e2e-protocol.test.ts # MCP protocol e2e tests
โ โโโ integration.test.ts # Integration tests
โโโ docs/
โ โโโ SECURITY.md # Security documentation
โ โโโ OPENCLAW_GUIDE.md # OpenClaw setup guide
โโโ package.json
โโโ tsconfig.json
โโโ tsup.config.ts
โโโ vitest.config.ts
โโโ eslint.config.js
โโโ CHANGELOG.md
โโโ LICENSE
โโโ README.md๐ Troubleshooting
Server Won't Start
Problem: Failed to start MemoryRelay MCP server
Solutions:
- Verify your API key is set correctly:
echo $MEMORYRELAY_API_KEY
- Check the API key format (should start with
mem_) - Ensure Node.js version is 18+ (
node --version) - Try running with debug logging:
{ "env": { "MEMORYRELAY_LOG_LEVEL": "debug" } }
Connection Errors
Problem: API request failed or timeout errors
Solutions:
- Check internet connectivity
- Verify API URL (if using custom deployment)
- Increase timeout:
{ "env": { "MEMORYRELAY_TIMEOUT": "60000" } }
- Check firewall/proxy settings
Windows: npx Fails with Scoped Package
Problem: 'memoryrelay-mcp' is not recognized when using npx on Windows
Solutions:
- Install globally instead of using
npx:npm install -g @memoryrelay/mcp-server
- Use
nodedirectly in your Claude Desktop config (see Windows setup above) - Verify the global install path:
npm root -g
Tools Not Showing Up
Problem: MCP tools not available in client
Solutions:
- Restart your MCP client (Claude Desktop, OpenClaw)
- Check configuration file syntax (valid JSON)
- Verify the
commandpath is correct - Check client logs for MCP server connection errors
Authentication Errors
Problem: 401 Unauthorized errors
Solutions:
- Verify API key is correct and active
- Check for extra spaces in environment variable
- Ensure key hasn't expired
- Contact support if key should be valid
Validation Errors
Problem: Validation error when calling tools
Solutions:
- Check parameter types match schema (e.g.,
limitshould be number, not string) - Verify required parameters are provided
- Check UUID format for ID parameters
- Ensure string lengths are within limits (e.g., entity names max 200 chars)
Debug Mode
Enable debug logging to see detailed information:
{
"env": {
"MEMORYRELAY_LOG_LEVEL": "debug"
}
}Debug logs go to stderr and include:
- API request/response details (with masked API keys)
- Tool invocation parameters
- Validation errors
- Connection status
Getting Help
- ๐ Full Documentation
- ๐ Report Issues
- ๐ฌ Discussions
- ๐ Security Policy
๐ Testing
The project has comprehensive test coverage:
- 169 test cases covering all functionality
- Unit tests for each component
- Integration tests against live API
- Security-focused tests for API key masking and input validation
- Server protocol tests
Run tests:
# All unit tests
npm test
# With coverage
npm run test:coverage
# Integration tests (requires API key)
MEMORYRELAY_API_KEY=mem_prod_xxx npm run test:integration
# Specific test suites
npm run test:server # Server tests only
npm run test:security # Security tests only๐ License
MIT License - see LICENSE for details
๐ Links
- Documentation: GitHub Repository
- npm Package: @memoryrelay/mcp-server
- Website: memoryrelay.ai
- API: api.memoryrelay.net
- Model Context Protocol: modelcontextprotocol.io
- OpenClaw: openclaw.org
๐ Contributing
Contributions welcome! Please open an issue or pull request on GitHub.
๐ Changelog
v0.2.0 (2026-03-04)
- 39 tools across 7 configurable tool groups (up from 9)
- Session tools:
session_start,session_end,session_recall,session_listโ track development sessions with automatic memory linking - Decision tools:
decision_record,decision_list,decision_supersede,decision_checkโ log architectural decisions with semantic search - Pattern tools:
pattern_create,pattern_search,pattern_adopt,pattern_suggestโ share and reuse conventions across projects - Project tools:
project_register,project_list,project_info,project_contextโ manage project namespaces and load full context - Relationship tools:
project_add_relationship,project_dependencies,project_dependents,project_related,project_impact,project_shared_patternsโ map project dependencies and analyze impact - Context tools:
memory_promoteโ manage memory importance tiers (hot/warm/cold) - Tool group configuration:
MEMORYRELAY_TOOLSenv var to selectively enable tool groups - Session-aware descriptions: Tool descriptions dynamically show active session context
- Server instructions: Recommended workflow guidance via MCP protocol instructions field
- 169 test cases with full coverage
v0.1.0 (2026-02-12)
- Initial release
- 9 MCP tools for memory and entity management
- Semantic search with configurable thresholds
- Entity linking for knowledge graphs
- Security hardened with API key masking and input validation
- 102 test cases with full coverage
- Support for OpenClaw and Claude Desktop
Made with โค๏ธ by the MemoryRelay Team