Skip to main content
Glama

knowledge-os-mcp-server

Servidor MCP de memória durável (um "segundo cérebro") para agentes: guarda regras, decisões e o porquê, how-tos, contexto e specs como arquivos Markdown numa pasta git sua, e os devolve ao agente com baixo custo de contexto.

O que faz

A memória vive como arquivos .md (com frontmatter) numa pasta git que você escolhe — é sua, versionada, inspecionável. O agente consulta antes de agir e grava o que dura. Cinco tipos de item: rule, howto, context, work, secret. O alcance vem da hierarquia workspace → project → subject.

As 31 tools se agrupam em:

Área

Tools

Para quê

Itens

item_search, item_get, item_save, item_delete, item_graph

Buscar, ler, gravar (idempotente por key), remover e navegar links entre itens.

Hierarquia

workspace_*, project_*, subject_* (list/create/update/merge/delete)

Organizar onde cada item vale (empresa/cliente → repositório → conceito).

Relações & tags

relation_create/delete, tag_list/create/update/delete

Ligar itens (depends_on/relates_to) e dar nuance por tags.

Repositório

repo (link/list/unlink/sync)

Ligar o repo em que você trabalha a um workspace/project.

Conexão & saúde

connection_create/list/delete, health_check

Criar/listar a pasta git de dados e checar o estado do servidor.

Related MCP server: arcane

Taxonomia dos itens

Tipo

Guarda

rule

o que deve ser seguido + o porquê (convenção, decisão, regra de negócio)

howto

passos repetíveis ou diagnóstico (sintoma/causa/solução)

context

pano de fundo: produto, mapa, stack, glossário, ambiente

work

o trabalho: plano/spec + decisões (o porquê durável); ciclo por tag

secret

referência a um segredo (sem o valor)

Campo

Valores

tags de ciclo

draft, active, done, archived

tags de nuance (base, extensível)

decision, troubleshoot, security, pattern, map, glossary, product, environment, business, process

link item→item (rel)

depends_on, relates_to

Key: <tipo>/<nome> (nome em minúsculas com -); fora do padrão grava com aviso, e a key de um item existente nunca muda.

Alcance: o item vale onde mora na hierarquia (workspace → project → subject) e abaixo. Não há scope, status, subtype, origin nem expiração — a nuance e o ciclo vão em tags.

links (unificado): {item, rel} liga a outro item; {url[, title]} a uma URL; {path} a um arquivo/glob do repositório.

Requisitos

  • Python 3.12+.

  • git (CLI) — obrigatório: cada "conexão" é um repositório git e cada escrita é um commit.

  • Opcionais: gh autenticado (só para conexões com remote_url e revisão por PR); keyring do SO (só se usar itens secret).

Instalação

uv tool install knowledge-os-mcp-server      # disponibiliza o comando `knowledge-mcp`
# (alternativa: pip install knowledge-os-mcp-server)

Configuração

1. Registre no cliente MCP

Claude Code:

claude mcp add --scope user knowledge-os -e LOG_LEVEL=WARNING -- knowledge-mcp

Cursor (~/.cursor/mcp.json) e similares:

{
  "mcpServers": {
    "knowledge-os": {
      "command": "knowledge-mcp",
      "env": { "LOG_LEVEL": "WARNING" }
    }
  }
}

O servidor fala por stdio; não precisa de args. (Se preferir não instalar, use "command": "uvx", "args": ["--from", "knowledge-os-mcp-server", "knowledge-mcp"].)

2. Crie a primeira pasta de dados e ligue seu repo

Nada funciona sem ao menos uma conexão (a pasta git dos dados). Pelo agente, uma vez:

  • connection_create(name, path) — cria/usa a pasta git onde a memória será guardada.

  • Dentro do repositório em que você trabalha: repo(action="link", repo=".") — o project passa a ser esse repo; o workspace, o dono do remote.

Variáveis de ambiente (todas opcionais)

Variável

Efeito

Default

LOG_LEVEL

Nível de log (recomende WARNING nos clientes MCP).

INFO

KNOWLEDGE_OS_HOME

