From 05c8e0a31a0d4192c590e833b24393208e1c751f Mon Sep 17 00:00:00 2001 From: tanaka takashi Date: Tue, 30 Jun 2026 19:03:25 +0900 Subject: fix: MCPCをvendored fork化しMCP準拠と接続安定性を改善 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Git submoduleを廃止してMCPCを直接管理 - Windowsで254リクエスト付近に発生する切断を修正 - JSON-RPC 2.0エラー応答を標準化 - tool schemaとruntimeの必須・任意引数を一致 - 1000回連続呼び出しの回帰テストを追加 --- src/mcp/tools/write_message.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'src/mcp/tools/write_message.c') 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; } -- cgit v1.2.3