Skip to main content
Glama

Servidor MCP de Cognee

Instalación manual

Un proyecto de servidor MCP

  1. Clonar el repositorio de Cognee

  2. Instalar dependencias

brew install uv
cd cognee-mcp
uv sync --dev --all-extras --reinstall
  1. Activar el venv con

source .venv/bin/activate
  1. Agregue el nuevo servidor a su configuración de Claude:

El archivo debe estar ubicado aquí: ~/Library/Application\ Support/Claude/

cd ~/Library/Application\ Support/Claude/

Debe crear claude_desktop_config.json en esta carpeta si no existe. Asegúrese de agregar sus rutas y la clave API de LLM al archivo a continuación. Use el editor de su elección, por ejemplo Nano:

nano claude_desktop_config.json
{
	"mcpServers": {
		"cognee": {
			"command": "/Users/{user}/cognee/.venv/bin/uv",
			"args": [
        "--directory",
        "/Users/{user}/cognee/cognee-mcp",
        "run",
        "cognee"
      ],
      "env": {
        "ENV": "local",
        "TOKENIZERS_PARALLELISM": "false",
        "LLM_API_KEY": "sk-"
      }
		}
	}
}

Reinicie su escritorio Claude.

Instalación mediante herrería

Para instalar Cognee para Claude Desktop automáticamente a través de Smithery :

npx -y @smithery/cli install cognee --client claude

Defina la herramienta cognify en server.py Reinicie su escritorio Claude.

Para utilizar el depurador, ejecute:

mcp dev src/server.py

Inspector abierto con tiempo de espera transcurrido:

http://localhost:5173?timeout=120000

Para aplicar nuevos cambios mientras desarrollas cognee necesitas hacer lo siguiente:

  1. poetry lock en la carpeta Cognee

  2. uv sync --dev --all-extras --reinstall

  3. mcp dev src/server.py

Desarrollo

Para utilizar la compilación local de Cognee, ejecute en la raíz del repositorio de Cognee:

poetry build -o ./cognee-mcp/sources

Una vez finalizado el proceso de compilación, cambie la dependencia de la biblioteca cognee dentro de cognee-mcp/pyproject.toml de

cognee[postgres,codegraph,gemini,huggingface]==0.1.38

a

cognee[postgres,codegraph,gemini,huggingface]

Después de eso, agregue el siguiente fragmento al mismo archivo ( cognee-mcp/pyproject.toml ).

[tool.uv.sources]
cognee = { path = "sources/cognee-0.1.38-py3-none-any.whl" }

Available Tools

5 tools
call_toolA

Call a tool by name with the given arguments.

Use this to execute tools discovered via search_tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe name of the tool to call
argumentsNo

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not mention potential side effects, required permissions, or the fact that this tool may execute arbitrary actions. This lack of transparency is risky for an agent.

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?

Two concise sentences with no redundant information. The description is efficient and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains the basic purpose and links to search_tools, but it lacks details on error handling, return values, or behavioral constraints. Given the tool's generic nature, this is acceptable but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only the 'name' parameter has a description in the schema; 'arguments' is not described. The description adds minimal value by implying arguments are passed, but does not clarify structure or constraints, leaving significant ambiguity.

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 action (call a tool) and the target (by name with arguments), and it is distinct from the sibling tools which perform specific operations like remember or recall.

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?

It explicitly says to use this for executing tools discovered via search_tools, giving a clear use case. It does not elaborate on when not to use it, but the guidance is sufficient for typical scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

forgetA

Delete data from memory.

Can target a single data item, a specific dataset (by name or id), or everything the user owns. Removes data from the relational DB, graph DB, and vector DB.

ParametersJSON Schema
NameRequiredDescriptionDefault
data_idNoUUID of a single data item to delete. Must be paired with `dataset` or `dataset_id` so the owning dataset is unambiguous.
datasetNoDataset name to delete entirely.
dataset_idNoUUID of the dataset to delete entirely, or to scope `data_id`.
everythingNoIf true, delete ALL data across all datasets.

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?

