Codebase Memory MCP vs Yandex Lavka MCP

A side-by-side look at the Codebase Memory MCP and Yandex Lavka MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

Codebase Memory MCP logoCodebase Memory MCPKnowledge & Memory · Local subprocess (stdio)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-mcp73GreatAuth: no auth requiredYandex Lavka MCP logoYandex Lavka MCPDelivery · Local subprocess (stdio)Order groceries from Yandex Lavka (Russia): search the catalog, build a cart, and place an order with a two-step confirmation before any charge. Unofficial (reverse-engineered private web API); local stdio or remote HTTP with OAuth. uvx yandex-lavka-mcp.63GoodAuth: other

Verdict: choose Codebase Memory MCP for knowledge & memory work as a local process; choose Yandex Lavka MCP for delivery as a local process. You can also run both side by side in one mcpServers block.

Which MCP server should you choose?

Codebase Memory MCP logoChoose Codebase Memory MCP when

  • You need dedicated capabilities in the Knowledge & Memory domain.
  • You prefer a local stdio subprocess transport.
  • Its auth model fits you: No auth required.
  • You want tools like index_repository, search_graph, query_graph.
Explore Codebase Memory MCP

Yandex Lavka MCP logoChoose Yandex Lavka MCP when

  • You need dedicated capabilities in the Delivery domain.
  • You prefer a local stdio subprocess transport.
  • Its auth model fits you: other.
  • You want tools like lavka_status, set_location, list_addresses.
Explore Yandex Lavka MCP

Feature & specification comparison

Rows where the two servers differ are marked.

SpecCodebase Memory MCP logoCodebase Memory MCPYandex Lavka MCP logoYandex Lavka MCP
CategoryKnowledge & MemoryDelivery
Quality signal73/100 · Great63/100 · Good
Install commandConfirmedConfirmed
TransportLocal subprocess (stdio)Local subprocess (stdio)
AuthNo auth requiredother
PricingFreeFree
Required env varsNone listedNone listed
Verified ownerCommunity listingCommunity listing
GitHub stars47,00424
Directory activity 8 views 1 installs 1 upvotes 3 views 0 installs 0 upvotes
Tools1717

Tools & capabilities

Codebase Memory MCP tools 17

  • index_repositoryIndex a repository. full/moderate add semantics; fast omits them; cross-repo-intelligence links services. Reports coverage gaps.
  • search_graphFind symbols via BM25 query, regex name/qn filters, or semantic_query. Rows keep qn/file/lines and in/out over CALLS/USAGE/CALL_REFERENCE/INHERITS/IMPLEMENTS.
  • query_graphRead-only Cypher for multi-hop, aggregation, complexity, or cross-service analysis. Default: 200 visible rows with exact/lower-bound totals and truncation; continue safely with next_cursor. graph=missed is a file tree of flagged coverage gaps; absence is not proof of completeness. Use get_graph_schema(diagnostics=full) for properties.
  • trace_pathTrace callers/callees, data flow, or cross-service paths. Defaults exclude tests and resolver evidence. Rows keep qn/hop with explicit totals, relations, and continuations.
  • get_code_snippetRead a search_graph symbol. auto bounds source and outlines large containers; full restores up to 500 lines. Source/outline pages continue; coverage_note marks gaps.
  • get_file_outlineDeclaration outline of one exact repository-relative file: optional exact label filter, source order, exact total/offset/limit paging; file/folder/container nodes excluded.
  • get_graph_schemaGet node-label and edge-type counts. diagnostics=full also lists queryable properties.
  • compare_graphsCompare two indexed snapshots: deterministic target-only additions and base-only removals of stable node/edge identities; each set capped by limit and a 512 KiB budget with exact totals and truncation reasons.
  • get_architectureCompact counts, languages, packages, entry points. Request structure, dependencies, routes, hotspots, boundaries, layers, clusters, cycles, or file_tree; path scopes a directory.
  • search_codeGraph-ranked text search: compact symbols, full bounded source, or file paths.
  • list_projectsList projects with stable paging. Identity is lean; stats adds graph sizes.
  • delete_projectDelete a project from the index
  • +5 more on the listing page

