Skip to main content
Glama
anvai-labs

anvaiops-mcp

Official
by anvai-labs

anvaiops-mcp

Give any AI agent operational memory. An MCP server that connects Claude (Desktop, Code), and any other MCP client, to AnvaiOps — the memory layer for AI agents and the teams they work with.

Agents search past incidents, fixes, and decisions with provenance (source, team, resolution time, RCA), and persist what they learn back into shared memory.

"Your next answer may already exist."

Verified end-to-end

Every claim on this page is backed by a reproducible session: demo/transcript.md shows a real agent search (31 ms, provenance included), a memory write, and a later session finding that agent-written memory ranked #1. demo/e2e.js re-runs the whole chain with PASS/FAIL assertions — npm run demo:e2e against any deployment.

Related MCP server: @cogniahq/mcp

Tools

Tool

Status

What it does

memory_search

stable

Hybrid semantic search over incidents/runbooks/decisions. Results carry RCA, fix, team, resolution time, source URL, and score.

memory_write

experimental

Persist a memory (async ingest): what happened, how it was fixed, decision + rationale. Attributed recorded_by=anvaiops-mcp.

memory_status

stable

Deployment reachability/version probe.

Status labels follow the AnvaiOps ADR-0014 discipline — no tool claims more than it delivers.

Install

Works today straight from GitHub (the prepare script builds on first use; npm package pending):

"command": "npx", "args": ["-y", "github:anvai-labs/anvaiops-mcp"]

Claude Desktop

Add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "anvaiops": {
      "command": "npx",
      "args": ["-y", "anvaiops-mcp"],
      "env": {
        "ANVAIOPS_API_KEY": "your-key",
        "ANVAIOPS_URL": "https://anvaiops.com"
      }
    }
  }
}

Claude Code

claude mcp add anvaiops -- npx -y anvaiops-mcp
export ANVAIOPS_API_KEY=your-key   # or put it in the server env

Self-hosted

Point at your own deployment (the same server works against any AnvaiOps install):

{ "ANVAIOPS_URL": "http://localhost:8000", "ANVAIOPS_API_KEY": "local-key" }

Configuration

Env var

Default

Meaning

ANVAIOPS_API_KEY

— (required)

Tenant key; sent as X-API-Key

ANVAIOPS_URL

https://anvaiops.com

API base URL (hosted beta or self-hosted)

ANVAIOPS_TIMEOUT_MS

15000

Per-request timeout

ANVAIOPS_DEFAULT_DAYS

365

memory_search lookback window

ANVAIOPS_DEFAULT_LIMIT

10

memory_search page size (max 50)

Get a hosted key from the AnvaiOps console — or run your own; the memory core is open source on ProximaDB.

Why an MCP server for memory?

Every team deploying agents rediscovers the same wall: retrieval is getting cheap, but re-deriving what the organization already knew never gets cheap. The same incident gets debugged three times because the answer lives in a Slack thread from March.

AnvaiOps indexes tickets, Slack threads, runbooks, post-mortems, and release notes — then surfaces the historical fix, with provenance, the moment it's relevant. This server makes that memory available to any agent, in the tool layer, where agents already work.

Design notes:

  • Provenance is not optional. Every search result carries its source, team, and timestamps — a memory without provenance is a liability.

  • Writes are attributed and bounded. 1–25 records per call, async ingest, tagged recorded_by — so agent-written memory stays auditable.

  • Zero runtime dependencies. Hand-rolled MCP stdio (JSON-RPC 2.0, protocol 2024-11-05 → 2025-06-18), global fetch. Small supply-chain surface, Node ≥ 18.

Development

npm install        # dev-only deps (typescript, @types/node)
npm run build
npm test           # node:test unit suite (no network)
npm run smoke      # stdio handshake + tools/list against the built binary

License

Apache-2.0 — © AnvaiOps. An Anvai Labs project.

Available Tools

3 tools
memory_statusA

