memory-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., "@memory-mcpSearch my notes for project ideas"
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.
Personal MCP Ecosystem
A modular, local-first infrastructure that exposes your personal data — files, notes, browser history, code activity, conversations — as unified semantic context via the Model Context Protocol (MCP).
Any AI agent can plug into this and instantly know you.
Features
Capability | Description |
Semantic Search | Query your notes by meaning using ChromaDB + sentence-transformers |
Knowledge Graph | Neo4j-backed entity extraction with relationship mapping |
Memory Write-back | AI agents can save new notes and append to existing ones |
File Reader | Read PDFs, DOCX, Markdown, code files from anywhere on disk |
Browser History | Search Chrome, Edge, and Firefox history (auto-detected) |
Code Activity | Git commits, repo stats, and VSCode recent files |
Conversations | Parse exported Claude & ChatGPT conversation JSON files |
Calendar | Google Calendar integration via OAuth 2.0 (requires setup) |
Event Logger | Real-time file change tracking via watchdog |
Unified Gateway | FastAPI + LangGraph agent that routes queries across all sources |
Incremental Indexing | Only re-indexes new/modified files — no full rebuilds needed |
Related MCP server: context-hub-mcp
Architecture
┌──────────────────────────────────────────────────────────────┐
│ Unified Gateway (:8000) │
│ FastAPI + LangGraph Agent Pipeline │
│ analyze → execute → aggregate → rank │
├──────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────────────┐ │
│ │ Core MCP │ │Files MCP │ │ Browser │ │ Code MCP │ │
│ │ │ │ │ │ MCP │ │ │ │
│ │• Notes │ │• PDF │ │• Chrome │ │• Git commits │ │
│ │• Search │ │• DOCX │ │• Edge │ │• Repo stats │ │
│ │• Events │ │• Text │ │• Firefox │ │• VSCode recent │ │
│ │• Save │ │ │ │ │ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ └────────────────┘ │
│ │
│ ┌──────────────────┐ ┌──────────────────────────────────┐ │
│ │ Conversations MCP│ │ Knowledge Graph MCP │ │
│ │ │ │ │ │
│ │• Claude exports │ │• Entity extraction (regex-based) │ │
│ │• ChatGPT exports │ │• Graph search (Neo4j) │ │
│ │• Search & parse │ │• Path finding │ │
│ └──────────────────┘ └──────────────────────────────────┘ │
│ │
├──────────────────────────────────────────────────────────────┤
│ ChromaDB (vectors) │ Neo4j (graph) │ SQLite (events) │
└──────────────────────────────────────────────────────────────┘Quick Start
Prerequisites
Python 3.11+
uv — Python package manager
Docker — for Neo4j (optional)
A supported browser (Chrome, Edge, or Firefox) — for browser history (optional)
1. Clone & Install
git clone https://github.com/Shaktisinhchavda/memory-mcp.git
cd memory-mcp
uv sync2. Configure
cp .env.example .env
# Edit .env if needed — defaults work out of the box on any OS3. Add Your Notes
Place markdown or text files in data/notes/:
echo "# My Project Ideas" > data/notes/ideas.md4. Index & Build
# Index notes into ChromaDB (incremental — only new/modified files)
uv run python scripts/index_notes.py
# Full rebuild (if needed)
uv run python scripts/index_notes.py --force
# Start Neo4j (optional — for knowledge graph)
docker compose up -d
# Build knowledge graph from notes
uv run python scripts/build_graph.py5. Run
Option A — Claude Desktop Integration (recommended)
Add to your Claude Desktop config:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"memory-mcp": {
"command": "uv",
"args": ["--directory", "/path/to/memory-mcp", "run", "python", "core_mcp/server.py"]
},
"files-mcp": {
"command": "uv",
"args": ["--directory", "/path/to/memory-mcp", "run", "python", "connectors/files_mcp/server.py"]
},
"browser-mcp": {
"command": "uv",
"args": ["--directory", "/path/to/memory-mcp", "run", "python", "connectors/browser_mcp/server.py"]
},
"code-mcp": {
"command": "uv",
"args": ["--directory", "/path/to/memory-mcp", "run", "python", "connectors/code_mcp/server.py"]
},
"conversations-mcp": {
"command": "uv",
"args": ["--directory", "/path/to/memory-mcp", "run", "python", "connectors/conversations_mcp/server.py"]
},
"graph-mcp": {
"command": "uv",
"args": ["--directory", "/path/to/memory-mcp", "run", "python", "knowledge_graph/server.py"]
}
}
}Replace
/path/to/memory-mcpwith the actual absolute path to this project.
Option B — Unified Gateway (HTTP API)
uv run uvicorn gateway.server:app --host 127.0.0.1 --port 8000Open Swagger UI at http://localhost:8000/docs.
Tools Reference (25 tools)
Core MCP (6 tools)
Tool | Description |
| List and read personal notes |
| Query knowledge base by meaning |
| Recent file change events |
| Vector store diagnostics |
| Save new notes (memory write-back) |
| Append to existing notes |
Files MCP (3 tools)
Tool | Description |
| Read PDF, DOCX, text files |
| List files in a directory |
| Search by filename pattern |
Browser MCP (5 tools)
Tool | Description |
| Recent history (Chrome/Edge/Firefox) |
| Top sites by visit count |
| Search by keyword |
| Stats across all browsers |
| List installed browsers |
Code MCP (5 tools)
Tool | Description |
| Git commit history |
| Single commit details |
| Modified/staged/untracked files |
| Repo stats and contributors |
| Recently opened in VSCode |
Conversations MCP (3 tools)
Tool | Description |
| List exported JSON files |
| Parse Claude/ChatGPT exports |
| Search by keyword |
Note: Conversation support is export-based. Export your Claude or ChatGPT conversations as JSON and place them in
data/conversations/. Live sync is not supported due to API limitations.
Calendar MCP (3 tools)
Tool | Description |
| Future calendar events |
| Today's events |
| Search events by keyword |
Setup required: Create a Google Cloud project, enable the Calendar API, download
credentials.jsontoconfig/, and run the server once to complete OAuth. See Google Calendar API Quickstart.
Knowledge Graph MCP (4 tools)
Tool | Description |
| Find entity and its connections |
| Shortest path between entities |
| Node/relationship counts |
| Extract entities into graph |
Technical Details
Entity Extraction
The knowledge graph uses regex and pattern-based extraction (no LLM required):
People: Capitalized multi-word names (e.g., "John Smith")
Technologies: Matched against a curated keyword list (56 terms)
Topics: Extracted from markdown headers
Projects: Detected by naming patterns (e.g., "VizDataAI", "FastAPI")
Tasks: Parsed from
- [ ]/- [x]markdown checkboxes
This is intentionally lightweight and local-only. For higher accuracy, swap in spaCy NER or an LLM-based extractor in knowledge_graph/extractor.py.
Incremental Indexing
Both index_notes.py and build_graph.py track file modification times in a manifest file. Only new or changed files are re-processed. Use --force for a full rebuild.
Browser Support
The browser connector auto-detects installed browsers:
Browser | Windows | macOS | Linux |
Chrome | Yes | Yes | Yes |
Edge | Yes | Yes | Yes |
Firefox | Yes | Yes | Yes |
Project Structure
memory-mcp/
├── core_mcp/ # Phase 1 — Core MCP server
│ ├── server.py # Main MCP server (stdio)
│ ├── tools/ # Notes + search + write-back tools
│ ├── vector_store/ # ChromaDB integration
│ └── event_logger/ # File watcher + SQLite
├── connectors/ # Phase 2 — Data connectors
│ ├── files_mcp/ # PDF, DOCX, text reader
│ ├── browser_mcp/ # Chrome, Edge, Firefox history
│ ├── calendar_mcp/ # Google Calendar (OAuth)
│ ├── code_mcp/ # Git + VSCode activity
│ └── conversations_mcp/ # Claude/ChatGPT exports
├── knowledge_graph/ # Phase 3 — Neo4j graph
│ ├── extractor.py # Entity extraction (regex-based)
│ ├── graph_store.py # Neo4j CRUD + search
│ └── server.py # Graph MCP server
├── gateway/ # Phase 4 — Unified gateway
│ ├── agent.py # LangGraph orchestrator
│ ├── router.py # Smart query router
│ ├── ranker.py # Multi-signal ranking
│ ├── context.py # PersonalContext model
│ └── server.py # FastAPI gateway
├── scripts/ # Utility scripts
│ ├── index_notes.py # Build vector index (incremental)
│ ├── build_graph.py # Build knowledge graph
│ └── start_watcher.py # Start file watcher
├── data/ # Your personal data (git-ignored)
│ ├── notes/ # Markdown notes
│ ├── files/ # Documents
│ └── conversations/ # Exported AI chats
├── docker-compose.yml # Neo4j container
├── pyproject.toml # Dependencies
└── .env.example # Config templatePrivacy
100% local-first — all processing runs on your machine
No cloud APIs required — embeddings, search, and graph are local
Personal data never committed —
data/is git-ignoredSecrets excluded —
.env, credentials, and tokens are git-ignoredCross-platform — works on Windows, macOS, and Linux
Known Limitations
Conversations: Export-only (Claude/ChatGPT JSON). No live sync due to API restrictions.
Calendar: Requires a one-time Google Cloud setup for OAuth credentials.
Entity extraction: Uses structural heuristics (word count, length, non-name word filter) to reduce false positives. Still regex-based — for higher accuracy, swap in spaCy NER or an LLM-based extractor in
knowledge_graph/extractor.py.
License
MIT
Available Tools
6 toolsappend_noteA
Append content to an existing note.
Use this to add follow-up context, action items, or updates to an existing note without overwriting it.
Args: filename: Name of the existing note file. content: Content to append.
Returns: JSON string with updated file metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | ||
| content | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses append behavior and return type, but lacks details on error handling (e.g., missing file), permissions, or side effects beyond what is implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise, front-loaded with purpose, and structured with Args/Returns sections. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given tool simplicity (2 params, no nested objects, clear output schema), description covers key aspects: action, use case, parameter purpose, and return type. Could mention edge cases but sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but description provides basic explanations for each parameter. However, they are minimal (e.g., 'Name of the existing note file'), adding limited value beyond schema property names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Append content' and resource 'existing note', with clear examples like 'add follow-up context, action items, or updates'. Distinguishes from sibling 'save_note' by emphasizing no overwrite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (adding to existing note) and what it does not do (overwrite). Implicitly contrasts with save_note, but no explicit when-not-to-use or alternative names mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_activityA
Get recent file system activity from watched directories.
Shows the latest file changes (created, modified, deleted, moved) in your notes and files directories. Useful for understanding what you've been working on recently.
Args: limit: Number of recent events to return (default 20, max 100).
Returns: JSON string with recent file events and timestamps.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the tool's behavior: it watches directories, returns file events (created, modified, deleted, moved), and provides timestamps. It is transparent about the read-only nature, though it could mention if there is any time limit on 'recent'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the purpose, and every sentence adds value. It includes a clear Args section and Returns note, with no redundancy or unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter) and the presence of an output schema (though not shown), the description is complete. It explains the input, output format, and behavior sufficiently for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the only parameter (limit) by explaining its purpose ('Number of recent events to return') and providing default (20) and maximum (100). Since schema coverage is 0%, this is essential and well done.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets recent file system activity from watched directories, with examples of file changes (created, modified, deleted, moved). This clearly distinguishes it from sibling tools that focus on notes (read_notes, save_note, semantic_search) or stats (index_stats).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a use case: 'Useful for understanding what you've been working on recently.' It implies when to use (to see recent activity), but does not explicitly state when not to use or mention alternatives. The guidance is clear but lacks exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
index_statsA
Get statistics about the vector search index.
Shows how many documents/chunks are indexed, which embedding model is being used, and where the data is stored.
Returns: JSON string with index statistics.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It correctly states it returns a JSON string with statistics, implying a read-only operation, but does not disclose any side effects, auth requirements, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: a single sentence for purpose, two bullet-like details, and a return type line. Every sentence adds value with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema, the description need not detail return values, but it helpfully lists key fields. For a simple stat tool with no parameters, the description is fully adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema coverage is 100% by default. The description adds value by explaining the output fields beyond what the schema (empty) provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Get' and resource 'statistics about the vector search index', listing concrete items (documents/chunks, embedding model, storage location). No sibling tools overlap, providing clear differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose is clear, but no explicit guidance on when to use versus alternatives is provided. However, given the simple nature and lack of overlapping siblings, the context is implicitly clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_notesA
Read personal notes from the local filesystem.
If no filename is provided, lists all available notes with metadata. If a filename is provided, returns the full content of that note.
Args: filename: Optional. Name of the note file to read (e.g. "ideas.md"). If omitted, returns a list of all available notes.
Returns: JSON string with note content or list of available notes.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the read-only nature (from local filesystem) and the two operational modes, including return format. However, it does not mention error behavior (e.g., if file does not exist) or performance considerations. This is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It starts with a clear summary, then uses bullet-like paragraphs for args and returns. Every sentence provides useful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (though not provided), the description provides sufficient information about the return format (JSON string). It covers the core functionality adequately. Minor gaps include lack of error handling details, but overall it is complete for a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, meaning the schema provides no description. The description compensates fully by explaining that filename is optional, gives an example ("ideas.md"), and states the behavioral difference when omitted vs. provided. This adds significant value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: reading personal notes from the local filesystem. It distinguishes two modes (listing or reading a specific note) based on the optional filename parameter. This differentiates it from sibling tools like append_note, save_note, or semantic_search, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains when to use each mode (with or without filename). While it does not provide explicit 'when not to use' or compare directly to alternatives, the context is clear enough for the agent to decide. It could be stronger by noting that save_note or append_note are for writing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_noteA
Save a new note or overwrite an existing one.
Use this to write memories, meeting summaries, conversation notes, or any context back into the personal knowledge base.
Args: filename: Name for the note file (e.g., "meeting-summary.md"). content: Full content to write.
Returns: JSON string with saved file metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | ||
| content | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must compensate. It discloses that the tool can overwrite existing notes (destructive behavior) and returns metadata, but lacks details on authentication, rate limits, or size constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a one-line intro, usage examples, then explicit Args and Returns sections. It is concise yet informative, though the Args could be more terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 string params, output schema exists), the description covers core functionality and return format adequately. It lacks error scenarios or idempotency details, but is sufficient for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description's Args section gives practical meanings: filename is 'Name for the note file (e.g., meeting-summary.md)' and content is 'Full content to write,' adding value beyond the schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Save a new note or overwrite an existing one,' specifying the action and resource. It distinguishes from sibling tools like append_note and read_notes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete examples of when to use this tool (e.g., writing memories, meeting summaries), but does not explicitly state when not to use it or directly contrast with alternatives like append_note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
semantic_searchA
Search personal notes and files by semantic meaning.
Uses vector embeddings to find content related to your query, even if the exact words don't match. For example, searching "project deadlines" will find notes about "due dates" or "milestones".
Args: query: Natural language description of what you're looking for. top_k: Number of results to return (1-20, default 5).
Returns: JSON string with ranked search results and relevance scores.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| top_k | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description implies read-only but does not explicitly state side effects, authentication needs, or data impact. Adequate but could be more transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and well-structured: one-liner purpose, brief mechanism explanation, example, then clear Args and Returns sections.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers essential aspects: what, how, parameters, return format. Output schema exists so return details are sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully explains both parameters: query as natural language and top_k with range and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it searches personal notes and files by semantic meaning using vector embeddings, distinguishing it from exact-match tools like read_notes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a usage example and explains when to use (semantic search). Could explicitly state when not to use but sufficiently guides context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct operation: note creation/overwrite (save_note), appending (append_note), reading/list (read_notes), semantic search (semantic_search), index info (index_stats), and recent activity (get_recent_activity). No two tools overlap in purpose.
Most tools follow a verb_noun pattern (append_note, read_notes, save_note, get_recent_activity). However, 'index_stats' uses a noun_noun pattern instead of 'get_index_stats', and 'semantic_search' uses an adjective_noun pattern. Overall, naming is clear but not perfectly uniform.
With 6 tools, the server covers essential operations for a personal knowledge base—creating, reading, appending, searching, monitoring activity, and index statistics—without unnecessary bloat. The count is well-scoped for its purpose.
The tool set provides robust support for saving, reading, appending, searching, and monitoring notes. A notable gap is the lack of a delete/remove tool, which could hinder full lifecycle management. Otherwise, coverage is strong.
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 Connectors
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Personal knowledge base MCP server with semantic search, auto-categorization, metadata extraction
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA local-first MCP server that gives AI assistants long-term memory by storing, searching, and recalling notes as Markdown files on your machine.14MIT
- AlicenseNot gradedqualityDmaintenanceA local-first MCP server that turns a .context/ folder of markdown files into a searchable knowledge layer for AI coding agents.122MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that provides semantic memory with search, related-content traversal, and write-back capabilities, all powered by local embeddings of your notes, documents, and chat histories.3MIT
- AlicenseNot gradedqualityAmaintenanceLocal-first MCP server for retrieval over markdown wikilink vaults, offering hybrid vector+lexical search, note reading, neighbor expansion, and recent activity tracking with fully local embeddings and no network egress.MIT
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/Shaktisinhchavda/memory-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server