With no annotations, the description carries the behavioral burden. It discloses that records are removed from three types of databases, which is useful. However, it does not mention irreversibility, permission requirements, or potential cascading effects. 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 succinct, leading with the primary action, then the targeting options, and finally the storage impact. No unnecessary words; every sentence adds value.

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?

For a delete operation, it covers the key aspects: what can be deleted, how scope is specified, and which storage layers are affected. It does not explain error scenarios or side effects beyond deletion, but that is not essential given the presence of an output schema.

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?

The schema already documents each parameter at 100% coverage. The description adds overarching semantics: it clarifies that data_id must be paired with a dataset identifier, and distinguishes three targeting modes. This guidance helps the agent correctly combine parameters beyond what individual descriptions provide.

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 begins with 'Delete data from memory', a precise verb+resource pair, and enumerates the three deletion scopes (single item, dataset by name/id, everything). It also specifies that deletion spans relational, graph, and vector databases, clearly distinguishing it from siblings like remember and recall.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for deletion but does not explicitly name alternatives or conditions. It could have said 'Use this instead of remember/recall for removing data' to guide the agent, but the intent is clear from context and sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recallA

Search memory with auto-routing and session awareness.

When session_id is provided without datasets or search_type, searches session cache first by keyword matching. Falls through to the permanent knowledge graph if no session results match.

Auto-routing picks the best search strategy when search_type is not specified.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNatural language query to search for.
top_kNoMaximum results to return (default: 15).
datasetsNoComma-separated dataset names to search within.
session_idNoSession ID for session-first search.
search_typeNoOverride auto-routing with one SearchType name. Completion types (answer written by an LLM): HYBRID_COMPLETION (the default when routing is off), GRAPH_COMPLETION, GRAPH_COMPLETION_COT, GRAPH_COMPLETION_CONTEXT_EXTENSION, GRAPH_COMPLETION_DECOMPOSITION, GRAPH_SUMMARY_COMPLETION, RAG_COMPLETION, TRIPLET_COMPLETION, TEMPORAL, AGENTIC_COMPLETION. Retrieval-only types (no LLM): CHUNKS, CHUNKS_LEXICAL, SUMMARIES, SKILLS, CODE. Other: CYPHER, NATURAL_LANGUAGE, CODING_RULES, GRAPH_REPORT, FEELING_LUCKY. An unknown name is rejected with a validation error.
system_promptNoOverride the synthesis prompt for completion searches. When omitted, falls back to COGNEE_MCP_RECALL_SYSTEM_PROMPT / _FILE if configured on the server.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the behavioral disclosure burden and does it reasonably well by explaining session-first fallback and automatic strategy selection. It does not describe result formatting or failure modes, but those are partly covered by the output schema and the search_type validation note in the schema.

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 compact, front-loaded with the core purpose, and each sentence adds behavior detail without repetition or filler. The paragraph breaks make the routing rules scannable.

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?

For a read-style search tool with a rich input schema and an output schema, the description plus schema covers invocation, routing, fallback, and override behavior. Nothing essential is missing for an agent to select and call the tool correctly.

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 100%, so parameters are already documented; the description adds value by explaining the conditional interaction between session_id, datasets, and search_type beyond the schema's field-level text. It clarifies that search_type is an override of routing and that session behavior changes when session_id is supplied alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Search memory') and identifies the key behaviors ('auto-routing and session awareness'), so an agent can tell it is a retrieval tool. It does not explicitly distinguish recall from the sibling search_tools, keeping it one step below a fully differentiated purpose statement.

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 concrete routing conditions: when session_id is present without datasets or search_type, search the session cache first, then fall through to the knowledge graph; and auto-routing applies when search_type is omitted. It gives clear context for invoking the tool correctly, though it does not mention when to prefer it over sibling tools such as search_tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rememberA

Store data in memory.

Two modes depending on whether session_id is provided:

Without session_id (permanent memory): Runs the full add + cognify pipeline to ingest data and build the knowledge graph, then the self-improvement loop (improve) unless self_improvement=False.

