summaryrefslogtreecommitdiff
path: root/docs/mcp.md
diff options
context:
space:
mode:
authortanaka takashi <isazaka@gmail.com>2026-08-29 09:15:24 +0900
committertanaka takashi <isazaka@gmail.com>2026-08-29 09:15:24 +0900
commit5b063df8868ef8cdc2a6aab7a670f911bc0ea9a4 (patch)
treead42c80733be664ccee5dcf3211ba3bb63328acf /docs/mcp.md
parentd57577637c1c1a16176d63d5a89e9eec3c1e4d7c (diff)
feat: read_messagesに本文範囲取得viewを追加HEADv0.1.2main
大きなメッセージをMCPホストのtool result上限に触れず取得できるよう、read_messagesへcontent viewを追加する。UTF-8 byte単位のcontent_offset/content_limitとnext_content_offsetにより、文字境界を壊さず反復取得できる。 各chunkにrevisionとtotal_bytesを返し、expected_revisionで取得途中の更新をCONFLICTとして検出する。未知または削除済みmessageはNOT_FOUND、不正な範囲はVALIDATION_ERRORとする。読み取りには既存memory indexを利用し、永続data、revision、I/O counterを変更しない。 新規MCP toolは増やさず、従来の7 tool構成とhistory/context/sessionsの契約を維持する。storage recordとsnapshot形式も変更しないためmigrationとrebuildは不要。 README、設計書、MCPリファレンスを更新し、多言語UTF-8本文の完全再構成、境界・limit・revision・削除済みmessage、read-only I/O、既存view回帰をprotocol testで検証する。 Tests: ctest --test-dir build/range-read-test -C Release --output-on-failure (20/20 passed)
Diffstat (limited to 'docs/mcp.md')
-rw-r--r--docs/mcp.md41
1 files changed, 39 insertions, 2 deletions
diff --git a/docs/mcp.md b/docs/mcp.md
index 788fc84..e7b959d 100644
--- a/docs/mcp.md
+++ b/docs/mcp.md
@@ -143,13 +143,13 @@ messageのidentity、session、role、作成時刻を維持し、contentまたã�
## `read_messages`
-`view`によりhistory、context、sessionsの3種類を返す。`view`省略時は`history`。
+`view`によりhistory、content、context、sessionsの4種類を返す。`view`省略時は`history`。
### 共通Input
| Parameter | 必須 | 型 | 説明 |
|---|---:|---|---|
-| `view` | No | string | `history` / `context` / `sessions` |
+| `view` | No | string | `history` / `content` / `context` / `sessions` |
| `limit` | No | integer | 1~1000、default 100 |
| `cursor` | No | string | 前回responseの`nextCursor`。内容はopaque |
@@ -174,6 +174,43 @@ session内のlive messageを作成順に返す。
続きを読む場合は同じ`session_id`と`nextCursor`を渡す。
+### `content` view
+
+live message 1件のcontentを、保存状態を変更せずにUTF-8 byte rangeで取得する。MCP hostの
+tool-result上限を避けるため、`next_content_offset`を使って末尾まで反復する。
+
+追加parameter:
+
+| Parameter | 必須 | 型 | Default | 説明 |
+|---|---:|---|---:|---|
+| `message_id` | Yes | string | — | 対象の26文字ULID |
+| `content_offset` | No | integer | 0 | UTF-8 byte offset。0、末尾、またはcode point境界 |
+| `content_limit` | No | integer | 4096 | 目標chunk bytes、1~65536 |
+| `expected_revision` | No | integer | — | 指定時は現在revisionとの一致を要求 |
+
+```json
+{
+ "content_range": {
+ "message_id": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
+ "revision": 1,
+ "total_bytes": 14420,
+ "content_offset": 4096,
+ "next_content_offset": 8191,
+ "complete": false,
+ "content": "..."
+ }
+}
+```
+
+`complete`がfalseなら、同じ`message_id`、返された`next_content_offset`、最初のresponseで得た
+`revision`を`expected_revision`として次を取得する。limit位置がUTF-8 code point途中なら、
+通常は直前の境界まで短くする。limitが1 code pointより小さい場合だけ、その1文字を完全に
+返すため最大3 bytes超えることがある。
+
+messageが存在しないか削除済みなら`NOT_FOUND`、offsetが範囲外またはUTF-8境界でなければ
+`VALIDATION_ERROR`、`expected_revision`不一致なら`CONFLICT`を返す。このviewはlogical I/O
+counterを含む永続状態を変更しない。
+
### `context` view
指定message、同一sessionの前後message、relation graphを返す。