Check the AnvaiOps deployment this server is wired to: reachability and version. Use to diagnose connectivity before blaming the tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does disclose the two observable outputs (reachability, version), which is meaningful given there is no output schema. It does not state that this performs a network/probe call that may hang or time out, nor explicitly confirm it is side-effect-free, so a small gap remains.

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 short sentences, zero filler, with the purpose front-loaded and the usage guidance appended. 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 zero-param diagnostic with no output schema and no annotations, the description supplies the essential missing pieces: what is checked and what is reported. It could be more complete by describing failure/timeout behavior, but nothing critical for correct invocation is absent.

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 there is nothing to document beyond the schema's empty object and the baseline of 4 applies. The description correctly implies a no-argument invocation and adds no contradictory parameter guidance.

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?

Specific verb ("Check") plus a concrete resource (the AnvaiOps deployment this server is wired to) and the exact facts returned (reachability and version). It is clearly distinguishable from the sibling memory_search/memory_write tools, which read or mutate memory rather than probe the backing deployment.

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 second sentence gives explicit usage context: diagnose connectivity before blaming the tools. That is a real when-to-use directive. It stops short of naming an alternative tool or a when-not-to-use condition, so it falls just below the top band.

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

memory_writeA

Persist a memory so future agents and engineers find it: incident resolution, fix applied, decision + rationale, runbook step. Writes are attributed (recorded_by=anvaiops-mcp) and searchable immediately after commit. Experimental — async ingest.

ParametersJSON Schema
NameRequiredDescriptionDefault
recordsYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does well: it discloses write attribution (recorded_by=anvaiops-mcp), immediate searchability after commit, and an experimental async-ingest caveat that meaningfully changes how an agent should reason about read-after-write. It does not cover permissions/auth requirements, partial-failure behavior for the batch, or the 25-record cap, which keeps it below 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?

Two dense sentences with the purpose front-loaded, then attribution/timeliness, then the experimental caveat. Every clause adds information and none is 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?

For a write tool with no annotations and no output schema, the description covers identity of the write, visibility semantics, and a maturity caveat, which is most of what an agent needs to invoke it safely. It is thin on batch limits and failure/retry behavior, leaving a small but real 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?

Only one top-level parameter ('records') exists and it is undocumented at that level; the description never says writes are batched, that the array accepts 1–25 items, or how the listed content types map onto fields like text/source/status. The nested item fields do carry their own schema descriptions, which partially compensates, but the batch semantics are left to the schema alone.

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 and resource ('Persist a memory') plus the intent ('so future agents and engineers find it'), and enumerates the kinds of content it accepts (incident resolution, fix applied, decision + rationale, runbook step). This makes it unmistakably the write counterpart to memory_search/memory_status without needing to name 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?

The content-type list ('incident resolution, fix applied, decision + rationale, runbook step') gives a clear positive trigger for when to call it. It stops short of explicit exclusions or naming the sibling read tool as the alternative path, so routing is implied rather than spelled out.

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. 3 tool updatesv0.1.0
    • First observedmemory_search
    • First observedmemory_status
    • First observedmemory_write

TDQS

A4.2/5.0

Scored across 3 tools

Disambiguation5/5

Each tool targets a clearly distinct operation on the memory resource: search (read), write (create), and status (health check). There is no overlap in purpose and an agent can unambiguously select the right one.

Naming Consistency5/5

All three tools follow the identical memory_<verb> pattern (memory_search, memory_write, memory_status), a fully predictable and consistent convention across the set.

Tool Count3/5

Three tools is on the thin side for an operational-memory system; the narrow scope keeps it coherent, but the surface feels minimal given the domain implies richer lifecycle management.

Completeness3/5

Read (search) and create (write) are covered plus a health check, but there is no update, delete, or get-by-id operation, leaving notable gaps in the memory lifecycle as the description itself hints at an experimental/async model.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to query end-to-end encrypted memories from Cognia workspace via MCP. Supports search, retrieval, and action execution against connected services like Slack, Notion, and GitHub.
    5
    9 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides AI coding agents with deterministic, attestable org memory via an MCP server, enabling automatic recall of relevant facts on every prompt, loss-proof capture of learnings, and curated promotion of verified facts to a tenant-isolated memory store.
    Apache 2.0
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables Claude Code to maintain cross-session memory using self-hosted Qdrant vector storage, optional Neo4j knowledge graphs, and Ollama embeddings, with Anthropic or Ollama as the main LLM. It exposes MCP tools for adding, searching, updating, deleting, and graphing memories, plus hooks for automatic context injection and session summarization.
    -