With session_id (session memory): Stores the data in the session cache. Direct mode may also bridge it to the graph in the background; API mode uses typed cache entries and does not bridge to the graph. Omit session_id when the content should be stored as permanent graph memory.

Pass either data (text) or filename + content_base64 (a file upload, up to 10 MB), not both. File uploads are permanent-memory only and don't support session_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoThe text content to store. Mutually exclusive with filename/content_base64.
filenameNoOriginal filename for a file upload. Used to derive the stored document's name. Requires content_base64.
backgroundNoQueue permanent ingestion as a background task and return immediately instead of waiting for the pipeline. Use when the caller has a request deadline shorter than ingestion takes. Ignored with session_id, which is already fast. Errors surface via cognify_status, not the return value.
session_idNoSession ID. Stores in cache; direct mode may also bridge to the graph unless self_improvement is False.
dataset_nameNoTarget dataset name. Defaults to the current MCP client's agent-scoped dataset (e.g. "cursor_vscode_memory"), or "main_dataset" if no client identity is detected.
ontology_keyNoOne or more uploaded ontology keys for extraction (permanent mode only). API mode uses ontologies uploaded by the authenticated API user. Local mode uses the default user's ontology store. Omit to keep the configured server ontology.
custom_promptNoCustom prompt for entity extraction (permanent mode only).
content_base64NoBase64-encoded file content to ingest. Requires filename.
self_improvementNoFalse skips automatic improvement after permanent ingestion; add and cognify still run. In direct session mode, False disables the background session-to-graph bridge. API session entries are cache-only regardless of this flag. Default True.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses significant behavior beyond any schema: it triggers an add+cognify pipeline plus an optional improve loop, warns that API session entries are cache-only and never bridge to the graph, and notes that background-task errors surface via cognify_status rather than the return value. The only minor flaw is referencing 'Direct mode' without defining it, but overall this is highly transparent.

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 organized into a short preamble and two mode paragraphs, front-loading the core purpose before details. Each sentence adds information (pipeline steps, background behavior, file limits), so it earns its length.

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?

The description covers the tool's modes, parameter relationships, background behavior, and file-size cap, and an output schema exists so return values don't need to be spelled out. However, the terms 'Direct mode', 'Local mode', and 'API mode' are used without a single defining explanation, which could leave an agent unsure which mode applies in its context.

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?

The input schema already covers all nine parameters, and the description adds relational context – data and filename/content_base64 are mutually exclusive, background only applies without session_id, and self_improvement controls the bridge in direct session mode. This goes beyond the schema's per-parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action ('Store data in memory.') and then details two storage modes (permanent graph memory via add+cognify pipeline vs session cache), which clearly establishes the tool's function. It does not explicitly contrast with sibling tools like recall or forget, so it just misses the sibling-differentiation bar.

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 explicit when-to-use guidance: use permanent mode when content should be stored as graph memory (omit session_id), and session mode when a session_id is provided. It also states constraints like mutual exclusivity of data vs filename/content_base64 and file uploads being permanent-only. It does not name sibling tools as alternatives, but the guidance is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_toolsA

Search for tools using natural language.

Returns matching tool definitions ranked by relevance, in the same format as list_tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNatural language query to search for tools

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/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 burden. It states that it returns matching tool definitions ranked by relevance, which is a behavioral trait. It also mentions the format is same as list_tools, which is useful. However, it doesn't disclose any side effects, rate limits, or other behavioral details. Given the tool is a search operation, this is adequate but not rich.

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, two sentences, and front-loaded with the purpose. Every sentence adds value: the first states what it does, the second clarifies the return format. No waste.

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?

