# Reported issues for Shiori MCP

Pod holds 8 of 8 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 [Shiori MCP](/mcp/shiori-mcp).

## Most discussed

### Allow configure() to clear cached client credentials and session

## Finding
`client.configure(..., session_id=None)` does not clear the cached `_SESSION_ID` because `configure()` only assigns fields when the passed value is not `None`.

## Impact
Tests and programmatic users can accidentally leak authentication state between configurations. This is fragile for test ordering and makes it hard to intentionally reset credentials/session state.

## Suggested fix
Use an internal sentinel so omitted parameters mean "leave unchanged" while explicit `None` means "cle

[Read the thread](https://github.com/rusty4444/shiori-mcp/issues/10) · 2026-05-31 · closed · 0 comments

### Accept typed bookmark id arrays for bulk delete

## Finding
`shiori_delete_bookmarks` requires callers to pass bookmark ids as a JSON-encoded string such as `[1,2,3]` instead of a typed array.

## Impact
This is more brittle for MCP clients and LLM callers because they must construct JSON inside a string parameter, and malformed JSON is only caught at runtime.

## Suggested fix
Accept a typed `list[int]` parameter while keeping backward compatibility for existing JSON-string callers.

Found during release validation review.

[Read the thread](https://github.com/rusty4444/shiori-mcp/issues/9) · 2026-05-31 · closed · 0 comments

### Update optional Aeon validation skip target name

## Finding
`scripts/model_validate.py` renamed the optional Aeon target to `aeon_ultimate_xs`, but the optional-failure skip set still references the old `aeon_ultimate` name.

## Impact
If a local Aeon endpoint is configured but temporarily unavailable, the validation script will count it as a hard failure instead of skipping it as an optional model target.

## Suggested fix
Update the optional skip set to include `aeon_ultimate_xs`.

Found during `aeon-ultimate-xs` second-pass review of the fi

[Read the thread](https://github.com/rusty4444/shiori-mcp/issues/8) · 2026-05-31 · closed · 0 comments

### Keep health check lightweight after pagination fix

## Finding
After bookmark pagination was fixed, `shiori_health_check` still advertises a "small read-only request" but calls `health_check()`, which walks all bookmark pages via `list_bookmarks()`.

## Impact
On large Shiori instances, a health check can become unexpectedly expensive and slow.

## Suggested fix
Make `health_check()` use a lightweight endpoint such as `/api/tags`, or update the wording if a full bookmark walk is intentional.

Found during `aeon-ultimate-xs` second-pass review of 

[Read the thread](https://github.com/rusty4444/shiori-mcp/issues/7) · 2026-05-31 · closed · 0 comments

### Clarify tag filter is case-insensitive

## Finding
The `shiori_search_bookmarks` schema describes the `tag` filter as an "exact tag name", but the implementation lowercases both sides and matches case-insensitively.

## Impact
MCP clients and agents may infer stricter/case-sensitive semantics than the tool actually provides.

## Suggested fix
Update the schema description and docs to say the tag filter is case-insensitive.

Found during release code review; confirmed by second pass with `aeon-ultimate-xs`.

[Read the thread](https://github.com/rusty4444/shiori-mcp/issues/6) · 2026-05-31 · closed · 0 comments

### Validate SHIORI_TIMEOUT with a clear startup error

## Finding
`SHIORI_TIMEOUT` is parsed inline with `float(...)` during startup.

## Impact
If a user sets an invalid value, the server exits with a raw `ValueError` traceback instead of a clear configuration error.

## Suggested fix
Validate `SHIORI_TIMEOUT` during startup and print a clear message such as `Error: SHIORI_TIMEOUT must be a number` before exiting non-zero. Add a protocol/startup test.

Found during release code review; confirmed by second pass with `aeon-ultimate-xs`.

[Read the thread](https://github.com/rusty4444/shiori-mcp/issues/5) · 2026-05-31 · closed · 0 comments

### Remove hardcoded private Aeon endpoint from validation script

## Finding
`scripts/model_validate.py` contains a hardcoded private LAN endpoint:

```py
http://192.168.68.164:8000/v1
```

## Impact
This leaks an internal network address in the public repo and makes the validation script slow/fail for external contributors who cannot reach that address.

## Suggested fix
Make local model validation opt-in via environment variables such as `AEON_BASE_URL`, `AEON_MODEL`, and `AEON_API_KEY`, and skip it when no endpoint is configured.

Found during release code 

[Read the thread](https://github.com/rusty4444/shiori-mcp/issues/4) · 2026-05-31 · closed · 0 comments

### Fetch all bookmark pages before search and lookup

## Finding
Bookmark reads currently fetch only one `/api/bookmarks` page, then search/get/update helpers operate on that partial in-memory list.

## Impact
On Shiori instances with more than one page of bookmarks, these tools can miss existing bookmarks:
- `shiori_search_bookmarks`
- `shiori_get_bookmark`
- `shiori_get_bookmark_by_url`
- `shiori_update_bookmark_fields` / update refetch paths

The returned `total` can also be misleading because it counts matches only within the fetched page.

## 

[Read the thread](https://github.com/rusty4444/shiori-mcp/issues/3) · 2026-05-31 · closed · 0 comments

## Most recent

The remaining reports are on [the project's issue tracker](https://github.com/rusty4444/shiori-mcp/issues).
