Avoid reserved MCP session argument

This commit is contained in:
Hakan Seven committed 2026-09-07 19:34:31 +03:00
1 parent 8922a5a25b
commit d35a93c6e8
4 files changed
+32 -23

No files matched your search

+5 -5
View File
@@ -17,11 +17,11 @@ The server provides four tools:
- `ocs_execute` performs one operation or a sequential batch against the real editor.
- `ocs_capture` returns a bounded PNG of the drawing viewport or complete window.
The normal flow is to call `ocs_sessions`, read the chosen session with `ocs_read`, then pass the returned document state into `ocs_execute`. For example, an undo request has this shape:
The normal flow is to call `ocs_sessions`, pass its returned `session_id` as `ocs_session_id` to the other tools, read the chosen session with `ocs_read`, then pass the returned document state into `ocs_execute`. For example, an undo request has this shape:
```json
{
"session_id": "SESSION_FROM_OCS_SESSIONS",
"ocs_session_id": "SESSION_FROM_OCS_SESSIONS",
"request": {
"op": "undo",
"request_id": "undo-1",
@@ -37,7 +37,7 @@ A complete command can be sent with `run`. Prompt answers are separated by space
```json
{
"session_id": "SESSION_FROM_OCS_SESSIONS",
"ocs_session_id": "SESSION_FROM_OCS_SESSIONS",
"request": {
"op": "run",
"request_id": "polyline-1",
@@ -52,7 +52,7 @@ Use `batch` when the steps are already known. OCS supplies each step with the st
```json
{
"session_id": "SESSION_FROM_OCS_SESSIONS",
"ocs_session_id": "SESSION_FROM_OCS_SESSIONS",
"response_detail": "changed_entities",
"request": {
"op": "batch",
@@ -71,7 +71,7 @@ Execute responses use `response_detail: "compact"` by default and return only th
```json
{
"session_id": "SESSION_FROM_OCS_SESSIONS",
"ocs_session_id": "SESSION_FROM_OCS_SESSIONS",
"op": "query",
"parameters": {"intersections": ["2A", "31"]}
}
+6 -6
View File
@@ -98,14 +98,14 @@ def main() -> None:
if active.get("start"):
client.tool(
"ocs_execute",
{"session_id": session, "request": {"op": "new", "request_id": "eval-new"}},
{"ocs_session_id": session, "request": {"op": "new", "request_id": "eval-new"}},
)
base = 1_000_000 + int(time.time()) % 100_000
draw = client.tool(
"ocs_execute",
{
"session_id": session,
"ocs_session_id": session,
"response_detail": "changed_entities",
"wait_seconds": 0,
"request": {
@@ -129,19 +129,19 @@ def main() -> None:
crossings = client.tool(
"ocs_read",
{"session_id": session, "op": "query", "parameters": {"intersections": line_handles}},
{"ocs_session_id": session, "op": "query", "parameters": {"intersections": line_handles}},
)
assert crossings["count"] == 1 and crossings["intersections"][0]["point"] == [base, 0.0]
nearest = client.tool(
"ocs_read",
{"session_id": session, "op": "query", "parameters": {"near": [base + 20, 0], "handles": handles, "limit": 1}},
{"ocs_session_id": session, "op": "query", "parameters": {"near": [base + 20, 0], "handles": handles, "limit": 1}},
)
assert nearest["entities"][0]["handle"] == circle_handles[0]
measured = client.tool(
"ocs_read",
{"session_id": session, "op": "measure", "parameters": {"handles": circle_handles}},
{"ocs_session_id": session, "op": "measure", "parameters": {"handles": circle_handles}},
)
assert abs(measured["measurements"][0]["curve"]["area"] - 12.566370614359172) < 1e-9
succeeded = True
@@ -151,7 +151,7 @@ def main() -> None:
client.tool(
"ocs_execute",
{
"session_id": session,
"ocs_session_id": session,
"request": {
"op": "batch",
"request_id": f"eval-clean-{base}",
+2 -2
View File
@@ -110,7 +110,7 @@ def modern(server: Path) -> None:
"params": {
"name": "ocs_execute",
"arguments": {
"session_id": "missing",
"ocs_session_id": "missing",
"request": {"op": "run", "request_id": "run-1"},
},
"_meta": meta,
@@ -126,7 +126,7 @@ def modern(server: Path) -> None:
"method": "tools/call",
"params": {
"name": "ocs_execute",
"arguments": {"session_id": "missing", "request": {"op": "undo"}},
"arguments": {"ocs_session_id": "missing", "request": {"op": "undo"}},
"_meta": meta,
},
})