The tool is simple with one parameter and an output schema. The description explains the return format (same as list_tools) and ranking by relevance. Given the simplicity and the presence of an output schema, the description is complete enough. It could mention that it's a read-only operation, but that's not critical.

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 100%, so the schema already documents the single parameter 'query' as a natural language query. The description adds no additional meaning beyond that. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: searching for tools using natural language. It specifies the action (search) and the resource (tools), and distinguishes it from siblings like list_tools by mentioning the return format. However, it doesn't explicitly differentiate from other sibling tools like call_tool, but the purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: when you need to find tools by natural language query. It mentions the return format is same as list_tools, which gives some context. However, it doesn't explicitly state when to use this vs alternatives, nor does it provide exclusions or alternative tool references. The guidance is minimal but not misleading.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev1.6.1
    • Changedremember2 fields changed
      • changedInput schema / properties / self_improvement / description
        Previous value: -"Run the improve loop (triplet enrichment and, with sessions, the\nsession bridge) after cognify. Permanent mode only; default True.\nPass False for a plain add + cognify ingestion."New value: +"False skips automatic improvement after permanent ingestion; add and\ncognify still run. In direct session mode, False disables the background\nsession-to-graph bridge. API session entries are cache-only regardless\nof this flag. Default True."
      • changedInput schema / properties / session_id / description
        Previous value: -"Session ID. When set, stores in session cache only."New value: +"Session ID. Stores in cache; direct mode may also bridge to the graph\nunless self_improvement is False."
  2. 3 tool updatesv1.6.0
    • Changedforget6 fields changed
      • addedInput schema / properties / data_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / data_id / type
        Removed value: -"string"
      • addedInput schema / properties / dataset / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / dataset / type
        Removed value: -"string"
      • addedInput schema / properties / dataset_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / dataset_id / type
        Removed value: -"string"
    • Changedrecall10 fields changed
      • addedInput schema / properties / datasets / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / datasets / type
        Removed value: -"string"
      • addedInput schema / properties / search_type / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / search_type / description
        Previous value: -"Override auto-routing. Options: GRAPH_COMPLETION,\nGRAPH_COMPLETION_COT, RAG_COMPLETION, CHUNKS, SUMMARIES,\nTEMPORAL, FEELING_LUCKY, etc."New value: +"Override auto-routing with one SearchType name. Completion types\n(answer written by an LLM): HYBRID_COMPLETION (the default when\nrouting is off), GRAPH_COMPLETION, GRAPH_COMPLETION_COT,\nGRAPH_COMPLETION_CONTEXT_EXTENSION, GRAPH_COMPLETION_DECOMPOSITION,\nGRAPH_SUMMARY_COMPLETION, RAG_COMPLETION, TRIPLET_COMPLETION,\nTEMPORAL, AGENTIC_COMPLETION. Retrieval-only types (no LLM):\nCHUNKS, CHUNKS_LEXICAL, SUMMARIES, SKILLS, CODE. Other: CYPHER,\nNATURAL_LANGUAGE, CODING_RULES, GRAPH_REPORT, FEELING_LUCKY.\nAn unknown name is rejected with a validation error."
      • removedInput schema / properties / search_type / type
        Removed value: -"string"
      • addedInput schema / properties / session_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / session_id / type
        Removed value: -"string"
      • addedInput schema / properties / system_prompt / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / system_prompt / type
        Removed value: -"string"
      • changedInput schema / properties / top_k / description
        Previous value: -"Maximum results to return (default: 10)."New value: +"Maximum results to return (default: 15)."
    • Changedremember14 fields changed
      • addedInput schema / properties / content_base64 / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / content_base64 / type
        Removed value: -"string"
      • addedInput schema / properties / custom_prompt / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / custom_prompt / type
        Removed value: -"string"
      • addedInput schema / properties / data / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / data / type
        Removed value: -"string"
      • addedInput schema / properties / dataset_name / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / dataset_name / type
        Removed value: -"string"
      • addedInput schema / properties / filename / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / filename / type
        Removed value: -"string"
      • addedInput schema / properties / ontology_key
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "One or more uploaded ontology keys for extraction (permanent mode only).\nAPI mode uses ontologies uploaded by the authenticated API user. Local\nmode uses the default user's ontology store. Omit to keep the configured\nserver ontology."
        +}
      • addedInput schema / properties / self_improvement
        Added value: +{
        +  "default": true,
        +  "description": "Run the improve loop (triplet enrichment and, with sessions, the\nsession bridge) after cognify. Permanent mode only; default True.\nPass False for a plain add + cognify ingestion.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / session_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / session_id / type
        Removed value: -"string"
  3. 5 tool updatesv1.5.1
    • Changedforget2 fields changed
      • addedInput schema / properties / data_id
        Added value: +{
        +  "default": null,
        +  "description": "UUID of a single data item to delete. Must be paired with `dataset`\nor `dataset_id` so the owning dataset is unambiguous.",
        +  "type": "string"
        +}
      • addedInput schema / properties / dataset_id
        Added value: +{
        +  "default": null,
        +  "description": "UUID of the dataset to delete entirely, or to scope `data_id`.",
        +  "type": "string"
        +}
    • Removedopen_cognee_workspace
    • Changedremember1 field changed
      • addedInput schema / properties / background
        Added value: +{
        +  "default": false,
        +  "description": "Queue permanent ingestion as a background task and return immediately\ninstead of waiting for the pipeline. Use when the caller has a request\ndeadline shorter than ingestion takes. Ignored with session_id, which\nis already fast. Errors surface via cognify_status, not the return\nvalue.",
        +  "type": "boolean"
        +}
    • Removedupload_file_ui
    • Removedvisualize_graph_ui
  4. 13 tool updatesv1.5.0
    • Addedcall_tool
    • Removedcognify_file
    • Removedcreate_dataset_json
    • Changedforget7 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / dataset / description
        Added value: +"Dataset name to delete entirely."
      • removedInput schema / properties / dataset / title
        Removed value: -"Dataset"
      • addedInput schema / properties / everything / description
        Added value: +"If true, delete ALL data across all datasets."
      • removedInput schema / properties / everything / title
        Removed value: -"Everything"
      • removedInput schema / title
        Removed value: -"forgetArguments"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "items": {},
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "type": "object",
        +  "x-fastmcp-wrap-result": true
        +}
    • Removedget_client_info_json
    • Removedlist_dataset_data_json
    • Removedlist_datasets_json
    • Changedopen_cognee_workspace2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / title
        Removed value: -"open_cognee_workspaceArguments"
    • Changedrecall15 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / datasets / description
        Added value: +"Comma-separated dataset names to search within."
      • removedInput schema / properties / datasets / title
        Removed value: -"Datasets"
      • addedInput schema / properties / query / description
        Added value: +"Natural language query to search for."
      • removedInput schema / properties / query / title
        Removed value: -"Query"
      • addedInput schema / properties / search_type / description
        Added value: +"Override auto-routing. Options: GRAPH_COMPLETION,\nGRAPH_COMPLETION_COT, RAG_COMPLETION, CHUNKS, SUMMARIES,\nTEMPORAL, FEELING_LUCKY, etc."
      • removedInput schema / properties / search_type / title
        Removed value: -"Search Type"
      • addedInput schema / properties / session_id / description
        Added value: +"Session ID for session-first search."
      • removedInput schema / properties / session_id / title
        Removed value: -"Session Id"
      • addedInput schema / properties / system_prompt / description
        Added value: +"Override the synthesis prompt for completion searches. When omitted,\nfalls back to COGNEE_MCP_RECALL_SYSTEM_PROMPT / _FILE if configured\non the server."
      • removedInput schema / properties / system_prompt / title
        Removed value: -"System Prompt"
      • addedInput schema / properties / top_k / description
        Added value: +"Maximum results to return (default: 10)."
      • removedInput schema / properties / top_k / title
        Removed value: -"Top K"
      • removedInput schema / title
        Removed value: -"recallArguments"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "items": {},
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "type": "object",
        +  "x-fastmcp-wrap-result": true
        +}
    • Changedremember15 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / content_base64
        Added value: +{
        +  "default": null,
        +  "description": "Base64-encoded file content to ingest. Requires filename.",
        +  "type": "string"
        +}
      • addedInput schema / properties / custom_prompt / description
        Added value: +"Custom prompt for entity extraction (permanent mode only)."
      • removedInput schema / properties / custom_prompt / title
        Removed value: -"Custom Prompt"
      • addedInput schema / properties / data / default
        Added value: +null
      • addedInput schema / properties / data / description
        Added value: +"The text content to store. Mutually exclusive with\nfilename/content_base64."
      • removedInput schema / properties / data / title
        Removed value: -"Data"
      • addedInput schema / properties / dataset_name / description
        Added value: +"Target dataset name. Defaults to the current MCP client's\nagent-scoped dataset (e.g. \"cursor_vscode_memory\"), or\n\"main_dataset\" if no client identity is detected."
      • removedInput schema / properties / dataset_name / title
        Removed value: -"Dataset Name"
      • addedInput schema / properties / filename
        Added value: +{
        +  "default": null,
        +  "description": "Original filename for a file upload. Used to derive the stored\ndocument's name. Requires content_base64.",
        +  "type": "string"
        +}
      • addedInput schema / properties / session_id / description
        Added value: +"Session ID. When set, stores in session cache only."
      • removedInput schema / properties / session_id / title
        Removed value: -"Session Id"
      • removedInput schema / required
        Removed value: -[
        -  "data"
        -]
      • removedInput schema / title
        Removed value: -"rememberArguments"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "items": {},
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "type": "object",
        +  "x-fastmcp-wrap-result": true
        +}
    • Addedsearch_tools
    • Changedupload_file_ui2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / title
        Removed value: -"upload_file_uiArguments"
    • Changedvisualize_graph_ui3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / dataset_name / title
        Removed value: -"Dataset Name"
      • removedInput schema / title
        Removed value: -"visualize_graph_uiArguments"
  5. 4 tool updatesv1.4.1
    • Addedcreate_dataset_json
    • Addedget_client_info_json
    • Addedrecall
    • Addedremember
  6. 4 tool updatesv1.4.0
    • Removedcreate_dataset_json
    • Removedget_client_info_json
    • Removedrecall
    • Removedremember
  7. 1 tool updatev1.0.2
    • Changedrecall1 field changed
      • changedInput schema / properties / top_k / default
        Previous value: -10New value: +15
  8. 11 tool updatesv1.0.1
    • First observedcognify_file
    • First observedcreate_dataset_json
    • First observedforget
    • First observedget_client_info_json
    • First observedlist_dataset_data_json
    • First observedlist_datasets_json
    • First observedopen_cognee_workspace
    • First observedrecall
    • First observedremember
    • First observedupload_file_ui
    • First observedvisualize_graph_ui

