# Reported issues for amnesic

Pod holds 9 of 9 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to [amnesic](/mcp/amnesic).

## Most discussed

### Automate MCP Registry publish via GitHub OIDC (eliminate manual auth)

## Problem
Every time we ship a new version, the MCP Registry publish requires a manual \`mcp-publisher login github\` device-code flow because the token expires in roughly an hour. This means:

- Releases shipped within a tight window get registry updates (good)
- Releases shipped after the token expires need a re-auth (manual, easy to forget)
- v0.1.7 / v0.1.8 / v0.1.9 all skipped registry updates because the token was stale and the changes were docs-only

## Proposed
Add a job to \`.github/wo

[Read the thread](https://github.com/SurajKGoyal/amnesic/issues/6) · 2026-05-26 · closed · 1 comment

### v0.2: native .env support for credentials

## Problem
Users currently have to either:
- Export env vars in their shell rc files (\`MSSQL_PASSWORD\`, etc.)
- Source another project's \`.env\` from their MCP client invocation (brittle, non-portable)

The README implies \`\${VAR}\` expansion works, but doesn't address how the var actually gets set when amnesic runs as an MCP server (which inherits the parent process env, not the user shell).

## Proposed
Auto-load \`~/.config/amnesic/.env\` (if present) on amnesic startup, before reading \`

[Read the thread](https://github.com/SurajKGoyal/amnesic/issues/5) · 2026-05-26 · closed · 1 comment

### Who's using amnesic? 👋

Using amnesic? **Drop a comment.** 👋

It's genuinely the only way I can tell what's actually being used. PyPI download counts are dominated by mirrors and CI, GitHub stars measure something else entirely, and neither tells me whether the MSSQL path works for anyone or whether people care about the relationship graph. A one-line comment tells me more than either number.

## What to say

Anything you're comfortable sharing — **all of it optional**:

- **Who** — company, team, or just "personal pro

[Read the thread](https://github.com/SurajKGoyal/amnesic/issues/16) · 2026-08-16 · open · 0 comments

### db_explain — return the database's own query plan (passthrough, not an analyzer)

## Problem

amnesic can run a query but can't tell you how the database intends to execute it. When the AI writes a slow query against production, there's no way to see why from inside the tool.

To be clear about scope: **this is a passthrough, not an analyzer.** amnesic is not going to do index tuning or plan cost analysis — [Postgres MCP Pro](https://github.com/crystaldba/postgres-mcp) does that well and competing with it is an explicit non-goal (see [ROADMAP.md](../blob/main/ROADMAP.md#where

[Read the thread](https://github.com/SurajKGoyal/amnesic/issues/15) · 2026-08-16 · open · 0 comments

### Soft-FK inference for legacy schemas with no FK constraints

## Problem

`db_discover_relationships` reads FK constraints from the live database. On a well-designed schema that works well. On the schemas where an AI assistant is *most* needed — legacy MSSQL, MySQL tables built without constraints, anything that grew organically over a decade — it returns nothing, because there are no declared constraints to read.

This is precisely the gap a live-introspection server cannot close: there is no metadata to introspect. It's ours to take.

## Proposed shape

[Read the thread](https://github.com/SurajKGoyal/amnesic/issues/14) · 2026-08-16 · open · 0 comments

### Cached schema never expires — add fetched_at and a stale flag

## Problem

`db_get_schema` serves the cached schema **forever**. From `amnesic/tools/schema.py`:

```python
cached_columns = None if force_refresh else store.get_cached_schema(fqn)
```

There is no TTL, no timestamp, and no signal to the caller. A column added six months ago is invisible until a human remembers to pass `force_refresh=True`. `db_detect_drift` exists but is manual and opt-in — the agent has no reason to run it because nothing tells it the cache might be stale.

This is why amnesi

[Read the thread](https://github.com/SurajKGoyal/amnesic/issues/12) · 2026-08-16 · open · 0 comments

### Schema fetch is missing primary keys and indexes

## Problem

`_fetch_schema_from_db` in `amnesic/tools/schema.py` selects only four fields per column:

```
column_name, data_type, is_nullable, max_length
```

No primary keys. No indexes. No defaults. No identity/computed flags.

This means an agent using amnesic **cannot tell whether its `WHERE` clause hits an index**, so it writes slow queries against production. DBHub and Postgres MCP Pro both return index and constraint metadata; this is table stakes for a database MCP server and its absenc

[Read the thread](https://github.com/SurajKGoyal/amnesic/issues/11) · 2026-08-16 · open · 0 comments

### Shrink the tool surface: 12 tools (~3.4k tokens) → ~5 with action/detail_level params

## Problem

amnesic ships 12 MCP tools. Measured from `amnesic/server.py`, the tool definitions total **~2,684 tokens**, plus a **~679-token** server instructions block — roughly **3.4k tokens of context consumed in every session before the agent does anything at all**.

For comparison, DBHub ships 2 tools by default and advertises a 1.4k-token footprint, benchmarking itself against MCP Toolbox (19.0k) and Supabase MCP (19.3k). Tool-surface footprint is now a publicly marketed axis, and ours is 

[Read the thread](https://github.com/SurajKGoyal/amnesic/issues/10) · 2026-08-16 · open · 0 comments

## Most recent

### Token budget: cap every tool response so a single call can't blow out the context window

## Problem

No tool in amnesic caps the size of its response. The only cap in the codebase is `_UNDOCUMENTED_LIST_CAP` in `amnesic/tools/drift.py`.

The worst offender is `db_query`: `max_rows=500` by default with no character budget. A `SELECT *` against a 40-column table returns 500 full row dicts — easily 50k tokens in a single tool result, which can blow out the caller's context window in one call. `db_list_tables` is unbounded too (every cached table with description and aliases), and `db_g

[Read the thread](https://github.com/SurajKGoyal/amnesic/issues/9) · 2026-08-16 · open · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/SurajKGoyal/amnesic/issues).
