memoryrelay-mcp-server
v0.1.4
Published
MCP server for MemoryRelay - persistent memory for AI agents
Downloads
355
Maintainers
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
- Entity Management: Create and link entities (people, projects, concepts) for knowledge graphs
- Security Hardened: API key masking, input validation, sanitized errors
- MCP Compliant: Works with Claude Desktop, OpenClaw, and any MCP client
- Fully Tested: 102+ test cases covering all functionality
📦 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.net to get your API key (format: mem_prod_xxxxx).
2. Configure Your MCP Client
For OpenClaw
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
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"memoryrelay": {
"command": "npx",
"args": ["-y", "@memoryrelay/mcp-server"],
"env": {
"MEMORYRELAY_API_KEY": "mem_prod_xxxxx"
}
}
}
}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) |
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 9 tools for memory and entity management:
Memory Management Tools
memory_store
Store a new memory with optional metadata.
Parameters:
content(string, required) - The memory content to storemetadata(object, optional) - Key-value metadata to attach
Example:
{
"content": "User prefers Python for data analysis projects",
"metadata": {
"category": "preference",
"topic": "programming"
}
}Returns: Memory object with id, content, metadata, created_at, updated_at
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.
Parameters:
id(string, required) - Memory UUIDcontent(string, required) - New contentmetadata(object, optional) - Updated metadata (replaces existing)
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
Entity Management Tools
entity_create
Create a named entity for the knowledge graph.
Parameters:
name(string, required) - Entity name (1-200 characters)type(enum, required) - One of:person,place,organization,project,concept,othermetadata(object, optional) - Key-value metadata
Example:
{
"name": "MemoryRelay Project",
"type": "project",
"metadata": {
"status": "active",
"started": "2026-01"
}
}Returns: Entity object with id, name, type, metadata, created_at
entity_link
Link an entity to a memory to establish relationships.
Parameters:
entity_id(string, required) - Entity UUIDmemory_id(string, required) - Memory UUIDrelationship(string, optional, default: "mentioned_in") - Relationship type
Example:
{
"entity_id": "650e8400-e29b-41d4-a716-446655440001",
"memory_id": "550e8400-e29b-41d4-a716-446655440000",
"relationship": "relates_to"
}Returns: Success confirmation with link details
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
- Entity names sanitized to prevent XSS attacks
- String lengths enforced (e.g., entity names max 200 characters)
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/Alteriom/ai-memory-service.git
cd ai-memory-service/mcp
# 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/
├── src/
│ ├── index.ts # Entry point
│ ├── server.ts # MCP server implementation
│ ├── client.ts # MemoryRelay API client
│ ├── config.ts # Configuration loader
│ ├── logger.ts # Logging utilities
│ └── types.ts # TypeScript types
├── tests/
│ ├── server.test.ts # Server tests
│ ├── client.test.ts # Client tests
│ ├── config.test.ts # Config tests
│ ├── security.test.ts # Security tests
│ └── integration.test.ts # Integration tests
├── docs/
│ └── SECURITY.md # Security documentation
├── package.json
├── tsconfig.json
├── vitest.config.ts
└── 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
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
📊 Testing
The project has comprehensive test coverage:
- 102+ 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
- MemoryRelay API: api.memoryrelay.net
- Model Context Protocol: modelcontextprotocol.io
- OpenClaw: openclaw.org
🙏 Contributing
Contributions welcome! Please see CONTRIBUTING.md for guidelines.
📝 Changelog
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 Alteriom
