Loading connector details…
Loading connector details…
Choose a unique username to continue using AgentHotspot
by ingpoc • Search & Retrieval
An MCP-compatible server that provides project-scoped knowledge graph storage, semantic vector search (Qdrant + OpenAI embeddings), and an interactive Next.js dashboard.
Perform semantic search and retrieval over entities and relationships using OpenAI embeddings stored in Qdrant.
Create, update, and query project-scoped knowledge graphs with relationship mapping, observations, and strength scoring.
Integrate with MCP-compatible clients (e.g., Claude Desktop, Cursor) to run context-aware sessions and tools without HTTP port conflicts.
This repository implements an MCP server that manages entities, relationships, and observations across multiple projects while using Qdrant for high-performance vector storage and OpenAI for embeddings. It supports conflict-free multi-client usage (each client spawns its own MCP process communicating over stdio) and exposes an optional Next.js dashboard for graph visualization, analytics, and natural-language queries. The server includes a rich set of MCP tools for entity/relationship management, vector search, session/context handling, and integrates with MCP-compatible AI clients like Claude Desktop or Cursor. Benefits include semantic search, project isolation, and the ability to run UI and API services together or separately.
Store new memories. Use this to remember people, projects, concepts, or any information worth persisting. AIM (AI Memory) provides persistent memory for AI assistants. The 'aim_memory_' prefix groups all memory tools together. WHAT'S STORED: Memories have a name, type (person/project/concept/etc.), and observations (facts about them). DATABASES: Use the 'context' parameter to organize memories into separate graphs: - Leave blank: Uses the master database (default for general information) - Any name: Creates/uses a named database ('work', 'personal', 'health', 'research', etc.) - New databases are created automatically - no setup required - IMPORTANT: Use consistent, simple names - prefer 'work' over 'work-stuff' STORAGE LOCATIONS: Files are stored as JSONL (e.g., memory.jsonl, memory-work.jsonl): - Project-local: .aim directory in project root (auto-detected if exists) - Global: User's configured --memory-path directory - Use 'location' parameter to override: 'project' or 'global' RETURNS: Array of created entities. EXAMPLES: - Master database (default): aim_memory_store({entities: [{name: "John", entityType: "person", observations: ["Met at conference"]}]}) - Work database: aim_memory_store({context: "work", entities: [{name: "Q4_Project", entityType: "project", observations: ["Due December 2024"]}]}) - Master database in global location: aim_memory_store({location: "global", entities: [{name: "John", entityType: "person", observations: ["Met at conference"]}]}) - Work database in project location: aim_memory_store({context: "work", location: "project", entities: [{name: "Q4_Project", entityType: "project", observations: ["Due December 2024"]}]})
Link two memories together with a relationship. Use this to connect related information. RELATION STRUCTURE: Each link has 'from' (subject), 'relationType' (verb), and 'to' (object). - Use active voice verbs: "manages", "works_at", "knows", "attended", "created" - Read as: "from relationType to" (e.g., "Alice manages Q4_Project") - Avoid passive: use "manages" not "is_managed_by" IMPORTANT: Both 'from' and 'to' entities must already exist in the same database. RETURNS: Array of created relations (duplicates are ignored). DATABASE: Relations are created in the specified 'context' database, or master database if not specified. EXAMPLES: - aim_memory_link({relations: [{from: "John", to: "TechConf2024", relationType: "attended"}]}) - aim_memory_link({context: "work", relations: [{from: "Alice", to: "Q4_Project", relationType: "manages"}]}) - Multiple: aim_memory_link({relations: [{from: "John", to: "Alice", relationType: "knows"}, {from: "John", to: "Acme_Corp", relationType: "works_at"}]})
Add new facts to an existing memory. Use this to append information to something already stored. IMPORTANT: Memory must already exist - use aim_memory_store first. Throws error if not found. RETURNS: Array of {entityName, addedObservations} showing what was added (duplicates are ignored). DATABASE: Adds to entities in the specified 'context' database, or master database if not specified. EXAMPLES: - aim_memory_add_facts({observations: [{entityName: "John", contents: ["Lives in Seattle", "Works in tech"]}]}) - aim_memory_add_facts({context: "work", observations: [{entityName: "Q4_Project", contents: ["Behind schedule", "Need more resources"]}]})
Forget memories. Removes memories and their associated links. DATABASE SELECTION: Entities are deleted from the specified database's knowledge graph. LOCATION OVERRIDE: Use the 'location' parameter to force deletion from 'project' (.aim directory) or 'global' (configured directory). Leave blank for auto-detection. EXAMPLES: - Master database (default): aim_memory_forget({entityNames: ["OldProject"]}) - Work database: aim_memory_forget({context: "work", entityNames: ["CompletedTask", "CancelledMeeting"]}) - Master database in global location: aim_memory_forget({location: "global", entityNames: ["OldProject"]}) - Personal database in project location: aim_memory_forget({context: "personal", location: "project", entityNames: ["ExpiredReminder"]})
Remove specific facts from a memory. Keeps the memory but removes selected observations. DATABASE SELECTION: Observations are deleted from entities within the specified database's knowledge graph. LOCATION OVERRIDE: Use the 'location' parameter to force deletion from 'project' (.aim directory) or 'global' (configured directory). Leave blank for auto-detection. EXAMPLES: - Master database (default): aim_memory_remove_facts({deletions: [{entityName: "John", observations: ["Outdated info"]}]}) - Work database: aim_memory_remove_facts({context: "work", deletions: [{entityName: "Project", observations: ["Old deadline"]}]}) - Master database in global location: aim_memory_remove_facts({location: "global", deletions: [{entityName: "John", observations: ["Outdated info"]}]}) - Health database in project location: aim_memory_remove_facts({context: "health", location: "project", deletions: [{entityName: "Exercise", observations: ["Injured knee"]}]})
Scores are informational only and provided “as is” without warranty. AgentHotspot assumes no liability for actions taken based on these ratings.