Organized

This commit is contained in:
Jason Thistlethwaite
2026-10-17 20:50:35 -04:00
parent bd26c8894f
commit 9ee9eb3ec6
130 changed files with 24172 additions and 140 deletions
+34
View File
@@ -220,6 +220,22 @@ The stdio server supports both MCP framing styles used by clients in the wild:
Responses mirror the detected input framing mode for compatibility.
### JSON-RPC response normalization (2026-07-10)
When running under Hermes's current Python MCP client, JSON-RPC responses with
`result` as a top-level JSON array (for example `[]`) can trigger repeated
Pydantic validation errors in `mcp.client.stdio`, followed by reconnect loops.
To prevent that log spam and reconnect churn, redMCP now normalizes list-style
JSON-RPC results at the dispatcher boundary:
- associative arrays (objects) pass through unchanged
- list arrays are wrapped as `{ "items": [...] }`
- empty list results are wrapped as `{ "items": [] }`
This keeps response payloads object-shaped for broad client compatibility while
preserving the underlying data.
For local testing, run the Streamable HTTP server:
```sh
@@ -336,6 +352,24 @@ customer-visible mail require an explicit tool call such as
`redmine_send_helpdesk_response` or `redmine_update_issue` with
`send_helpdesk_email=true`.
All MCP tools also accept optional `impersonate_user` to run the call as a
specific Redmine login when the configured API account has permission to switch
users. When omitted, calls run as the configured API user.
```json
{
"name": "redmine_update_issue",
"arguments": {
"impersonate_user": "jason",
"issue_id": 39858,
"notes": "Replying as Jason via MCP"
}
}
```
This applies to the entire tool call, including multi-step actions such as
`redmine_update_issue` with `send_helpdesk_email=true`.
Run the local no-network query normalizer checks with:
```sh