Skip to main content
Glama

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.

Python MCP Neo4j Docker License


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 sync

2. Configure

cp .env.example .env
# Edit .env if needed — defaults work out of the box on any OS

3. Add Your Notes

Place markdown or text files in data/notes/:

echo "# My Project Ideas" > data/notes/ideas.md

4. 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.py

5. Run

Option A — Claude Desktop Integration (recommended)

Add to your Claude Desktop config:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/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-mcp with 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 8000

Open Swagger UI at http://localhost:8000/docs.

Tools Reference (25 tools)

Core MCP (6 tools)

Tool

Description

read_notes

List and read personal notes

semantic_search

Query knowledge base by meaning

get_recent_activity

Recent file change events

index_stats

Vector store diagnostics

save_note

Save new notes (memory write-back)

append_note

Append to existing notes

Files MCP (3 tools)

Tool

Description

read_local_file

Read PDF, DOCX, text files

list_local_files

List files in a directory

search_local_files

Search by filename pattern

Browser MCP (5 tools)

Tool

Description

recent_browsing_history

Recent history (Chrome/Edge/Firefox)

most_visited_sites

Top sites by visit count

search_browsing_history

Search by keyword

browsing_stats

Stats across all browsers

detected_browsers

List installed browsers

Code MCP (5 tools)

Tool

Description

recent_commits

Git commit history

commit_details

Single commit details

git_status

Modified/staged/untracked files

repo_statistics

Repo stats and contributors

vscode_recent

Recently opened in VSCode

Conversations MCP (3 tools)

Tool

Description

list_conversation_exports

List exported JSON files

read_conversations

Parse Claude/ChatGPT exports

search_in_conversations

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

upcoming_events

Future calendar events

todays_schedule

Today's events

search_events

Search events by keyword

Setup required: Create a Google Cloud project, enable the Calendar API, download credentials.json to config/, and run the server once to complete OAuth. See Google Calendar API Quickstart.

Knowledge Graph MCP (4 tools)

Tool

Description

graph_search

Find entity and its connections

find_connection

Shortest path between entities

graph_stats

Node/relationship counts

ingest_file

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 template

Privacy

  • 100% local-first — all processing runs on your machine

  • No cloud APIs required — embeddings, search, and graph are local

  • Personal data never committeddata/ is git-ignored

  • Secrets excluded.env, credentials, and tokens are git-ignored

  • Cross-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 tools
append_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYes
contentYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYes
contentYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

TDQS

A4.3/5.0
Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A local-first MCP server that gives AI assistants long-term memory by storing, searching, and recalling notes as Markdown files on your machine.
    14
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP 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.
    3
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Local-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

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