Yandex Lavka MCP tools 17

  • lavka_statusShow whether the Lavka session and delivery location are configured. Read-only. Call this first to check setup before other tools.
  • set_locationSet the delivery location (required before catalog/cart calls). Provide either lat+lon coordinates or a saved address_id. Persists to config.
  • list_addressesList your saved Lavka delivery addresses (by name). Read-only. Use a returned `label` with use_address to switch delivery to that place.
  • use_addressSwitch delivery to one of your saved addresses, matched by name. Catalog, cart and prices are location-scoped, so this re-points everything. A saved address carries city/street/house; pass flat/entrance/comment if the order needs them.
  • set_delivery_addressSet delivery to ANY address by free text — works for a new city. Resolves the address to coordinates + city/street/house via Lavka's own geo search. Example: set_delivery_address("Казань, улица Баумана, 1", flat="12").
  • search_productsSearch the Lavka catalog at the current delivery location. Read-only. Each result has an `id` (use it with add_to_cart) and a `slug`; get_product takes either.
  • get_productGet one product: price, size, stock, description, nutrition. Read-only. `product` is an `id` or `slug` from a search result, or a Lavka link (a lavka.yandex.ru/good/... page or a shared ...?item=<id> link). `nutrition` is the КБЖУ block exactly as the product card shows it, numbers as Lavka gives them (nothing recomputed), or null when the card has none (non-food items): - `per_100g`: {kcal, protein, fat, carbs} per 100 g, or null. - `per_portion`: the same per the card's other tab, with its `label` ("Всё блюдо", "На упаковку", "На 50 г", ...), or null if the card has only one tab. - `default_basis`: the only tab ("per_100g" / "per_portion") when the card has one; null when it has both (Lavka doesn't say which one opens). - `portion_grams`: the portion's weight when the card states it (from the label, or the item's weight for a whole dish/pack), else null. - `warning`: null, or a note that per_portion doesn't follow from per_100g for that weight — Lavka's own data is wrong then; don't log it blindly.
  • view_cartShow the current cart contents and running total. Read-only. The cart also reports order-readiness. Watch these: - `warning`: a plain-language problem to fix (or null). If set, act on it. - each item's `unavailable_on_depot`: true = it's in the cart but CANNOT be ordered from the current store (only in «Большая Лавка», or sold out here). - `available_for_checkout`: false = the order can't be placed as-is. Remove/replace flagged items with update_cart_item(product_id, 0) before checkout.
  • add_to_cartAdd a product to the cart (increments if already present). No charge. `product_id` is the `id` from a search result. Pass `price` from the same search result when available (Lavka validates it on cart writes). IMPORTANT: search can return items that are only stocked in «Большая Лавка» (a different store) — they add fine but can't be ordered from the current one. After adding, check the returned cart's `warning` and each item's `unavailable_on_depot`; drop any flagged item with update_cart_item(id, 0).
  • update_cart_itemSet the exact quantity of a cart item. quantity=0 removes it. No charge.
  • clear_cartRemove everything from the cart. No charge.
  • checkout_previewPreview the order: items, delivery fee, ETA, address, payment, TOTAL. Charges NOTHING. Show the returned total to the user and ask them to confirm it out loud before calling confirm_order. Always run this before confirming. If the summary has a `warning`, or `available_for_checkout` is false, or any item has `unavailable_on_depot: true`, the order will be REFUSED — fix the cart (remove/replace those items) and preview again before confirming.
  • +5 more on the listing page

Ready-to-paste client configs

Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.

Codebase Memory MCP

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "deusdata-codebase-memory-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "codebase-memory-mcp"
      ]
    }
  }
}

Yandex Lavka MCP

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "dudude-bit-yandex-lavka-mcp": {
      "command": "uvx",
      "args": [
        "yandex-lavka-mcp"
      ]
    }
  }
}

Frequently asked questions

Codebase Memory MCP is categorized under Knowledge & Memory and uses a local stdio subprocess. Yandex Lavka MCP belongs to Delivery and uses a local stdio subprocess. Pick Codebase Memory MCP for knowledge & memory work and Yandex Lavka MCP for delivery.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

Codebase Memory MCP is listed as free. Auth: no auth required. Yandex Lavka MCP is listed as free. Auth: other. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add deusdata-codebase-memory-mcp and dudude-bit-yandex-lavka-mcp as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, Codebase Memory MCP has a quality signal of 73/100 (Great) with 8 views, 1 installs and 47,004 GitHub stars. Yandex Lavka MCP has 63/100 (Good) with 3 views, 0 installs and 24 GitHub stars.