Estado local da máquina (conexões, cache) — não guarda itens.

~/.knowledge-os

KNOWLEDGE_OS_UI

1 sobe a UI local em 127.0.0.1:8765 junto com o servidor; 0 desliga.

1

Não coloque KNOWLEDGE_OS_VAULT_KEY na config do MCP nem no ambiente do agente — ela é a chave mestra do cofre de segredos e só serve para CI/máquinas sem keyring.

Segurança

  • Os dados são seus arquivos git — nada sai da sua máquina; a UI local escuta só em loopback.

  • item_search devolve resumos, nunca o content completo por acidente.

  • Itens secret ficam cifrados fora do git, na pasta .secrets/ da conexão; a chave vive no keyring do SO.

  • Operações destrutivas (*_delete) devolvem prévia e só executam com confirm=True.

Available Tools

15 tools
artifact_attachArtifact AttachA

Anexa um arquivo local a um item (copiado para /artifacts, até 100 MB).

Use quando: O valor do item é um arquivo (diagrama, template, script). Retorna: Metadados do anexo (id, filename, file_size, mime_type). Exemplo: artifact_attach(item_id="...", file_path="C:/docs/arquitetura.png") Notas: Use só caminhos que o usuário indicou. A lista vem em item_get → artifacts.

NameRequiredDescriptionDefault
item_idYes
file_pathYes
connection_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that the file is copied to <home>/artifacts, has a 100 MB limit, returns attachment metadata, and warns to use only user-indicated paths. However, it omits permissions, overwrite behavior, and error handling details.

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 and front-loaded with the core action, followed by use case, return value, example, and notes. Every section is short and contributes directly to invocation clarity.

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 output schema exists, so return-value details are supplementary, and the description covers purpose, usage, size limit, and an example. However, with 0% schema description coverage and no annotations, the missing connection_id semantics and lack of permission or failure behavior leave meaningful gaps.

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 0%, so the description must compensate. It gives an example showing item_id and file_path, and implies item_id links to an item while file_path is a local path, but the optional connection_id parameter is never explained or mentioned.

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 states a specific verb and resource: attaching a local file to an item, with copy destination and size limit. This clearly distinguishes the tool from sibling artifact_get and from unrelated item operations.

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 when to use the tool: when the item value is a file such as a diagram, template, or script. It also points to item_get for listing existing artifacts, though it does not state when not to use this tool or name a direct alternative.

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

artifact_getArtifact GetB

Conteúdo de um anexo em base64.

Use quando: Precisar do arquivo em si (confira file_size em item_get antes). Retorna: {artifact, content_base64}. Exemplo: artifact_get(artifact_id="...")

NameRequiredDescriptionDefault
artifact_idYes
connection_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/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 full behavioral burden. It usefully discloses that the payload is base64 and implicitly warns about size by telling the agent to confirm file_size first, but it says nothing about size limits, token/memory cost, or auth requirements for reaching the blob.

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?

Front-loads the return payload, then use-case, then example — tight and scannable with no filler. The 'Retorna' line partially duplicates the existing output schema, but it costs little and aids fast reading.

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?

An output schema exists, so return values needn't be spelled out, and the item_get cross-reference covers the main workflow. However, for a 2-param tool the undocumented connection_id and absent guidance on large/failed fetches leave real gaps.

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?

Schema description coverage is 0% for both parameters. The example shows artifact_id in use but never explains where it comes from or what it identifies, and connection_id is entirely undocumented in both schema and description, so the description fails to compensate for the coverage gap.

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?

States the resource and the exact payload ('Conteúdo de um anexo em base64'), which is a specific verb-free but unambiguous purpose. It distinguishes itself from item_get by noting that item_get is where you check file_size before fetching the artifact itself, so an agent can route between them.

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?

'Use quando: Precisar do arquivo em si' gives an explicit trigger condition and names the alternative (item_get / file_size) as a prerequisite check. No explicit when-not case, but the context is clear enough to select correctly.

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

backup_exportBackup ExportA

Exporta um workspace (ou só um domain) para um ZIP em /exports.

