Skip to main content
Glama
IzumiSy

MCP DuckDB Knowledge Graph Memory Server

by IzumiSy

Сервер памяти графа знаний MCP DuckDB

Тест значок кузнеца Версия НПМЛицензия НПМ

Форк-версия официального сервера памяти Knowledge Graph .

Установка

Установка через Smithery

Чтобы автоматически установить DuckDB Knowledge Graph Memory Server для Claude Desktop через Smithery :

npx -y @smithery/cli install @IzumiSy/mcp-duckdb-memory-server --client claude

Ручная установка

В противном случае добавьте @IzumiSy/mcp-duckdb-memory-server в ваш claude_desktop_config.json вручную ( MEMORY_FILE_PATH необязателен)

{
  "mcpServers": {
    "graph-memory": {
      "command": "npx",
      "args": [
        "-y",
        "@izumisy/mcp-duckdb-memory-server"
      ],
      "env": {
        "MEMORY_FILE_PATH": "/path/to/your/memory.data"
      }
    }
  }
}

Данные, хранящиеся по этому пути, представляют собой файл базы данных DuckDB.

Докер

Строить

docker build -t mcp-duckdb-graph-memory .

Бегать

docker run -dit mcp-duckdb-graph-memory

Related MCP server: Knowledge Graph Memory Server

Использование

Используйте пример инструкции ниже.

Follow these steps for each interaction:

1. User Identification:
   - You should assume that you are interacting with default_user
   - If you have not identified default_user, proactively try to do so.

2. Memory Retrieval:
   - Always begin your chat by saying only "Remembering..." and search relevant information from your knowledge graph
   - Create a search query from user words, and search things from "memory". If nothing matches, try to break down words in the query at first ("A B" to "A" and "B" for example).
   - Always refer to your knowledge graph as your "memory"

3. Memory
   - While conversing with the user, be attentive to any new information that falls into these categories:
     a) Basic Identity (age, gender, location, job title, education level, etc.)
     b) Behaviors (interests, habits, etc.)
     c) Preferences (communication style, preferred language, etc.)
     d) Goals (goals, targets, aspirations, etc.)
     e) Relationships (personal and professional relationships up to 3 degrees of separation)

4. Memory Update:
   - If any new information was gathered during the interaction, update your memory as follows:
     a) Create entities for recurring organizations, people, and significant events
     b) Connect them to the current entities using relations
     b) Store facts about them as observations

Мотивация

Этот проект улучшает исходный сервер памяти MCP Knowledge Graph, заменяя его бэкэнд на DuckDB.

Почему DuckDB?

Оригинальный сервер памяти MCP Knowledge Graph использовал файл JSON в качестве хранилища данных и выполнял поиск в памяти. Хотя этот подход хорошо работает для небольших наборов данных, он создает несколько проблем:

  1. Производительность : производительность поиска в памяти снижается по мере роста набора данных.

  2. Масштабируемость : использование памяти значительно увеличивается при обработке большого количества сущностей и отношений.

  3. Гибкость запросов : сложные запросы и условные поиски трудно реализовать.

  4. Целостность данных : обеспечение атомарности транзакций и операций CRUD является сложной задачей.

Для решения следующих задач была выбрана DuckDB:

  • Быстрая обработка запросов : DuckDB оптимизирован для аналитических запросов и хорошо работает даже с большими наборами данных.

  • Интерфейс SQL : стандартный SQL может использоваться для легкого выполнения сложных запросов.

  • Поддержка транзакций : поддерживает обработку транзакций для сохранения целостности данных.

  • Возможности индексирования : позволяет создавать индексы для повышения производительности поиска.

  • Встроенная база данных : работает внутри приложения, не требуя внешнего сервера базы данных.

Подробности реализации

В данной реализации в качестве внутренней системы хранения данных используется DuckDB, при этом особое внимание уделяется двум ключевым аспектам:

Структура базы данных