TDQS

A4.1/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: remember stores, forget deletes, recall searches, call_tool executes, and search_tools finds tools. No overlap or ambiguity exists between them.

Naming Consistency4/5

Tool names mostly follow a verb pattern, but three are single verbs (remember, forget, recall) while two are verb_noun compounds (call_tool, search_tools). This is a minor inconsistency but still predictable and readable.

Tool Count5/5

Five tools is well within the ideal 3-15 range, and each tool earns its place for a memory management server, covering core operations without excess.

Completeness5/5

The tool surface covers the full memory lifecycle: ingestion (remember), retrieval (recall), and deletion (forget), plus tool discovery and execution for extensibility. No obvious gaps for the stated purpose.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Persistent knowledge memory layer for AI agents. Hybrid semantic + full-text search with pgvector, code dependency graph with blast-radius impact analysis, and incremental indexing for 7 languages. In-process ONNX embeddings, no external API required.
    31 npm
    35
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides persistent knowledge graph memory for AI agents, enabling them to store, recall, and query facts about people, projects, and relationships across sessions.
    MIT
  • F
    license
    Not graded
    quality
    F
    maintenance
    Enables LLMs to store, search, and manage memories with hybrid semantic and keyword search using ChromaDB and Neo4j for persistent memory and knowledge graph capabilities.
    -