edumem-mcp
Click on "Install 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., "@edumem-mcpsave a note that we decided on PostgreSQL for user data"
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.
edumem-mcp
Directory-scoped agent memory using markdown files — an MCP server that gives LLM agents persistent, per-project memory without cluttering their context.
Why edumem-mcp?
Agents forget everything between sessions. Dumping all memories into the context is messy and doesn't scale. edumem-mcp solves this by:
Scoping memory by directory — The agent only sees memories relevant to the workspace it's working in.
Using plain Markdown files — Human-readable, git-friendly, easy to edit or browse manually.
Supporting shared, read-only memories — Configure
--self-memdirectories with global notes, coding conventions, or project knowledge that appear alongside workspace memories.Zero enforced structure — Write any markdown you want; no schemas, no templates, no restrictions.
Related MCP server: mem-persistence
Installation
Note: This package is not yet published to npm. Install directly from the git repository:
Install globally from git
npm install -g github:SkillfulElectro/edumem-mcpOr run with npx (no install)
npx -y github:SkillfulElectro/edumem-mcpClone and build locally
git clone https://github.com/SkillfulElectro/edumem-mcp.git
cd edumem-mcp
npm install
npm run buildConfiguration
Add to your MCP client config (Claude Desktop, Cursor, etc.):
{
"mcpServers": {
"edumem-mcp": {
"command": "npx",
"args": ["-y", "github:SkillfulElectro/edumem-mcp"]
}
}
}⚠️ Important: Do NOT use npm start
When running via an MCP client config, the server communicates over stdin/stdout using JSON-RPC. npm start prints lifecycle banners to stdout (like > edumem-mcp@1.0.0 start), which break the JSON-RPC protocol. Always launch the server directly:
{
"mcpServers": {
"edumem-mcp": {
"command": "npx",
"args": ["-y", "github:SkillfulElectro/edumem-mcp"]
}
}
}Or if running from a local clone:
{
"mcpServers": {
"edumem-mcp": {
"command": "node",
"args": ["/absolute/path/to/edumem-mcp/dist/index.js"]
}
}
}CLI Options
Option | Default | Description |
|
| Name of the per-workspace memory directory |
| (none) | Comma-separated list of absolute paths to directories whose |
| (none) | Default workspace directory. When set, the |
Example with custom options:
{
"mcpServers": {
"edumem-mcp": {
"command": "npx",
"args": [
"-y", "github:SkillfulElectro/edumem-mcp",
"--wname", ".myproject-memory",
"--self-mem", "/Users/alex/global-notes,/Users/alex/team-conventions",
"--workspace", "/Users/alex/projects/myapp"
]
}
}
}How It Works
For any workspace_path the agent is working in, edumem-mcp looks for memory files in:
Workspace memory:
<workspace_path>/.edumem-mcp/*.md(read/write by the agent)Self-mem directories: Any directories passed via
--self-mem(read-only by the agent)
The agent can list, read, write, delete, and search across all sources seamlessly.
Tools
list_memories
List all .md memory files visible from a workspace.
Parameter | Type | Default | Description |
| string | (optional if --workspace set) | The directory to list memories for |
| boolean |
| Include subdirectories of each memory source |
Returns an array of { name, source, size } objects.
read_memory
Read the full content of a memory file by name.
Parameter | Type | Default | Description |
| string | (optional if --workspace set) | Directory context for the read |
| string | (required) | File name (e.g. |
Looks in workspace memory first, then self-mem directories. Returns the raw markdown content.
search_memories
Search across all memory files for a query string (case-insensitive).
Parameter | Type | Default | Description |
| string | (optional if --workspace set) | Directory context for the search |
| string | (required) | Substring to search for |
| boolean |
| Search in subdirectories too |
|
|
| Limit search to a specific source |
Returns an array of { name, source, snippet, line } objects.
write_memory
Create or update a memory file. Only writes to the workspace's own memory directory; cannot modify self-mem files.
Parameter | Type | Default | Description |
| string | (optional if --workspace set) | Where to write the memory |
| string | (required) | File name ( |
| string | (required) | Markdown content to write |
|
|
| Write strategy |
delete_memory
Delete a memory file from the workspace. Cannot delete self-mem files.
Parameter | Type | Default | Description |
| string | (optional if --workspace set) | Where to delete from |
| string | (required) | Name of the file to delete |
Usage Examples
Agent writes a project decision
Tool: write_memory
Args: {
"workspace_path": "/home/alex/projects/myapp",
"memory_name": "decisions/why-postgres",
"content": "## Why PostgreSQL\n\nChose PostgreSQL over MySQL for:\n- Better JSON support\n- Stronger ACID compliance\n- Familiar team experience"
}
Result: Memory "decisions/why-postgres.md" written successfully.Agent recalls past decisions
Tool: list_memories
Args: { "workspace_path": "/home/alex/projects/myapp" }
Result: [
{ "name": "decisions/why-postgres.md", "source": "workspace", "size": 156 },
{ "name": "setup-notes.md", "source": "workspace", "size": 89 }
]
Tool: read_memory
Args: { "workspace_path": "/home/alex/projects/myapp", "memory_name": "decisions/why-postgres.md" }
Result: ## Why PostgreSQL ...Agent searches for anything about "auth"
Tool: search_memories
Args: { "workspace_path": "/home/alex/projects/myapp", "query": "auth" }
Result: [
"[workspace] setup-notes.md:12 — Configured OAuth2 with Google and GitHub",
"[/Users/alex/global-notes] conventions.md:5 — All services must use the auth-gateway"
]Architecture
edumem-mcp/
├── src/
│ ├── index.ts # Entry point: CLI parsing, MCP server, stdio transport
│ ├── memory-service.ts # Core logic: file I/O, path security, source resolution
│ └── tools.ts # MCP tool registrations with Zod schemas
├── dist/ # Compiled JavaScript (published to npm)
├── package.json
├── tsconfig.json
└── README.mdSecurity
All file operations are restricted to allowed memory directories.
Path traversal attacks (e.g.
../../../etc/passwd) are blocked.Self-mem directories are read-only — the agent cannot modify or delete them.
Only
.mdfiles are returned by list/search; other files are ignored.
Development
git clone https://github.com/SkillfulElectro/edumem-mcp.git
cd edumem-mcp
npm install
npm run build # compile TypeScript
npm start # run the compiled server
# or for dev:
npm run dev # run directly with ts-nodeTesting
# Manual stdio test
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | node dist/index.jsLicense
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityBmaintenanceA local-first MCP server that gives AI assistants long-term memory by storing, searching, and recalling notes as Markdown files on your machine.Last updated8MIT
- Alicense-qualityBmaintenancePersistent memory MCP server that stores and retrieves memories in Markdown files, enabling shared context across multiple AI agents with hybrid search and deduplication.Last updatedMIT
- AlicenseAqualityBmaintenanceA self-hosted MCP server that gives AI agents shared, long-term memory over a git-backed folder of markdown, enabling persistent knowledge search, read, and write without a database.Last updated16339MIT
- AlicenseAqualityBmaintenanceMCP server for persistent, cross-session, local-first memory for AI agents, storing memories as Markdown files with SQLite indexing for hybrid search.Last updated24Apache 2.0
Related MCP Connectors
Person-owned, portable AI memory as a remote MCP server, readable and writable by any MCP client.
User-owned memory for AI agents, Copilot, Claude, IDEs, CLIs, and chat apps over remote MCP.
Cloud-hosted MCP server for durable AI memory
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SkillfulElectro/edumem-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server