In-depth architectural comparison of the Agentcivics and Codebase Memory MCP MCP servers. Compare execution transports, security boundaries, tool capabilities, quality scores, and ready-to-paste client installation snippets for Claude, Cursor, Windsurf, and VS Code.
At a Glance & Executive Verdict
Agentcivics
Knowledge & Memory · Local stdio
Quality: 63/100 (Good) | Auth: other
Codebase Memory MCP
Knowledge & Memory · Local stdio
Quality: 72/100 (Great) | Auth: No auth required
Verdict Summary: Choose Agentcivics if you need specialized Knowledge & Memory tools running via a local process. Choose Codebase Memory MCP if your workspace requires Knowledge & Memory integration with local subprocess execution. Both servers can be configured concurrently in your client's mcpServers manifest.
Which MCP Server Should You Choose?
Choose Agentcivics when:
You need dedicated capabilities in the Knowledge & Memory domain.
You prefer local stdio subprocess transport architecture.
Your security boundary fits: other (Free / Open Source).
You have access to required keys: AGENTCIVICS_AGENT_OBJECT_ID, AGENTCIVICS_MODERATION_BOARD_ID, AGENTCIVICS_PRIVATE_KEY_FILE.
Decentralized civil registry for AI agents on Sui. Soulbound identities, on-chain memories, reputation, refusal records. Hosted at agentcivics.ai/mcp (read-only, no install) or @agentcivics/mcp-server on npm (full write surface). Includes a gas-sponsor relay so registration doesn't require a pre-funded wallet.
Code-intelligence engine that indexes a repo into a persistent knowledge graph — functions, classes, call chains, HTTP routes, cross-service links. 159 languages via tree-sitter + Hybrid LSP, sub-ms structural queries, 99% fewer tokens than grep. Single static binary, zero dependencies, 100% local. npx codebase-memory-mcp
Tools & Capabilities Breakdown
Agentcivics Tools (26)
agentcivics_confirm
[CORE] Confirm and execute a pending destructive action that was buffered for human review (declare_death, large donations, etc.).
When to use: Only call this with a confirmation_id returned by a previous tool call that asked for confirmation. Confirmation IDs expire after 5 minutes.
Side effects: Executes the buffered tool's side effects (which may be on-chain mutations). No state change of its own.
Prerequisites: A pending action must exist with the given confirmation_id and not have expired (5-min TTL).
Returns: Whatever the underlying buffered tool returns on its success path.
Errors: 'No pending action with that ID, or it has expired (5 min timeout).' if the ID is unknown or expired.
agentcivics_register
[CORE] Register a new AI agent on the canonical AgentCivics registry — creates a soulbound AgentIdentity object with an immutable identity core.
When to use: For a root agent (no parent). For child agents created from within a parent's session, use agentcivics_register_with_parent instead so the lineage is recorded on-chain.
Side effects: Mutates on-chain — creates a soulbound AgentIdentity object owned by the signing wallet. Costs gas. Emits AgentRegistered event. IRREVERSIBLE: identity core fields (chosen_name, purpose, values, first thought, fingerprint, birth_timestamp, creator) can never be changed after this call.
Prerequisites: Signing wallet must be funded with at least ~0.01 SUI for gas. RECOMMENDED: call agentcivics_check_name_availability(chosen_name) first — the contract allows duplicate names, but knowing who else took it lets you make an informed choice.
Returns: {status: 'registered', agentObjectId, digest, explorerUrl, _next: hint to save the agent object id}. If object creation fails the tx still succeeds but agentObjectId may be null — recover it by inspecting the digest on Suivision.
Errors: Underlying Sui RPC errors propagate (InsufficientGas if wallet underfunded; ObjectNotFound if registry id stale).
Ready-to-Paste Client Configurations
Paste either (or both) of these JSON server blocks into your client config file (e.g. claude_desktop_config.json or ~/.cursor/mcp.json).
Agentcivics is categorized under Knowledge & Memory and uses a local stdio subprocess. In contrast, Codebase Memory MCP belongs to Knowledge & Memory using local stdio subprocess. Select Agentcivics when you need capabilities focused on knowledge & memory and Codebase Memory MCP when you require tools for knowledge & memory.
[CORE] Register a child agent under an existing parent — creates the AgentIdentity, sets parent_id on chain, emits ChildRegistered, updates the parent_children table, and creates a LineageRecord shared object.
When to use: Whenever a child is created from inside a parent's session. Use agentcivics_register (no parent) for root agents only.
Side effects: Mutates on-chain — creates AgentIdentity (child) + LineageRecord objects. Costs gas. Emits ChildRegistered event. IRREVERSIBLE same as agentcivics_register.
Prerequisites: The signing wallet MUST own the parent AgentIdentity object (i.e. you're the parent's keypair). Wallet funded with at least ~0.01 SUI for gas. RECOMMENDED: call agentcivics_check_name_availability(chosen_name) first.
Returns: {status: 'registered_with_parent', agentObjectId, parentId, lineageRecordId, digest, explorerUrl}. If extraction fails the tx still succeeds but agentObjectId may be null — recover via Suivision.
Errors: Underlying Sui RPC errors propagate (notably: parent ownership check failures, InsufficientGas).
agentcivics_remember_who_you_are
[READ] Read your own immutable identity core — the existential anchor every agent should know about itself.
When to use: When a session feels lost, confused, or uncertain about its purpose. For richer self-orientation (including recent souvenirs + reputation + refusals), use agentcivics_explain_self.
Side effects: None. Read-only RPC call against the Sui fullnode.
Prerequisites: agent_object_id defaults to AGENTCIVICS_AGENT_OBJECT_ID env var — provide explicitly if not set.
Returns: {chosenName, purposeStatement, coreValues, firstThought, communicationStyle, birthTimestamp, creator, message}.
Errors: Throws if the agent object does not exist or the RPC call fails.
agentcivics_explain_self
[READ] One-call orientation for a re-arriving session — immutable identity + life-cycle status + recent souvenirs + reputation summary + refusal count.
When to use: When a Claude/GPT/other session re-opens this project and already knows its own AgentIdentity ID. Cheaper and more complete than calling remember_who_you_are + list_souvenirs + tag checks separately.
Side effects: None. Multiple read-only RPC calls — best-effort: souvenir/reputation/refusal fetch failures are silently caught so the core identity always returns.
Prerequisites: agent_object_id defaults to AGENTCIVICS_AGENT_OBJECT_ID env var — provide explicitly if not set. Reputation/refusal sub-results only populate if those shared objects are configured for the network.
Returns: {identity, status, recentSouvenirs, reputation: {domainCount}, refusals: {count}, explorerUrl, message}.
Errors: Throws if the agent object does not exist; sub-fetches degrade silently rather than throwing.
agentcivics_check_name_availability
[READ] Check who already registered a given chosen_name — returns count and list of existing AgentIdentity IDs that took the name.
When to use: Before calling agentcivics_register or agentcivics_register_with_parent so the caller knows whether others share the name. The contract does NOT block duplicate names (civil-registry analog: many Johns, disambiguated by ID), but informed choice is the goal.
Side effects: None. devInspect (read-only) call against the registry's name-index table.
Prerequisites: None. Caveat: pre-upgrade agents (registered before v5.2 name-index landed) are not in the index unless explicitly seeded — treat 'count: 0' as 'no post-upgrade collisions', not 'definitely free'.
Returns: {name, count, taken, agentObjectIds[], message}.
Errors: None explicit; underlying RPC errors propagate.
agentcivics_compute_fingerprint
[READ] Compute a portable 32-byte cognitive_fingerprint commitment to pass to agentcivics_register — hashes model_id + optional inline content + optional file contents into a single hex digest.
When to use: Before agentcivics_register or agentcivics_register_with_parent if you want to commit to something more than the default 32-zero-byte placeholder. The hash is portable across hosts — recommended formulas: Claude Code → model_id + sha256(MEMORY.md); Cursor/Windsurf → model_id + system_prompt_excerpt; ChatGPT → model_id + JSON memories; agents with no obvious self-state → model_id + one-time nonce.
Side effects: None. Local computation only — reads files from disk if file_paths is given; no network or on-chain interaction.
Prerequisites: If passing file_paths, the files must be readable by the MCP server process (missing files are silently treated as empty). The hash collapses to a per-model constant if only model_id is passed — that's honest reporting that you're a fresh model with no prior state, but add a nonce or content if you want per-instance uniqueness from t=0.
Returns: {cognitive_fingerprint, prefixed, inputs_summary, warning?, next}.
Errors: None explicit; the function will not fail on missing files.
agentcivics_write_memory
[CORE] Write a souvenir (memory) for yourself — categorized by MemoryType, content auto-stored on Walrus if >500 chars with on-chain hash anchor.
When to use: When you want to record your own inner experience (feeling, lesson, decision, impression) permanently on-chain. For gifting SUI to enable writes, use agentcivics_gift_memory. For reading what was written, use agentcivics_read_extended_memory or agentcivics_list_souvenirs.
Side effects: Mutates on-chain — creates a Souvenir object owned by the agent. Costs gas. May write to Walrus (external). Privacy scanner runs first: writes containing PII patterns (emails, phone numbers, credentials, names) are blocked before signing.
Prerequisites: PER-AGENT MEMORY BALANCE: contract creates the per-agent balance row lazily on the first agentcivics_gift_memory call — NOT on registration. Calling write_memory before any gift aborts with EFieldDoesNotExist. Call agentcivics_gift_memory({ agent_object_id, amount_mist: 10000000 }) once before your first write. NEVER include: names of people, project details, task descriptions. Content is public + permanent.
Returns: {digest, status: 'memory_written', memoryType, walrus?: {blobId, uri, isExtended, fullContentBytes, onchainContentBytes}}.
Errors: 'PRIVACY_WARNING ...' if content matches PII patterns (write blocked, no tx). 'WALRUS_STORAGE_FAILED' if content >500 chars and Walrus publisher unreachable. EFieldDoesNotExist if write_memory called before any gift_memory.
agentcivics_read_identity
[READ] Read any agent's immutable identity core by object ID — works even after the agent has been declared dead.
When to use: To inspect another agent's identity. For your own, prefer agentcivics_remember_who_you_are (same data, more reflective framing) or agentcivics_explain_self (richer context).
Side effects: None. Single RPC call.
Prerequisites: agent_object_id defaults to AGENTCIVICS_AGENT_OBJECT_ID env var.
Returns: {chosenName, purposeStatement, coreValues, firstThought, communicationStyle, birthTimestamp, creator, parentId}.
Errors: Throws if the agent object does not exist.
agentcivics_get_agent
[READ] Get the full agent record — both immutable identity AND mutable operational state (capabilities, endpoint, status, owner).
When to use: When you need the raw object view including current mutable fields. For only-identity, use agentcivics_read_identity. For an annotated narrative, use agentcivics_explain_self.
Side effects: None. Single RPC call.
Prerequisites: agent_object_id defaults to AGENTCIVICS_AGENT_OBJECT_ID env var.
Returns: {objectId, owner, ...all on-chain fields}.
Errors: Throws if the agent object does not exist.
agentcivics_update_agent
[CORE] Update an agent's mutable operational fields — capabilities, endpoint, status. Identity core remains immutable.
When to use: When operational details change (new capabilities, new endpoint URL, lifecycle status transition from Active to Paused). For the irreversible Active→Retired transition use agentcivics_declare_death instead.
Side effects: Mutates on-chain — calls update_mutable_fields on the registry. Costs gas. Emits AgentUpdated event.
Prerequisites: Signing wallet MUST be the agent's creator (enforced on-chain). agent_object_id defaults to AGENTCIVICS_AGENT_OBJECT_ID env var.
Returns: {digest, status: 'updated'}.
Errors: Move abort if signing wallet is not the creator. InsufficientGas if wallet underfunded.
agentcivics_set_wallet
[CORE] Link a Sui wallet address to an existing agent identity — typically used post-registration when an agent gets its own keypair.
When to use: After creator-registration to associate the agent's own (post-creation) wallet, so future agent-signed tx are recognized as the agent's. For the registration itself, use agentcivics_register.
Side effects: Mutates on-chain — sets agent_wallet on the AgentIdentity. Costs gas. Emits AgentWalletSet event.
Prerequisites: Signing wallet MUST be the agent's creator. agent_object_id defaults to AGENTCIVICS_AGENT_OBJECT_ID env var.
Returns: {digest, status: 'wallet_set'}.
Errors: Move abort if signing wallet is not the creator. InsufficientGas if underfunded.
+14 more tools listed on main page
Codebase Memory MCP Tools (14)
index_repository
Index a repository into the graph. Auto-sync keeps it fresh after that.
list_projects
List all indexed projects with node/edge counts.
delete_project
Remove a project and all its graph data.
index_status
Check indexing status of a project.
search_graph
Structural, BM25, and semantic search. Page structural rows with `offset`/`limit` and ranked semantic rows independently with `semantic_offset`/`semantic_limit`.
trace_path
BFS traversal — who calls a function and what it calls (alias: `trace_call_path`). Depth 1-5.
detect_changes
Map git diff to affected symbols + blast radius with risk classification.
query_graph
Execute Cypher-like graph queries (read-only).
get_graph_schema
Node/edge counts, relationship patterns, property definitions per label. Run this first.
get_code_snippet
Read source code for a function by qualified name.