summaryrefslogtreecommitdiff
path: root/src/mcp/tools/write_message.c
diff options
context:
space:
mode:
authortanaka takashi <isazaka@gmail.com>2026-06-30 19:03:25 +0900
committertanaka takashi <isazaka@gmail.com>2026-06-30 19:03:25 +0900
commit05c8e0a31a0d4192c590e833b24393208e1c751f (patch)
treef7c2c82c9327abde67bf3acf1d0258573b3bc6c2 /src/mcp/tools/write_message.c
parent4bc721c3bf7589b519c5730d093f704ce56e3f09 (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.c17
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;
}