Use quando: Antes de mudanças grandes ou para levar conhecimento a outra máquina. Retorna: {status: ok, file_path, size_mb}. Exemplo: backup_export(workspace="agenda-api") · backup_export(workspace="agenda-api", domain="projpro") Notas: backup_import restaura (o workspace importado ganha ids novos).

NameRequiredDescriptionDefault
domainNo
workspaceYes
connection_idNo

Output Schema

NameRequiredDescription

No output parameters

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 full behavioral burden. It usefully discloses the artifact location (ZIP in <home>/exports) and the restore caveat about new ids, but says nothing about permissions, whether an existing export is overwritten, or failure modes for a missing workspace.

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?

Bold-labeled sections (Use when / Returns / Example / Notes) are front-loaded and scannable, each carrying distinct information with no filler.

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?

An output schema exists, so omitting deeper return-value detail is acceptable, and usage plus the sibling pointer are covered. The remaining gap is the undocumented connection_id, which an agent may need to supply.

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 coverage is 0%, so the description must compensate. It clarifies workspace and domain through the parenthetical and two concrete examples, but connection_id is never mentioned or explained anywhere, leaving one of three parameters semantically opaque.

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?

States a specific verb+resource (export a workspace or a domain to a ZIP), specifies the output location (<home>/exports), and distinguishes itself from the sibling backup_import, which it names as the reverse operation.

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?

Provides an explicit 'Use when' clause (before big changes, or to move knowledge to another machine) and routes restoration to backup_import. It lacks an explicit 'do not use for X' exclusion, but the context and the named alternative make selection unambiguous.

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

backup_importBackup ImportA

Importa um ZIP de backup_export: workspace inteiro, ou um domain dentro de workspace.

Use quando: Restaurar um backup ou trazer conhecimento de outra máquina. Retorna: {status: ok, ...workspace ou domain criado}. Exemplo: backup_import(file_path="C:/x/workspace_....zip") Notas: Use só caminhos que o usuário indicou. Nome de workspace já existente é recusado.

NameRequiredDescriptionDefault
file_pathYes
workspaceNo
connection_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It discloses an important failure mode (existing workspace name rejected) and a safety constraint (only user-indicated paths), plus the success return shape, but says nothing about whether an import overwrites/merges existing domains, permission requirements, or size/time limits.

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?

Labeled sections (purpose, Use quando, Retorna, Exemplo, Notas) with the core statement front-loaded and no filler. Every line adds either routing, constraint, or example 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?

Covers purpose, usage trigger, return shape, a concrete call example, and key constraints, which is strong for a 3-param mutation tool. The return values are also covered by an output schema, so the main remaining gap is the undocumented connection_id parameter.

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 0%, so the description must compensate. It explains file_path (a ZIP produced by backup_export) and workspace (the domain inside the workspace), which meaningfully supplements the bare string types, but connection_id is never mentioned and the workspace/null semantics remain ambiguous.

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?

States a specific verb+resource (import a ZIP) and names the counterpart sibling backup_export as the source of the artifact, so the agent immediately understands the inverse relationship. It further scopes the outcome to either a whole workspace or a domain inside a workspace.

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?

Explicit when-to-use line: restoring a backup or bringing knowledge from another machine. It lacks a formal when-not/alternative clause, but the 'Notes' section adds a hard exclusion (existing workspace name is refused) and a constraint (only user-indicated paths), which covers most of the routing need.

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

context_getContext GetA

Pacote de contexto do projeto: regras, contexto, decisões, padrões, procedimentos.

Use quando: Começar num projeto (se o hook não injetou) ou ao passar a mexer em outra área: paths traz as regras com escopo daqueles arquivos; query, itens relacionados. Retorna: {linked, project_key, workspace, domain, markdown, included, omitted, sensitive}. Exemplo: context_get(project=".", paths=["src/payments/Charge.java"], query="estorno") Notas: Dentro de budget_tokens. Itens que casam com paths ou query vêm em foco, com o começo do content (dispensa item_get); o resto, só título, resumo e key. sensitive é true se paths toca uma área marcada com a keyword "sensivel". Inclui o domain do projeto, Geral do workspace e Global/Geral. Sem substituídos, obsoletos nem ephemeral.

