diff options
| author | tanaka takashi <isazaka@gmail.com> | 2026-06-30 19:03:25 +0900 |
|---|---|---|
| committer | tanaka takashi <isazaka@gmail.com> | 2026-06-30 19:03:25 +0900 |
| commit | 05c8e0a31a0d4192c590e833b24393208e1c751f (patch) | |
| tree | f7c2c82c9327abde67bf3acf1d0258573b3bc6c2 /src/mcp/tools/write_message.c | |
| parent | 4bc721c3bf7589b519c5730d093f704ce56e3f09 (diff) | |
fix: MCPCをvendored fork化しMCP準拠と接続安定性を改善
- Git submoduleを廃止してMCPCを直接管理
- Windowsで254リクエスト付近に発生する切断を修正
- JSON-RPC 2.0エラー応答を標準化
- tool schemaとruntimeの必須・任意引数を一致
- 1000回連続呼び出しの回帰テストを追加
Diffstat (limited to 'src/mcp/tools/write_message.c')
| -rw-r--r-- | src/mcp/tools/write_message.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/mcp/tools/write_message.c b/src/mcp/tools/write_message.c index 1d7ece2..f9c078a 100644 --- a/src/mcp/tools/write_message.c +++ b/src/mcp/tools/write_message.c @@ -162,8 +162,8 @@ call_write_message(const mcpc_tool_t *tool, mcpc_ucbr_t *result) input.content = tiny_mcp_tool_get_string(tool, "content", TINY_CONTENT_MAX); metadata = tiny_mcp_tool_get_string(tool, "metadata_json", TINY_CONTENT_MAX); bool valid = context && input.session_id && input.session_id[0] && role && input.content - && input.content[0] && metadata && tiny_role_parse(role, &input.role) - && parse_metadata(metadata, &input); + && input.content[0] && tiny_role_parse(role, &input.role) + && parse_metadata(metadata ? metadata : "{}", &input); if (!valid) { tiny_mcp_tool_add_error(result, "VALIDATION_ERROR", "invalid write_message arguments"); @@ -204,10 +204,13 @@ tiny_mcp_register_write_message(mcpc_server_t *server) { mcpc_tool_t *tool = tiny_mcp_tool_new("write_message", "Append a conversation message", call_write_message); - return tool && tiny_mcp_tool_add_property(tool, "session_id", "Session ID", MCPC_U8STR) - && tiny_mcp_tool_add_property(tool, "role", "user, assistant, or system", MCPC_U8STR) - && tiny_mcp_tool_add_property(tool, "content", "Message text", MCPC_U8STR) - && tiny_mcp_tool_add_property( - tool, "metadata_json", "Metadata object JSON; use {} when empty", MCPC_U8STR) + return tool && tiny_mcp_tool_add_property(tool, "session_id", "Session ID", MCPC_U8STR, true) + && tiny_mcp_tool_add_property(tool, "role", "user, assistant, or system", MCPC_U8STR, true) + && tiny_mcp_tool_add_property(tool, "content", "Message text", MCPC_U8STR, true) + && tiny_mcp_tool_add_property(tool, + "metadata_json", + "Optional metadata object JSON; defaults to {}", + MCPC_U8STR, + false) && mcpc_server_add_tool(server, tool) == MCPC_EC_0; } |
