Skip to main content
Glama

@conxt/mcp

Local-first MCP server for governed AI memory. Your agents propose memories; you approve them; only approved memories are ever recalled. Runs standalone with no account — optionally syncs to Conxt cloud for team memory.

Implements the open Governed Memory Record format.

Quickstart

Point your IDE at it — no install, no signup:

Cursor (~/.cursor/mcp.json)

{ "mcpServers": { "conxt": { "command": "npx", "args": ["-y", "@conxt/mcp"] } } }

Claude Code

claude mcp add conxt -- npx -y @conxt/mcp

Claude Desktop → Settings → Developer → Edit Config: same block as Cursor.

That's it. Memory lives in ~/.conxt/memory.json on your machine.

Related MCP server: Centralaizer

The tools

Tool

Who calls it

What it does

remember

agent

Propose a memory (pending — doesn't govern yet)

recall

agent

Recall approved memories for a query

list_pending

agent/you

See what's awaiting approval

approve

you

Approve a pending memory → it now governs

reject / forget

you

Decline or delete

The rule that makes it governed: an agent can propose, but only a human can approve — and recall never returns anything that isn't approved.

Human approval from the terminal

npx @conxt/mcp pending          # what's waiting
npx @conxt/mcp approve <id>     # approve it
npx @conxt/mcp reject <id>
npx @conxt/mcp list
npx @conxt/mcp path             # where the store lives

Prefer zero friction for solo use? Set CONXT_AUTO_APPROVE=1 and everything you remember is approved on the spot.

Cloud mode (optional)

Local is always the source of truth. Set both env vars to also push approved records to your Conxt workspace for shared, governed team memory:

CONXT_API_KEY=...      CONXT_API_URL=https://...

A sync failure never affects your local memory.

Config

Env

Default

Purpose

CONXT_STORE

~/.conxt/memory.json

Local store path

CONXT_AUTO_APPROVE

off

Approve on remember (solo mode)

CONXT_API_KEY / CONXT_API_URL

unset

Optional cloud sync

Develop

npm install && npm run build && node dist/index.js

License

MIT.

Publishing

CI (.github/workflows/ci.yml) builds and runs the governance smoke test on every push. To release to npm:

  1. On npmjs.com, confirm you own the @conxt scope — or rename the package to unscoped conxt-mcp in package.json.

  2. Add an NPM_TOKEN (Automation token) as a repository secret (Settings → Secrets and variables → Actions).

  3. Cut a release:

    npm version patch      # or minor / major — creates a v* tag
    git push --follow-tags

    The publish workflow builds, smoke-tests, and runs npm publish --access public.

Or publish manually:

npm install && npm run build && npm login && npm publish --access public

Available Tools

6 tools
approveA

Approve a pending memory (a human action). Once approved it governs and, if cloud sync is configured, is pushed to Conxt.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
approverNoWho is approving

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description must disclose behavioral traits. It states that approval makes the memory govern and syncs to Conxt if configured, which is useful. However, it does not mention reversibility, permissions, or whether the pending state is removed, leaving significant behavioral gaps.

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, well-structured sentence. It front-loads the action and immediately adds relevant behavioral details without waste. Every clause 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 simple approve operation with two parameters, the description covers the core purpose and outcome. It implies the target is a pending memory, which is sufficient. Though it omits prerequisites like the memory being in a pending state, that is obvious from the context and does not hinder correct invocation.

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?

The schema description coverage is 50%—only 'approver' has a description, while the required 'id' has none. The tool description adds no parameter information, so the meaning of 'id' (the pending memory's identifier) is only inferred from context. It does not compensate for the schema gap.

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

Purpose5/5

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

The description clearly states the verb and resource: 'Approve a pending memory.' It adds that it is a human action, distinguishing it from other memory tools like reject, forget, or recall. The explicit outcome (governs and syncs) further clarifies the purpose.

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

Usage Guidelines3/5

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

The description gives context that this is for approving pending memories, but it does not explicitly mention when to use this versus alternatives like reject or list_pending. It implies the workflow but lacks explicit exclusions or direct comparisons.

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

forgetC

Delete a memory by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

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 conveys that the tool deletes a memory, but fails to mention whether the deletion is permanent, irreversible, or whether it affects related data. For a destructive operation, this is a significant transparency 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?

A single, direct sentence with no filler. The core verb and object are front-loaded, and every word contributes to the meaning.

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 0% parameter description coverage, this short description may not fully help an agent understand expected behavior, return values, error cases, or side effects like irrevocable memory removal. More context is needed for a deletion tool.

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 clarify the parameters. 'Delete a memory by id' does explain that 'id' is the memory's identifier, but it does not specify where the id comes from or any validation/format constraints beyond the schema's 'string' type.

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 'Delete a memory by id' clearly identifies the action (delete) and the target resource (a memory) along with the key lookup method (by id). It does not explicitly name or distinguish sibling tools, but the verb-resource pair is specific enough to avoid confusion with remember, recall, or list_pending.

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?

There is no guidance about when to use this tool versus siblings such as 'reject' or 'approve'. The description only states what it does, not which scenarios call for deleting a memory or what precedes this action (e.g., getting a valid id via list_pending/recall).

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

list_pendingA

List memories awaiting human approval, so they can be reviewed and approved or rejected.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description is the only behavioral signal. 'List' conveys a read-only operation, and 'awaiting human approval' describes the state of returned items. It does not disclose output fields, ordering, or any side effects, but for a simple list operation this is acceptable.

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 concise sentence with no filler. The core action is front-loaded, and the subordinate clause explains why the tool exists in the workflow.

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?

For a simple tool with one optional parameter and no output schema, the description is mostly sufficient: it states what is listed and why. However, it omits the effect of the limit parameter and does not explicitly describe the return contents, leaving a few details to inference.

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%, and the description does not mention the optional 'limit' parameter at all. The parameter name is somewhat self-explanatory, but the description provides no additional meaning beyond the schema constraints.

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 uses a specific verb ('List') and a specific resource ('memories awaiting human approval'), and explains the purpose: review, approve, or reject. This clearly distinguishes it from sibling tools like recall or approve.

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

Usage Guidelines4/5

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

The description implies when to use the tool: whenever pending memories need human review. It does not explicitly name alternatives or exclusions, but 'awaiting human approval' is a strong contextual signal that separates this from general memory listing.

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

recallA

Recall approved memories relevant to a query. Only human-approved memories are returned — pending or rejected ones never surface.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
limitNo
queryNoKeywords to match
scopeNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description bears the full burden of behavioral disclosure. It adds a valuable, non-obvious guarantee: only human-approved memories are returned, and pending/rejected ones are never surfaced. It does not describe empty-result behavior, read-only guarantees, or ordering, but the core filtering trait is clearly disclosed.

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 two compact sentences with no filler. The purpose is front-loaded in the first sentence, and the second sentence delivers the key scoping constraint. Every word earns its place.

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 tool has 4 optional parameters, two enums, no output schema, and no annotations. The description is adequate for basic use (retrieving approved memories by query) but omits critical context: what the type/scope enums represent, how the limit behaves, whether all approved memories are returned when no query is given, and what the return structure looks like. It is a minimal viable description with clear 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 only 25% (only the query parameter has a description), so the description must compensate for type, limit, and scope. It does not: the description only echoes 'query' generically and adds no meaning for the enum values (type, scope) or the limit constraint. An agent would remain uncertain about how to properly set type, scope, or limit.

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 ('Recall') and a specific resource ('approved memories relevant to a query'), making the tool's purpose immediately clear. The additional sentence ('Only human-approved memories are returned — pending or rejected ones never surface') explicitly distinguishes this tool from memory mutation/list-pending siblings by scoping the retrieval to approved items, even though no sibling is named.

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

Usage Guidelines3/5

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

The description clearly implies the tool is for retrieving approved memories relevant to a query, and the 'pending or rejected ones never surface' warning hints that it is not for accessing unapproved items. However, it never explicitly mentions sibling tools (e.g., list_pending, remember) or states when to choose this tool over them, leaving the usage guidance implied rather than explicit.

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

rejectB

Reject a pending memory so it never governs.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.1/5.0
Behavior3/5

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

The description adds a meaningful behavioral fact—a rejected memory is never to govern—which is more than a simple operation. However, it does not reveal what happens to the pending record itself (deleted, suppressed, reversed) or other side effects. Since no annotations are provided, the description carries the burden but only partially fulfills it.

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?

A single concise sentence delivers both the core action and its inted effect with no redundant wording. The content is front-loaded and focused.

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?

For a simple one-parameter action, the high-level outcome is communicated, and an agent can guess the input id relates to the pending memory. But missing details such as the final status of the memory, possible id constraint, reversibility, and output make the definition only minimally complete.

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?

The schema defines only a required 'id' with no description, and the schema description coverage is 0%. The description does not mention 'id' at all, so an agent cannot infer what identifier is expected or whether it refers to a pending memory reference.

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 uses a specific verb, 'reject', on a specific resource, 'a pending memory', and explains the intended consequence ('never governs'). This makes the operation identifiable and distinguishable from the sibling tools such as approve and list_pending, though it does not explicitly differentiate itself from forget.

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?

There is no guidance about when to use this tool versus its siblings. The description merely states what the tool does, leaving an agent to infer that it is for pending memories the user wants to reject, but it never mentions approve, forget, or any decision criteria.

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

rememberA

Propose a new memory. It is recorded as PENDING and does not govern until a human approves it (agents propose, humans approve). Set CONXT_AUTO_APPROVE=1 for frictionless solo use.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesThe kind of memory
scopeNoVisibility (default personal)
sourceNoWhere it came from, e.g. cursor, claude
contentYesThe memory, as a short statement

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 alone communicates the critical behavioral trait: the memory is PENDING and does not take effect until human approval. This is a key side effect that agents must know. The CONXT_AUTO_APPROVE hint adds practical detail. No contradiction with annotations (there are none).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and approval flow, then a configuration tip. Every sentence earns its place with no fluff or 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?

For a tool with 4 parameters, no output schema, and no annotations, the description covers the essential behavioral context (PENDING) and usage context (approval flow). It lacks 'when to use vs. alternatives' and potential error cases, but these are minor for a simple 'propose' tool with well-named siblings.

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 100%, so each parameter has a description. The tool description adds no extra parameter-level meaning beyond the schema, such as formatting constraints, examples, or required-value rationale. Baseline 3 is appropriate since the schema fully documents parameters.

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

Purpose5/5

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

The description clearly states the verb 'propose' with the resource 'a new memory', and explicitly mentions the PENDING state, which distinguishes it from siblings like approve and reject. An agent can immediately grasp the tool's function without ambiguity.

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

Usage Guidelines4/5

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

The description provides clear context by explaining the PENDING/approval workflow and suggests a configuration for solo use. However, it does not explicitly contrast with siblings (e.g., 'use approve to confirm pending memories') or state when not to use it, though the purpose and sibling names make it inferable.

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. 6 tool updatesv0.1.0
    • First observedapprove
    • First observedforget
    • First observedlist_pending
    • First observedrecall
    • First observedreject
    • First observedremember

TDQS

A3.6/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct role in the memory lifecycle: remember proposes, recall retrieves approved, list_pending shows pending, approve/reject take opposite actions on pending, and forget deletes. No two tools appear to do the same thing, and the descriptions reinforce their unique purposes.

Naming Consistency4/5

All tool names are lowercase verbs, but list_pending uses an underscore while the others are single words (remember, recall, approve, reject, forget). This is a minor deviation but the pattern is still predictable—most are simple imperatives. The inconsistency is small enough to not cause confusion.

Tool Count5/5

With 6 tools, the server is well-scoped for a memory management system. It covers the essential operations without redundancy, and the count feels appropriate—not overly thin nor bloated.

Completeness3/5

The server covers create (remember), read (recall), and delete (forget) for approved memories, plus approval workflow tools (list_pending, approve, reject). However, there is no update/modify operation for existing memories, and no way to list all approved memories (recall only returns relevant ones). These gaps, particularly the missing update capability, mean the lifecycle is not fully complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A local-first MCP memory server providing persistent, searchable memory for AI agents, powered by SQLite.
    1 npm
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    A local-first MCP server that gives AI clients a shared, user-owned memory and skills plane, enabling persistent memory across apps via the Model Context Protocol.
    MIT