Local-first AI memory MCP server for Obsidian vaults. CJK-optimized. Provides unified search across Radar sonar index, Ocean vault full-text, and message history with BM25 FTS5 indexing.
MemOcean has 11 tools with complete input schemas and descriptions, but quality is inconsistent. Naming is verb-first and clear (search, get, create, list, ingest, store, expire). Descriptions range from 50 - 250 chars and explain purpose well. However, parameter descriptions are sparse or missing context (e.g., 'mode' in memocean_seabed_get lacks explanation of 'verbatim' vs 'sonar' behavior). Output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal; no recovery guidance. Write tools (task_create, ingest_file, report_store, expire_clsc) lack confirmation/dry-run patterns. No tool annotations (readOnlyHint, destructiveHint). Composition is reasonable, tools chain via slug/entity IDs, but some tools conflate concerns (memocean_search does 'radar-first' logic internally rather than exposing it as a parameter choice).
Mark a CLSC radar entry as expired by setting valid_until.
Ingest a local file into MemOcean via MarkItDown.
Query the temporal knowledge graph.
BM25 full-text search over cross-agent message history. Pass 3-5 keywords separated by spaces (not a question sentence). Supports keyword queries, boolean operators (AND/OR/NOT), phrase search ("quoted"), and NEAR proximity. KNN vector search disabled by default (set KNN_ENABLED=true to re-enable BGE-m3).
Full-text search over Ocean vault .md files via ripgrep.
Search Radar (CLSC sonar index) via multi-term AND query.
Store verbatim subagent report into Ocean/技術海圖/MemOcean/Reports/.
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination). Responses are returned as dicts but no schema is visible in tool definitions.
Parameter descriptions lack actionable detail. 'mode' in memocean_seabed_get says 'verbatim or sonar' but does not explain what each mode returns or when to use it. 'direction' in memocean_kg_query is undocumented.
Write tools lack confirmation/dry-run patterns. memocean_task_create, memocean_ingest_file, memocean_report_store, and memocean_expire_clsc are irreversible but offer no preview or confirmation step. Agents cannot verify intent before committing.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | <=2025-11-25 | v2 |
Retrieve radar (Seabed) content by slug.
Radar-First unified search across your team's knowledge layers. Default (source='all'): searches Radar sonar index (CLSC summaries) + Message history. Ocean vault full-text scan is opt-in only (source='ocean'). Results ranked by source priority: ocean > radar > messages. Use the `source` param to restrict: 'all' (Radar+Messages, default), 'ocean' (vault full-text), 'radar' (sonar only), 'messages' (history only). No BGE-m3/KNN — pure BM25 FTS.
List all approved skills, or get content of a specific skill.
Create task in pending queue.
No tool annotations. Tools lack readOnlyHint, destructiveHint, or idempotentHint. LLMs cannot distinguish safe reads from destructive writes without parsing descriptions.
Error handling is minimal. No recovery guidance in tool descriptions. Errors are logged but not returned to LLM with actionable next steps (e.g., 'skill not found, try skill_list() to see available skills').