@conxt/mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@conxt/mcpshow me pending memory proposals"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@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/mcpClaude 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 |
| agent | Propose a memory (pending — doesn't govern yet) |
| agent | Recall approved memories for a query |
| agent/you | See what's awaiting approval |
| you | Approve a pending memory → it now governs |
| 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 livesPrefer 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 |
|
| Local store path |
| off | Approve on |
| unset | Optional cloud sync |
Develop
npm install && npm run build && node dist/index.jsLicense
MIT.
Publishing
CI (.github/workflows/ci.yml) builds and runs the governance smoke test on every
push. To release to npm:
On npmjs.com, confirm you own the
@conxtscope — or rename the package to unscopedconxt-mcpinpackage.json.Add an
NPM_TOKEN(Automation token) as a repository secret (Settings → Secrets and variables → Actions).Cut a release:
npm version patch # or minor / major — creates a v* tag git push --follow-tagsThe
publishworkflow builds, smoke-tests, and runsnpm publish --access public.
Or publish manually:
npm install && npm run build && npm login && npm publish --access publicAvailable Tools
6 toolsapproveA
Approve a pending memory (a human action). Once approved it governs and, if cloud sync is configured, is pushed to Conxt.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| approver | No | Who is approving |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| limit | No | ||
| query | No | Keywords to match | |
| scope | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | The kind of memory | |
| scope | No | Visibility (default personal) | |
| source | No | Where it came from, e.g. cursor, claude | |
| content | Yes | The memory, as a short statement |
TDQS
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.
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.
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.
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.
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.
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.
6 tool updates
v0.1.0- First observed
approve - First observed
forget - First observed
list_pending - First observed
recall - First observed
reject - First observed
remember
TDQS
Scored across 6 tools
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.
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.
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.
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
Related MCP Connectors
Governed personal world model and memory for your AI agent. Pair once, connect over MCP.
Cloud-hosted MCP server for durable AI memory
One memory, every AI. A shared, user-owned markdown memory your AI clients read and write over MCP.
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA local-first MCP memory server providing persistent, searchable memory for AI agents, powered by SQLite.1 npm1Apache 2.0
- FlicenseNot gradedqualityCmaintenanceA local-first, privacy-preserving centralized memory hub for AI agents — MCP-compatible, zero cloud egress.3-
- AlicenseNot gradedqualityCmaintenanceA local-first memory server for AI tools that provides cross-tool, consent-gated, and auditable memory management via MCP.AGPL 3.0
- AlicenseNot gradedqualityAmaintenanceA 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