NameRequiredDescriptionDefault
pathsNo
queryNo
projectYes
budget_tokensNo
connection_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

No annotations exist, so the description carries the full behavioral burden and largely meets it: it discloses the `budget_tokens` cap, that path/query matches arrive focused with the start of content while the rest show only title/summary/key, how `sensitive` is set, and which scopes are included/excluded (substituted, obsolete and ephemeral items omitted). Permissions and performance characteristics are the main gaps.

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?

Well front-loaded with bold section headers (Use quando / Retorna / Exemplo / Notas) that let an agent skim. The 'Retorna' field list duplicates what the existing output schema already specifies, which is the only wasted line; the rest is dense and earns its place.

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 5-parameter tool with 0% schema description coverage and no annotations, the description supplies the usage triggers, scoping semantics, budget behavior and inclusion/exclusion rules an agent needs to call it correctly. With an output schema present, the explicit return-field listing is redundant, and `connection_id` remains undocumented, but overall it is nearly complete.

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 description coverage is 0%, so the description must compensate, and it does for most parameters: `paths` (scoped rules for those files), `query` (related items), `project` (shown as project=".") and `budget_tokens` (results capped within it) all gain meaning. Only `connection_id` is left unexplained in both schema and description.

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?

States a specific resource clearly: a project context bundle covering rules, context, decisions, patterns and procedures. The retrieval verb is only implicit ('context_get') and no sibling is named directly, though the note that focused items 'dispensa item_get' hints at the item_get overlap. Clear but not fully differentiated from item_get/item_search in the purpose line itself.

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 '**Use quando:**' block gives explicit triggering conditions: starting on a project (when the hook hasn't injected) or moving into another area, with `paths` for scoped rules and `query` for related items. It covers when to reach for this tool but does not lay out explicit when-not rules beyond the hook case.

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

health_checkHealth CheckA

Verifica a saúde do servidor MCP e do banco default.

Use quando: Diagnosticar falhas ou confirmar que o servidor está operacional. Retorna: {status: ok|error, database: connected | motivo, version, schema_version, toolset}. Exemplo: health_check() Notas: Valida a conexão e a presença de todas as tabelas (inclusive a de busca textual).

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/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 full burden and largely meets it: it discloses what is validated (connection plus presence of all tables, including the full-text search table) and the shape of the response. It stops short of explicitly stating there are no side effects or auth requirements, but for a zero-param health probe the behavioral surface is well covered.

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?

Bold-labeled sections (Use quando / Retorna / Exemplo / Notas) front-load the purpose and keep the reader oriented. The example line is near-redundant for a no-argument tool and the Retorna fields partly duplicate the existing output schema, costing a little efficiency.

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?

An output schema exists, so return values need not be described, yet the description still enumerates the return fields (status, database, version, schema_version, toolset) and the validation notes. For a zero-parameter diagnostic tool this leaves nothing an agent needs unresolved.

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 tool takes zero parameters, so per the rubric the baseline is 4. The description's 'Exemplo: health_check()' correctly reinforces that no arguments are accepted, consistent with the empty schema.

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?

States a specific verb+resource combination ('Verifica a saúde do servidor MCP e do banco default') that is unambiguous and distinguishable from every sibling, none of which are diagnostic tools. An agent immediately understands this reports server/database health.

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?

'Use quando: Diagnosticar falhas ou confirmar que o servidor está operacional' gives explicit when-to-use conditions. There is no sibling alternative to route against, so no exclusion is needed, but the guidance is clear rather than implied.

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

item_deleteItem DeleteA

Remove um item de vez (com tags, relações e anexos). Destrutivo.

Use quando: O item está errado e não há histórico a preservar. Retorna: {status: deleted, id}. Exemplo: item_delete(item_id="...") Notas: Para aposentar mantendo o histórico, prefira item_save com status=deprecated ou uma relação supersedes.

NameRequiredDescriptionDefault
item_idYes
connection_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations exist, so the description carries the full load and does so well: it declares the operation destructive, permanent, and enumerates the collateral scope (tags, relations, attachments). It does not cover authorization/connection scoping, which keeps it short of a 5.

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 destructive action and its scope are front-loaded in the first sentence, followed by clearly labeled Use quando / Retorna / Exemplo / Notas sections. Every line carries information and there is no filler.

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?

An output schema exists, and the description still names the return shape; destruction scope, routing alternative, and usage condition are all covered for a simple 2-parameter delete. The unresolved connection_id semantics is the only real gap.

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?

Schema description coverage is 0% across 2 parameters, so the description must compensate. It only shows item_id inside an example string and says nothing about connection_id, leaving half the parameters undocumented in both places.

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?

States a specific verb+resource (remove/delete an item) and precisely scopes what is removed: tags, relations and attachments. Marks it as destructive, which immediately distinguishes it from the retire-with-history path offered by item_save.

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

Usage Guidelines5/5

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

Contains an explicit 'Use quando' clause (item is wrong and no history needs preserving) plus a 'Notas' section naming the alternative (item_save with status=deprecated or a supersedes relation) and the condition that selects it. When-to-use, when-not, and the alternative are all present.

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

item_getItem GetA

Lê itens completos (content, tags, relações, anexos) por id e/ou key, vários de uma vez.

Use quando: O resumo da busca ou do contexto não bastou. Retorna: Lista de itens completos, na ordem pedida; o que não existe vem como {key|id, missing: true}, sem derrubar os outros. Exemplo: item_get(keys=["regra/money", "proc/deploy"], project=".") Notas: keys exigem project (o domain ligado) ou workspace e domain. Até 20 por chamada.

NameRequiredDescriptionDefault
idsNo
keysNo
domainNo
projectNo
workspaceNo
connection_idNo

Output 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, the description carries the burden and mostly does: it discloses graceful degradation (missing items returned as {key|id, missing: true} without failing others), the batching limit (up to 20 per call), and ordering guarantees. It omits any auth/permission or addressee-side effects, but the batch and partial-failure semantics are genuinely useful.

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?

Front-loaded verb phrase followed by clearly labeled sections (Use quando, Retorna, Exemplo, Notas). Every line carries usable information with no filler, and the concrete example grounds the wire format.

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 6-param, zero-schema-coverage tool the description covers the critical operational facts: batch limit, key-addressing prerequisites, and missing-item handling. An output schema exists so return-shape docs are a bonus rather than required; only the unlabeled ids/domain/connection_id semantics remain a gap.

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 coverage is 0% across 6 params, so the description must compensate. It clarifies the keys/project/workspace/domain relationship ('keys exigem project... ou workspace e domain') and id/key dual addressing, but leaves 'ids', 'domain', and 'connection_id' uninterpreted, so coverage is partial rather than complete.

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?

States a specific verb ('Lê') and resource ('itens completos') with an explicit scope enumeration (content, tags, relations, attachments) and distinguishes itself from the search/context summary path that returns less. An agent can tell it apart from item_search without opening either schema.

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?

Has an explicit 'Use quando' block naming the trigger condition (search/context summary was insufficient), which effectively routes away from item_search and context_get. However, it does not name those alternatives explicitly or state when NOT to use it.

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

item_saveItem SaveA

Grava itens (criar, atualizar, upsert, renovar, relacionar) numa transação.

Use quando: Guardar o que vale para depois — uma regra que o usuário enunciou, as decisões e aprendizados ao fechar uma mudança, uma correção de um item. Retorna: [{index, id, key, action: created|updated|unchanged, similar?, relations?}]. Modo, por entrada: com key → upsert no domain (não duplica; o preferido); com id → atualiza o item; sem os dois → cria e devolve similar (títulos parecidos já guardados). Exemplo (upsert): item_save(project=".", items=[{"key": "regra/money", "type": "rule", "title": "Money em pagamentos", "summary": "Valores em Money, nunca double", "content": "...", "scope_paths": ["src/payments/**"], "source": "PAY-142"}]) Exemplo (aposentar): item_save(project=".", items=[{"key": "regra/x", "status": "deprecated"}]) Exemplo (substituir): item_save(project=".", items=[{"key": "proc/deploy-v2", ..., "relations": [{"type": "supersedes", "target": "proc/deploy"}]}]) Campos: type (rule, insight, procedure, pattern, knowledge, context, artifact, task), title, summary, content, keywords, source, scope_paths, status (active, done, superseded, deprecated), memory_class "ephemeral" + ttl_days só para nota temporária (sem aprovação: o resto já vale), tags, labels, relations [{type: related_to|depends_on|implements|references|supersedes|derived_from, target: id ou key}], workspace/domain (sem eles vale o domain ligado a project). Segredo: {"key": "segredo/npm-token", "type": "secret", "title": "Token do npm", "summary": "publicar no npm"} — sem valor (é recusado); a resposta traz fill_url: passe ao usuário para ele preencher na UI local. Usar: knowledge-mcp run --env NPM_TOKEN=segredo/npm-token -- <comando>. Notas: Um erro desfaz o lote e aponta a entrada. Conteúdo com cara de segredo é recusado.

NameRequiredDescriptionDefault
itemsYes
projectNo
connection_idNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so richly: batch is transactional (one error rolls back the lot and points at the offending entry), secret-like content is refused, secrets store no value and return a fill_url for the user to complete in the local UI, and similar-title detection fires on creation. This is exactly the operational context an agent needs before writing.

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?

It is long, but the bold labels (Use quando / Retorna / Modo / Exemplo / Campos / Segredo / Notas) front-load the mode decision and the examples each demonstrate a distinct operation rather than restating one. Dense yet every block earns its place for a tool with this many modes; slightly heavy for quick scanning.

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?

An output schema exists, yet the description still summarizes the return shape and, more importantly, covers the failure paths (rollback, refused secrets, rejected secret-like content) and the secret-filling workflow. Combined with the schema, an agent has everything needed to call this correctly on the first attempt.

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 0%, so the description must compensate — and it largely does, documenting the per-item mode switch (key → upsert in domain, id → update, neither → create + similar), the full field list (type, status, relations, scope_paths, memory_class/ttl_days, workspace/domain), and the project/domain fallback. Only connection_id is left unexplained.

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 opening line states a specific verb and resource ("Grava itens") and enumerates the write modes it covers (criar, atualizar, upsert, renovar, relacionar) inside a transaction, so an agent immediately knows this is the write path. It never names the read/delete siblings (item_get, item_search, item_delete), but the semantics make the boundary obvious.

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?

"Use quando" gives concrete triggering situations — persisting a user-stated rule, decisions/learnings from a completed change, a correction to an item. It gives no explicit when-not or named alternative (e.g. use item_search to look things up, item_delete to remove), so the negative space is left to inference.

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

relation_deleteRelation DeleteA

Remove uma relação entre itens (o id vem em item_get → relations).

Use quando: Uma relação foi criada por engano. Retorna: {status: deleted, id}. Exemplo: relation_delete(relation_id="...") Notas: Remover um supersedes não reativa o alvo: ajuste o status com item_save.

NameRequiredDescriptionDefault
relation_idYes
connection_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/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, and it discloses a genuinely useful side effect: removing a supersedes relation does not reactivate the target, requiring a follow-up item_save. It still omits permissions/authorization requirements and whether the deletion is reversible.

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?

Front-loaded with the core action, then cleanly sectioned into Use quando / Retorna / Exemplo / Notas. Every line adds signal, and the example makes invocation concrete with no wasted prose.

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 two-parameter delete tool with an output schema already covering the return value, the description covers purpose, trigger, provenance, and the supersedes caveat. The remaining gap is the undocumented connection_id parameter.

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 0%, so the description must compensate. It explains the provenance of relation_id and gives a usage example, but the optional connection_id parameter is never mentioned, leaving half the parameters undocumented.

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?

States a specific verb (remove) and resource (a relation between items), and adds where the identifier comes from ('o id vem em item_get → relations'). This clearly distinguishes it from sibling delete tools like item_delete and structure_delete, which operate on different resources.

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 'Use quando' section gives an explicit trigger ('Uma relação foi criada por engano'). However, it offers no exclusions or named alternatives for other cleanup scenarios, and the interaction with item_save is only hinted at in the notes.

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

structure_deleteStructure DeleteA

Remove um domain (ou o workspace inteiro) com todos os itens. Destrutivo.

Use quando: O usuário pediu explicitamente para apagar. Retorna: Sem confirm: {status: preview, would_delete}. Com confirm: {status: deleted}. Exemplo: structure_delete(workspace="Teste", confirm=True) Notas: Chame primeiro sem confirm e mostre o preview ao usuário. Prefira backup_export antes, e status=deprecated (item_save) quando o histórico importar.

NameRequiredDescriptionDefault
domainNo
confirmNo
workspaceYes
connection_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it declares the operation destructive, explains the two-phase confirm gate (without confirm = preview with would_delete; with confirm = actual deletion), and instructs calling without confirm first to show a preview. This discloses the exact safety-critical behavior of a deletion tool.

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?

Front-loaded purpose followed by clearly labeled sections (**Use quando**, **Retorna**, **Exemplo**, **Notas**). Every line earns its place for a destructive tool, with no redundancy.

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?

Given a destructive 4-param tool with 0% schema coverage and an output schema present, the description covers purpose, invocation trigger, return behavior, an example, and safer alternatives. The only real gap is the undocumented 'connection_id' parameter.

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 0%, so the description must compensate. It fully explains 'confirm' semantics and demonstrates 'workspace' via the example, and implies 'domain' scope, but 'connection_id' is never mentioned. Partial coverage of a 4-param schema that is otherwise undocumented.

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?

States a specific verb (Remove) plus the exact resource and scope ('um domain ou o workspace inteiro com todos os itens'), which clearly separates it from item_delete and relation_delete siblings. The word 'Destrutivo' is front-loaded so an agent can immediately gauge severity.

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

Usage Guidelines5/5

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

Explicitly scopes invocation to 'O usuário pediu explicitamente para apagar' and names alternatives with their conditions: prefer backup_export beforehand and use status=deprecated via item_save when historical data matters. This is genuine when/when-not/alternative guidance.

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

structure_listStructure ListA

Árvore workspaces → domains com a contagem de itens.

Use quando: Ver o que existe antes de organizar, ligar um projeto ou fazer backup. Retorna: [{workspace, description, items, domains: [{name, items}]}]. Exemplo: structure_list() · structure_list(workspace="agenda-api") Notas: Criar workspace/domain é implícito em item_save e project_link.

NameRequiredDescriptionDefault
workspaceNo
connection_idNo

Output 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 full behavioral burden. It discloses the return shape and the boundary that creation happens elsewhere, but never states that this is a non-destructive read, what connection_id selects, whether results are paginated or auth-scoped. Adequate but with real gaps for a zero-annotation tool.

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?

Front-loaded one-line summary followed by labeled Use/Returns/Example/Notes blocks. Dense but every line adds information; nothing is redundant padding.

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?

An output schema exists, so return-value explanation is not strictly required, and the tool has only two optional params. Still, connection_id is undocumented in both schema and description, and the read-only nature is left implicit for a tool with no annotations.

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 0%, so the description must compensate. The example structure_list(workspace="agenda-api") shows the workspace param is a name filter and that omitting it returns everything, but connection_id is never explained anywhere. Partial compensation only.

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?

States a specific resource (the workspace → domain tree) and its payload (item counts), so an agent immediately knows this is a structural overview, not an item fetch. It also explicitly distinguishes itself from siblings by noting that workspace/domain creation lives in item_save and project_link rather than here.

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?

"Use quando" gives concrete triggers: before organizing, before project_link, before backup_export. It also draws a boundary by saying creation is not done here. No explicit when-not or named alternative for the inverse case, but the context is clear.

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

vocabularyVocabularyA

Vocabulário da base: tags (livres) e labels (lista controlada).

Use quando: Reaproveitar tags existentes antes de criar variações, ou gerir labels. Retorna: list → [{id, name}]; create → {id, name}; delete → {status: deleted}. Exemplo: vocabulary(kind="tags") · vocabulary(kind="labels", action="create", name="lgpd") Notas: kind: tags | labels. action: list | create (name) | delete (id). Tags também são criadas direto no item_save.

NameRequiredDescriptionDefault
idNo
kindNotags
nameNo
actionNolist
connection_idNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the whole burden. It discloses the return shape per action ('list → [{id, name}]', 'create → {id, name}', 'delete → {status: deleted}') and the tags-vs-labels distinction, which is genuinely useful. It omits permission/auth requirements and, importantly, does not say what deleting a label does to items already carrying it — a real gap for a destructive action.

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?

Labelled sections (Use quando / Retorna / Exemplo / Notas) front-load the trigger and pack parameters, returns, and an example into four short blocks. Dense and readable with very little filler; slightly compressed syntax but nothing wasted.

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 5-parameter, no-required, multi-action tool with 0% schema coverage and no output schema, the description supplies the missing action model and per-action return shapes. Only 'connection_id' and the exact effect of delete on existing item tags are unaccounted for.

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 description coverage is 0%, so the description must compensate, and it largely does: it defines the allowed values of kind ('tags | labels'), the action set and the argument each action takes ('create (name)', 'delete (id)'). Only 'connection_id' is left unexplained, and the enums remain informal rather than schema-enforced.

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 opening line names the resource precisely ('tags (livres)' vs 'labels (lista controlada)') and the actions surface in the example and notes (list/create/delete). An agent can tell it deals with the tag/label vocabulary rather than items or structures. It stops short of an explicit verb+resource sentence up front and does not name the sibling it is distinct from.

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 'Use quando' line gives a concrete trigger (reuse existing tags before creating variants; manage labels), and the closing note routes the agent to item_save for the overlapping case of creating tags on an item. Clear context, but no explicit when-not-to-use beyond that one overlap.

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. 15 tool updatesv0.1.0
    • First observedartifact_attach
    • First observedartifact_get
    • First observedbackup_export
    • First observedbackup_import
    • First observedcontext_get
    • First observedhealth_check
    • First observeditem_delete
    • First observeditem_get
    • First observeditem_save
    • First observeditem_search
    • First observedproject_link
    • First observedrelation_delete
    • First observedstructure_delete
    • First observedstructure_list
    • First observedvocabulary

TDQS

A4/5.0

Scored across 15 tools

Disambiguation5/5

Each tool targets a distinct resource and action: three deletes (item_delete, relation_delete, structure_delete) are explicitly scoped to different objects, and the three retrieval tools are clearly delineated (item_search returns summaries, item_get returns full items, context_get returns a curated project bundle). Descriptions add explicit 'use when' guidance that prevents misselection.

Naming Consistency4/5

The dominant pattern is consistent snake_case resource_action (item_save, item_get, artifact_attach, structure_delete, backup_export, project_link, relation_delete, context_get). A couple of names deviate from the verb_noun scheme (vocabulary has no verb; health_check is noun_noun), but overall it is predictable and readable.

Tool Count5/5

15 tools is well-scoped for a knowledge-management server spanning items, relations, artifacts, structure, backups, vocabulary, context, and health. Each tool earns its place with no redundant or filler entries.

Completeness4/5

Coverage is strong: items have save/read/search/delete, relations have create (via item_save) plus delete, artifacts attach/get, structure list/delete, and backup export/import. Minor gaps exist (no explicit artifact detach, workspace/domain rename, or description edit) but core lifecycle workflows are fully covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Gives AI coding agents persistent, evolving knowledge about a codebase, enabling them to store and retrieve observations about architecture, conventions, gotchas, and recent work context.
    10
    52 npm
    3
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides persistent, searchable memory and knowledge capture for AI-assisted development, enabling agents to retain decisions, bugs, and patterns across sessions and projects.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI coding agents to persist and retrieve durable project knowledge across coding sessions, capturing decisions, conventions, lessons and reusable skills through ordinary chat requests. It supports searching, editing and reviewing saved items, and promoting local notes into Git-shareable versioned knowledge alongside repository changes.
    397 npm
    MIT