Skip to main content

Memories MCP Server

Any memory folder can optionally be exposed as an MCP (Model Context Protocol) server. When enabled, external tools - Cursor, Claude Code, custom scripts, or any MCP-compatible client - can read from and write to that folder directly using the same operations available inside Aisle workflows.

This is separate from using memories as a RAG source in workflows. The MCP server is for external agents and tools that need to access Aisle memory from outside the platform.

To enable it, open the folder's Settings and turn on Enable External MCP Servers.

Connecting

Each memory folder has a dedicated MCP endpoint:

https://app.aisle.sh/mcp/memories
Authorization: Bearer <your-access-key>

The access key determines which folder the connection targets. One key grants access to one folder.

To get your connection details:

  1. Navigate to Tools > Memories
  2. Open the folder you want to connect
  3. Click Connect via MCP
  4. Copy the endpoint URL and bearer token

In your MCP client (for example, Claude Code's .mcp.json):

{
"mcpServers": {
"my-knowledge-base": {
"url": "https://app.aisle.sh/mcp/memories",
"headers": {
"Authorization": "Bearer <your-access-key>"
}
}
}
}

Available Tools

Once connected, the following tools are available:

create_memory

Create a new memory in the folder.

ParameterRequiredDescription
nameYesName for the memory
contentYesMarkdown content
metadataNoKey/value pairs for filtering
vector_descriptionNoDescription used for embedding instead of raw content

update_memory

Update an existing memory.

ParameterRequiredDescription
recordIdYesID of the memory to update
contentNoNew content
metadataNoUpdated metadata
operationNoreplace (default) or append
vector_descriptionNoUpdated embedding description

Use append to add to existing content without overwriting it - useful for accumulating notes over time.

find_memory

Retrieve a specific memory by ID or name.

ParameterRequiredDescription
recordIdEitherMemory ID
nameEitherExact memory name

query_memories

Filter memories by metadata. All conditions are AND-combined.

ParameterRequiredDescription
nameNoFilter by exact name match
metadataNoArray of {key, value} pairs to match

Example: find all memories where status = active and category = billing:

{
"metadata": [
{ "key": "status", "value": "active" },
{ "key": "category", "value": "billing" }
]
}

Semantic search across the folder's indexed content.

ParameterRequiredDescription
queryYesNatural language search query
limitNoMax results to return (1-100, default 10)
similarity_thresholdNoMinimum match score (0.0-1.0, default 0.7)

Returns matching chunks with their source document info and a similarity score. Requires the folder to have Generate Embeddings enabled.

get_propositions

Return the extracted facts (propositions) for a specific memory.

ParameterRequiredDescription
recordIdYesMemory ID

Returns an array of atomic fact strings extracted from the memory content.

list_records

Return a lightweight list of all memories in the folder, with optional metadata filtering.

ParameterRequiredDescription
metadataNoFilter array (same format as query_memories)

Returns [{id, name, created_at}] - no content, for fast enumeration.

Use Cases

Shared team knowledge base - store research, decisions, and context in a memory folder. Connect Claude Code or Cursor to the folder so your tools can search and reference it while you work.

Long-term agent memory - connect an external agent to a memory folder. The agent calls vector_search to recall relevant past context, and create_memory or update_memory to record new findings.

Cross-tool context - write summaries from one tool (e.g., a meeting bot), search them from another (e.g., a coding assistant). The memory folder acts as a shared context layer between tools.

RAG for custom applications - use vector_search as the retrieval step in a retrieval-augmented generation pipeline. Your application queries the folder, injects the results into a prompt, and calls an LLM. The folder handles chunking, embedding, and similarity search.

Notes

  • One access key grants access to one folder. Create separate keys for separate folders.
  • Vector search only works on folders with Generate Embeddings enabled. Embeddings are generated in the background after each memory is created or updated - allow a few seconds before searching newly added content.
  • The vector_description field on individual memories lets you control what gets embedded. If a memory is long or has noisy content, set a concise description that captures what it is about. The description is used for embedding instead of the full content.