Graph-Mem
Persistent knowledge-graph memory for AI agents, with local semantic search.
Connector by Sathvik-1007 · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/sathvik-1007-graphmem-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 12 read · 8 write · 4 delete · 5 not yet classified
- Secrets
- None asked for
- Install scripts
- Not scanned yet
- Runs as
- Python package
Tools by what they do 29
Read from the source code; the running server may list different tools.
Read 12 · Look things up without changing anything.
audit_graphfind_pathsget_entityget_subgraphgraph_healthlist_entitieslist_graphslist_relationshipsread_graphsearch_nodessearch_observationssuggest_connections
Write 8 · Create, change, send or run things.
add_entitiesadd_observationsadd_relationshipscreate_graphmerge_entitiesupdate_entityupdate_observationupdate_relationship
Delete 4 · Delete, drop, revoke or wipe things.
delete_entitiesdelete_graphdelete_observationsdelete_relationships
Not yet classified 5 · We could not tell from the name and description.
compact_observationsfind_connectionsguardedopen_dashboardswitch_graph
Secrets and settings it asks for
Other settings (environment variables or headers).
GRAPHMEM_DB_PATHGRAPHMEM_EMBEDDING_MODELGRAPHMEM_LOG_LEVELGRAPHMEM_TRAVERSAL_NODE_BUDGET
Files it touches
- Any path the agent passes to its tools
Tools (29)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
add_entitiesAdd entities to the knowledge graph. Entities with the same name and type are automatically merged. Each entity needs: name (str), entity_type (str, e.g. 'person', 'concept', 'place'). Optional: description (str), properties (dict), observations (list[str]).
add_observationsAdd factual observations to an existing entity. Observations are atomic statements about an entity (facts, quotes, events). They are embedded separately for fine-grained semantic search. Args: entity_name: Name of the entity to attach observations to. observations: List of observation text strings. source: Optional provenance string (e.g. session ID, document name).
add_relationshipsAdd relationships (edges) between entities in the knowledge graph. Each relationship needs: source (str, entity name), target (str, entity name), relationship_type (str, e.g. 'knows', 'works_at', 'depends_on'). Optional: weight (float, 0-1, default 1.0), properties (dict). Duplicate edges (same source, target, type) are merged with the higher weight kept.
audit_graphName every entity with a data-quality problem — the thorough, expensive check to run after a bulk import or before a cleanup pass. Unlike read_graph (shape only) and graph_health (fixed-cost signals plus advice), this scans up to 2000 entities and lists the offenders in five categories: disconnected, missing description, missing observations, empty properties, and only-one-relationship. Returns a dict; ``report`` holds the same findings rendered as plain text for direct reading, and ``truncated`` says whether the graph outgrew the scan limit.
compact_observationsAtomic observation compaction — delete old observations and add new ones in one step. Use this to consolidate many observations into fewer, denser ones. You decide what to merge — this tool makes it atomic so no data is lost. Workflow: get_entity → read observations → decide which to keep vs merge → call compact_observations with keep_ids (observations to preserve unchanged) and new_observations (your merged/summarized replacements). Args: entity_name: Name of the entity to compact. keep_ids: Observation IDs to preserve unchanged. All others are deleted. Duplicates are count…
create_graphCreate a new empty knowledge graph. Creates a new .db file in the .graphmem/ directory. The graph can then be activated with switch_graph. Args: name: Name for the new graph. Letters, digits, hyphens, and underscores only, at most 64 characters. Cannot be 'graph' (reserved for the default graph's file — use 'default').
delete_entitiesRemove entities from the knowledge graph by name. Cascades to delete all related observations and relationships. Returns the count of entities actually deleted.
delete_graphDelete a knowledge graph permanently. Removes the .db file and associated WAL/SHM files from the .graphmem/ directory. Cannot delete the currently active graph — switch to a different graph first. Args: name: Name of the graph to delete. Cannot be the active graph.
delete_observationsRemove specific observations from an entity by observation ID. Validates that the observations belong to the specified entity before deleting. Also cleans up associated embeddings. Args: entity_name: Name of the entity the observations belong to. observation_ids: List of observation IDs to delete.
delete_relationshipsRemove relationships between two entities by name. Deletes matching edges from source to target. If relationship_type is provided, only relationships of that type are deleted. Otherwise all relationships between the pair are removed. Args: source: Source entity name. target: Target entity name. relationship_type: Optional — restrict deletion to this edge type.
find_connectionsStart from ONE entity and list everything reachable from it — use this to answer "what is related to X?". Differs from get_subgraph (many seeds, returns entities *and* the edges between them, for visualising a region) and from find_paths (two fixed endpoints, returns the routes between them). This one returns a flat, depth-ordered list with one shortest route to each entity found. Args: entity_name: Starting entity name. max_hops: How far to traverse (clamped to 1-10, default 2). relationship_types: Optional filter on edge types (e.g. ['knows', 'works_at']). direction: 'outgo…
find_pathsShow how TWO named entities connect — use this when you already know both endpoints and want the chain between them. Differs from find_connections (one seed, everything reachable) and from get_subgraph (a region, not a route). Returns up to 10 shortest paths, each a sequence of entities and relationship types. Args: source: Starting entity name. target: Destination entity name. max_hops: Maximum path length to consider (clamped to 1-10, default 5).
get_entityGet full details of a single entity by name, including observations and relationships. Uses fuzzy name resolution: exact match -> case-insensitive -> FTS5 suggestions. At most 50 observations (newest first) and 50 relationships are attached; ``observations_truncated`` / ``relationships_truncated`` say when more exist, and ``observation_count`` / ``relationship_count`` give the true totals. Use search_observations scoped by entity_name to reach the rest.
get_subgraphExtract a whole region around SEVERAL seed entities — use this when you need the edges too, e.g. to draw or reason about a neighbourhood. Differs from find_connections (single seed, flat list of reachable entities, no edge list) and from find_paths (routes between two named endpoints). Args: entity_names: Seed entity names to expand from. radius: How many hops to expand (clamped to 1-5, default 2). Returns: ``{entities, relationships, truncated}``. At most 200 entities are returned, with relationships restricted to that set; ``truncated`` is true when the region was larg…
graph_healthAsk "does this graph need cleaning?" — returns maintenance signals and a short list of suggested actions, at fixed cost regardless of graph size. Sits between the other two overview tools: read_graph describes the graph's shape and says nothing about quality; audit_graph names every problem entity and scans the whole graph to do it. This one reports counts, the top 5 observation hotspots, up to 10 entities missing descriptions, the top 10 entity types, and what to do about them.
Show 14 more tools
guardedlist_entitiesList all entities in the knowledge graph with optional filtering. Browse entities with pagination support. Useful for discovering what's in the graph without a specific search query, or for iterating over entities of a specific type. Args: entity_type: Optional — filter to only this entity type (e.g. 'person'). limit: Maximum entities to return (default 50, clamped to 1-500). offset: Skip this many entities for pagination (default 0, max 1000000). Returns: Matching entities with their summaries and total count.
list_graphsList all available knowledge graphs with summary statistics. Scans the .graphmem/ directory for .db files. Each file represents a separate knowledge graph. Returns name, entity/relationship/observation counts, file size, and last modified time. The active graph is marked.
list_relationshipsList relationships in the knowledge graph with optional filtering. Browse relationships with pagination. Filter by entity name or relationship type. Returns source/target names and metadata. Args: entity_name: Optional — show only relationships involving this entity. relationship_type: Optional — filter to this relationship type. limit: Maximum relationships to return (default 100, clamped to 1-500). offset: Skip this many relationships for pagination (default 0, max 1000000).
merge_entitiesMerge two entities into one. The source entity is absorbed into the target. All observations and relationships from the source are moved to the target. Duplicate relationships are deduplicated (higher weight kept). The source entity is deleted after the merge.
open_dashboardLaunch the interactive graph-visualisation dashboard and return its URL. Starts a web server that serves a React-based graph explorer backed by the same knowledge graph the MCP server manages. If the dashboard is already running, the existing URL is returned immediately. The dashboard can both read and modify the graph. It binds to localhost only, and the returned URL carries a single-use session token that the browser exchanges for a session — treat that URL as a password and do not paste it anywhere shared. Requires the [ui] optional dependency (pip install graph-mem[ui]). Args: port…
read_graphGet the graph's shape in one cheap call — counts, type distributions, and the most connected and most recently touched entities. Start here to orient yourself in an unfamiliar graph. For maintenance signals (hotspots, missing descriptions, suggested cleanups) use graph_health; for a per-entity quality report naming every problem entity use audit_graph, which is the expensive one. Takes no arguments. Type distributions are capped at top 10, most_connected at top 5, and recent_entities at 5 to keep output compact.
search_nodesSearch the knowledge graph using hybrid semantic + full-text search. Combines vector similarity (cosine distance) and FTS5 keyword matching using Reciprocal Rank Fusion for robust ranking. Returns entities sorted by relevance with their direct relationships. Args: query: Natural language search query. limit: Maximum results to return (default 5, clamped to 1-100). entity_types: Optional filter to specific types (e.g. ['person', 'concept']). include_observations: Whether to include entity observations in results. Raises: GraphMemError: If the search engine or database enc…
search_observationsSearch observations using hybrid semantic + full-text search. Searches the text content of observations (atomic facts attached to entities) using combined vector similarity and FTS5 keyword matching. Useful for finding specific facts, events, or details that may not be reflected in entity names or descriptions. Args: query: Natural language search query. limit: Maximum results to return (default 10, clamped to 1-100). entity_name: Optional — restrict search to observations belonging to this entity.
suggest_connectionsFind potential relationships for an entity by semantic similarity. Solves the "large graph" problem: when you add a new entity, you can't read the whole graph to know what to connect it to. This tool searches for semantically related entities and shows which ones already have relationships vs which are unconnected — giving you concrete suggestions. Args: entity_name: Name of the entity to find connections for. limit: Max suggestions to return (default 10, clamped to 1-100).
switch_graphSwitch the active knowledge graph. Waits for in-flight tool calls to finish, then opens the specified graph and closes the previous one. All subsequent tool calls operate on the new graph. A failure to open the new graph leaves the current one active. Args: name: Name of the graph to switch to. Use 'default' for the default graph (graph.db).
update_entityUpdate fields on an existing entity. Only provided fields are changed. Properties are merged with existing ones (new keys added, existing keys updated). Pass a new description to replace the current one. Pass entity_type to reclassify.
update_observationUpdate the text content of an existing observation in-place. Modifies the observation content directly — does not delete and re-create. Recomputes the embedding for the updated content automatically. Args: entity_name: Name of the entity the observation belongs to. observation_id: ID of the observation to update. content: New text content for the observation.
update_relationshipUpdate an existing relationship between two entities in-place. Modifies weight, type, or properties of an existing edge without deleting and re-creating it. Properties are merged (new keys added, existing keys overwritten). Args: source: Source entity name. target: Target entity name. relationship_type: Current relationship type to identify the edge. new_weight: Optional new weight value (0.0-1.0). new_type: Optional new relationship type string. properties: Optional properties dict to merge into existing properties.
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Weekly downloads
- 31
- Last commit
- Jul 21, 2026 (3 months ago)
- Last release
- Jul 21, 2026 (3 months ago)
- Last package publish
- Jul 21, 2026 (3 months ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.Sathvik-1007/graphmem-mcp- Version
- 1.0.0
- Auth
- No auth
- Packages
- pypi graphmem-mcp
- License
- MIT
- Repository
- github.com/Sathvik-1007/GraphMem-MCP
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
Graph-Mem MCP server. Agent Mart. https://agentmart.dev/connectors/sathvik-1007-graphmem-mcp (last updated 2026-10-24)