Граф знаний хранится в реляционной структуре базы данных, как показано ниже:

erDiagram
    ENTITIES {
        string name PK
        string entityType
    }
    OBSERVATIONS {
        string entityName FK
        string content
    }
    RELATIONS {
        string from_entity FK
        string to_entity FK
        string relationType
    }

    ENTITIES ||--o{ OBSERVATIONS : "has"
    ENTITIES ||--o{ RELATIONS : "from"
    ENTITIES ||--o{ RELATIONS : "to"

Такая конструкция схемы обеспечивает эффективное хранение и извлечение компонентов графа знаний, сохраняя при этом взаимосвязи между сущностями, наблюдениями и отношениями.

Реализация нечеткого поиска

Реализация объединяет SQL-запросы с Fuse.js для гибкого поиска сущностей:

  • Запросы DuckDB SQL извлекают базовые данные из базы данных

  • Fuse.js предоставляет возможности нечеткого сопоставления на основе извлеченных данных

  • Этот гибридный подход позволяет выполнять как структурированные запросы, так и гибкое сопоставление текста.

  • Результаты поиска включают как точные, так и частичные совпадения, ранжированные по релевантности.

Разработка

Настраивать

pnpm install

Тестирование

pnpm test

Лицензия

Данный проект лицензирован по лицензии MIT — подробности см. в файле LICENSE .

Available Tools

8 tools
add_observationsC

Add new observations to existing entities in the knowledge graph

ParametersJSON Schema
NameRequiredDescriptionDefault
observationsYesAn array of observations to add

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It states the tool adds observations to existing entities, implying a mutation operation, but lacks critical details: whether it requires specific permissions, if it's idempotent, what happens on errors (e.g., invalid entity names), or rate limits. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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 a single, efficient sentence that directly states the tool's purpose without redundancy. It's front-loaded with the core action and target, making it easy to parse. Every word earns its place, with no wasted verbiage.

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

Completeness2/5

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

Given the complexity of a mutation tool (adding observations to a knowledge graph) with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what constitutes a valid observation, how duplicates are handled, error conditions, or the return format. For a tool that modifies data, more context is needed to ensure safe and correct usage.

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%, with clear documentation for the 'observations' array and its nested 'entityName' and 'contents' fields. The description adds no additional parameter semantics beyond what the schema provides (e.g., no examples of valid observation formats or entity naming conventions). 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 action ('Add new observations') and target ('to existing entities in the knowledge graph'), which is specific and unambiguous. It distinguishes from siblings like 'create_entities' (creates new entities) and 'delete_observations' (removes observations). However, it doesn't explicitly contrast with 'search_nodes' or 'open_nodes', leaving some sibling differentiation incomplete.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., entities must exist), exclusions (e.g., cannot create new entities), or compare to siblings like 'create_entities' for new entities or 'search_nodes' for querying. Without such context, an agent might misuse it.

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

create_entitiesC

Create multiple new entities in the knowledge graph

ParametersJSON Schema
NameRequiredDescriptionDefault
entitiesYesAn array of entities to create

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool creates entities, implying a write operation, but doesn't disclose critical traits like permissions required, whether creation is idempotent, error handling, or rate limits. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, with zero waste, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity of creating multiple entities in a knowledge graph, no annotations, and no output schema, the description is incomplete. It doesn't explain what happens on success (e.g., returns created entity IDs), error conditions, or behavioral nuances. For a mutation tool with rich sibling context, more completeness is needed.

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?

The schema description coverage is 100%, with the single parameter 'entities' well-documented in the schema as an array of objects with name, entityType, and observations. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline score of 3 for high schema coverage without extra value.

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 action ('create') and resource ('multiple new entities in the knowledge graph'), making the purpose evident. It distinguishes from siblings like 'create_relations' by focusing on entities rather than relationships, but doesn't explicitly differentiate from other entity-related tools like 'add_observations' or 'delete_entities' beyond the creation aspect.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites, when not to use it, or how it compares to sibling tools like 'add_observations' (which might add observations to existing entities) or 'create_relations' (for creating relationships). The description lacks context for tool selection.

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

create_relationsC

Create multiple new relations between entities in the knowledge graph. Relations should be in active voice

ParametersJSON Schema
NameRequiredDescriptionDefault
relationsYesAn array of relations to create

TDQS

C2.9/5.0
Behavior2/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 states this is a creation operation ('Create multiple new relations'), implying mutation, but doesn't disclose behavioral traits like permissions needed, whether it's idempotent, error handling, or what happens on conflicts. The 'active voice' note is minor and doesn't address core behavioral aspects.

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 a single, efficient sentence that front-loads the core purpose. The 'active voice' note is arguably extraneous but doesn't significantly detract. It's appropriately sized for a tool with a clear primary function.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete for a mutation tool. It doesn't explain what the tool returns, error conditions, or side effects. For creating multiple relations in a knowledge graph—a potentially complex operation—more context is needed to guide an agent effectively.

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%, with the single parameter 'relations' and its nested properties well-documented in the schema. The description adds no parameter semantics beyond what the schema provides, such as examples or constraints on 'relationType'. 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 action ('Create multiple new relations') and the target resource ('between entities in the knowledge graph'), which is specific and actionable. However, it doesn't explicitly differentiate from sibling tools like 'create_entities' or 'delete_relations', though the 'multiple new relations' phrasing hints at its scope.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It mentions 'relations should be in active voice', which is a stylistic constraint but not a usage guideline. There's no indication of prerequisites, when not to use it, or how it relates to siblings like 'create_entities' or 'delete_relations'.

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

delete_entitiesC

Delete multiple entities and their associated relations from the knowledge graph

ParametersJSON Schema
NameRequiredDescriptionDefault
entityNamesYesAn array of entity names to delete

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Delete' implies a destructive mutation, it doesn't specify whether this operation is reversible, what permissions are required, how deletions cascade through relations, or what happens if entities don't exist. The mention of 'associated relations' hints at cascading behavior but lacks detail.

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 a single, efficient sentence that gets straight to the point without unnecessary words. It's appropriately sized for a tool with one parameter and clear purpose, though it could be slightly more front-loaded with critical behavioral information.

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

Completeness2/5

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

For a destructive mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after deletion (success/failure responses), error conditions, or important behavioral details like whether deletions are atomic or what happens to orphaned relations. The context signals indicate this is a significant operation that needs more complete documentation.

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%, with the single parameter 'entityNames' well-documented in the schema. The description adds no additional parameter semantics beyond what the schema provides, but doesn't need to compensate for gaps. This meets the baseline for high schema coverage.

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 action ('Delete') and target resources ('multiple entities and their associated relations from the knowledge graph'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'delete_observations' or 'delete_relations', which handle different resource types in the same system.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'delete_observations' or 'delete_relations', nor does it mention prerequisites or constraints. It simply states what the tool does without contextual usage information.

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

delete_observationsC

Delete specific observations from entities in the knowledge graph

ParametersJSON Schema
NameRequiredDescriptionDefault
deletionsYesAn array of observation deletions

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a deletion operation (implying mutation/destructive action) but provides no additional context about permissions needed, whether deletions are permanent or reversible, rate limits, error conditions, or what happens to related data. For a destructive tool with zero annotation coverage, this is a significant gap.

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 a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a tool with one main parameter and clear schema documentation.

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

Completeness2/5

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

For a destructive mutation tool with no annotations and no output schema, the description is inadequate. It doesn't explain what 'observations' are in this context, what the deletion affects, whether there are side effects, or what the response looks like. The agent lacks crucial context for safe and effective 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 100%, so the schema already documents the 'deletions' parameter and its nested structure. The description adds no parameter-specific information beyond what's in the schema - it doesn't explain what constitutes an 'observation', format examples, or constraints. Baseline 3 is appropriate when 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 action ('Delete') and target ('specific observations from entities in the knowledge graph'), providing a specific verb+resource combination. It distinguishes itself from sibling tools like 'delete_entities' by focusing on observations rather than entire entities. However, it doesn't explicitly differentiate from all siblings (e.g., 'delete_relations' also deletes things).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'delete_entities' or 'delete_relations'. It doesn't mention prerequisites, constraints, or typical scenarios for deleting observations versus other deletion operations. The agent must infer usage from the tool name alone.

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

delete_relationsC

Delete multiple relations from the knowledge graph

ParametersJSON Schema
NameRequiredDescriptionDefault
relationsYesAn array of relations to delete

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool deletes relations, implying a destructive mutation, but does not cover critical aspects such as permissions required, whether deletions are reversible, error handling, or rate limits. This leaves significant gaps in understanding the tool's behavior beyond the basic action.

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 a single, direct sentence that efficiently conveys the core action without unnecessary words. It is front-loaded with the key information ('Delete multiple relations'), making it easy to parse and understand quickly, with no wasted verbiage.

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

Completeness2/5

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

Given the tool's destructive nature (deleting relations), lack of annotations, and no output schema, the description is insufficient. It does not address the implications of deletion, potential side effects, or what to expect upon success or failure, leaving the agent with incomplete context for safe and effective 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?

The input schema has 100% description coverage, clearly documenting the 'relations' parameter as an array of objects with 'from', 'to', and 'relationType' fields. The description adds no additional semantic context beyond what the schema provides, such as examples or constraints, so it meets the baseline for high schema coverage without enhancing parameter understanding.

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 action ('delete') and resource ('multiple relations from the knowledge graph'), which is specific and unambiguous. However, it does not explicitly distinguish this tool from its sibling 'delete_entities' or 'delete_observations', which would require mentioning what relations are versus entities or observations to clarify differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'delete_entities' or 'delete_observations', nor does it mention prerequisites or context for deletion. It lacks explicit instructions on usage scenarios, leaving the agent to infer based on tool names alone.

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

open_nodesC

Open specific nodes in the knowledge graph by their names

ParametersJSON Schema
NameRequiredDescriptionDefault
namesYesAn array of entity names to retrieve

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It implies a read operation ('open' suggests retrieval/access), but doesn't disclose critical behaviors: whether this requires permissions, what happens if names don't exist (error vs. partial results), if it returns full node details or just references, or any rate limits. The description adds minimal behavioral context beyond the basic action.

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 a single, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately understandable. Every element ('open', 'specific nodes', 'knowledge graph', 'by their names') contributes essential information without redundancy.

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

Completeness2/5

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

Given no annotations, no output schema, and a mutation-heavy sibling set (e.g., create/delete tools), the description is insufficient. It doesn't clarify if this is a safe read operation versus having side effects, what data is returned, or how errors are handled. For a tool in a knowledge graph context with potential complexity, more behavioral and output context is needed.

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%, with the schema fully documenting the 'names' parameter as an array of entity names. The description adds the semantic context that these are 'specific nodes' and 'by their names', reinforcing the schema but not providing additional syntax, format examples, or constraints. This meets the baseline for high schema coverage.

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 action ('open') and target resource ('specific nodes in the knowledge graph'), with the qualifier 'by their names' adding specificity. It distinguishes from siblings like 'search_nodes' by focusing on retrieval of known entities rather than search. However, it doesn't fully differentiate from potential read operations in other contexts.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'search_nodes' or other sibling tools. There's no mention of prerequisites (e.g., needing to know exact entity names) or when-not-to-use scenarios. The agent must infer usage from the tool name and context alone.

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

search_nodesC

Search for nodes in the knowledge graph based on a query

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe search query to match against entity names, types, and observation content

TDQS

C2.9/5.0
Behavior2/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 of behavioral disclosure. It states the tool searches nodes but doesn't describe what 'search' entails—e.g., whether it returns partial matches, supports pagination, has rate limits, or requires authentication. For a search tool with zero annotation coverage, this is a significant gap in transparency.

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 a single, clear sentence with no wasted words, making it appropriately concise. It front-loads the core purpose effectively, though it could be slightly more structured by including usage context.

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

Completeness2/5

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

Given the complexity of a search operation with no annotations and no output schema, the description is incomplete. It doesn't explain what 'nodes' are in this context, how results are returned, or any behavioral traits like error handling. For a tool that likely returns multiple results, more context is needed to guide the agent effectively.

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?

The description mentions 'based on a query', which aligns with the single parameter 'query' in the input schema. Since schema description coverage is 100% (the schema describes the query parameter well), the description adds minimal value beyond what the schema provides. This meets the baseline score when schema coverage is high.

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 as 'Search for nodes in the knowledge graph based on a query', which includes a specific verb ('Search'), resource ('nodes in the knowledge graph'), and mechanism ('based on a query'). However, it doesn't explicitly differentiate from sibling tools like 'open_nodes' which might also retrieve nodes, so it doesn't reach the highest score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'open_nodes' (which might retrieve specific nodes by ID) or 'create_entities' (which adds nodes), nor does it specify prerequisites or exclusions. This leaves the agent with minimal context for tool selection.

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. Dates show when Glama detected each change.

  1. 4 tool updatesv1.0.0
    • Changedadd_observations1 field changed
      • addedInput schema / properties / observations / description
        Added value: +"An array of observations to add"
    • Changedcreate_entities1 field changed
      • addedInput schema / properties / entities / description
        Added value: +"An array of entities to create"
    • Changedcreate_relations1 field changed
      • addedInput schema / properties / relations / description
        Added value: +"An array of relations to create"
    • Changeddelete_observations1 field changed
      • addedInput schema / properties / deletions / description
        Added value: +"An array of observation deletions"
  2. 8 tool updates
    • First observedadd_observations
    • First observedcreate_entities
    • First observedcreate_relations
    • First observeddelete_entities
    • First observeddelete_observations
    • First observeddelete_relations
    • First observedopen_nodes
    • First observedsearch_nodes

TDQS

B3.4/5.0
Disambiguation4/5

Most tools have distinct purposes targeting different aspects of the knowledge graph (entities, relations, observations, nodes), though 'open_nodes' and 'search_nodes' could potentially overlap in functionality if opening involves searching. The descriptions clarify that 'open_nodes' accesses specific named nodes while 'search_nodes' performs query-based lookup, but agents might still confuse them in some scenarios.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case naming (e.g., add_observations, create_entities, delete_relations). The verbs are clear and appropriate for the actions (add, create, delete, open, search), and there are no deviations in style or convention throughout the set.

Tool Count5/5

With 8 tools, this server is well-scoped for a knowledge graph memory system. Each tool appears to serve a specific and necessary function for managing entities, relations, observations, and nodes, without being overly sparse or bloated. The count aligns well with the domain's typical CRUD and query operations.

Completeness4/5

The tool set provides strong coverage for core knowledge graph operations, including creation, deletion, and querying of entities, relations, and observations. A minor gap is the lack of update tools (e.g., update_entities or update_relations), which might require workarounds like delete-and-recreate, but the surface is otherwise comprehensive for the stated purpose.

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 persistent memory system using a local knowledge graph that enables Claude to remember information about users across chats, with advanced search, graph traversal, and filtering capabilities for entities, relations, and observations.
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    A persistent memory server for Claude Code that captures session context and tool outputs to inject relevant history into future sessions. It enables long-term recall through semantic search and automatic context management, allowing for more consistent and context-aware coding interactions.
    10
    253
    ISC

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/IzumiSy/mcp-duckdb-memory-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server