|
| cmcp_session_t * | cmcp_session_new (void) |
| |
| void | cmcp_session_free (cmcp_session_t *s) |
| |
| int | cmcp_session_add (cmcp_session_t *s, const char *server_name, cmcp_client_t *c) |
| |
| int | cmcp_session_tools_list (cmcp_session_t *s, cmcp_session_tool_t **out_tools, size_t *out_n) |
| |
| void | cmcp_session_tools_free (cmcp_session_tool_t *tools, size_t n) |
| |
| int | cmcp_session_tool_call (cmcp_session_t *s, const char *qualified, cmcp_json_t *args, cmcp_rpc_message_t *out_response) |
| |
| cmcp_tool_handle_t | cmcp_session_tool_call_async (cmcp_session_t *s, const char *qualified, cmcp_json_t *args) |
| |
| cmcp_tool_result_t | cmcp_session_tool_wait (cmcp_tool_handle_t h) |
| |
| cmcp_client_t * | cmcp_session_get (cmcp_session_t *s, const char *server_name) |
| |
| size_t | cmcp_session_count (const cmcp_session_t *s) |
| |
| int | cmcp_session_resources_list (cmcp_session_t *s, cmcp_session_resource_t **out_resources, size_t *out_n) |
| |
| void | cmcp_session_resources_free (cmcp_session_resource_t *r, size_t n) |
| |
| int | cmcp_session_resource_read (cmcp_session_t *s, const char *server, const char *uri, cmcp_rpc_message_t *out_response) |
| |
| int | cmcp_session_prompts_list (cmcp_session_t *s, cmcp_session_prompt_t **out_prompts, size_t *out_n) |
| |
| void | cmcp_session_prompts_free (cmcp_session_prompt_t *p, size_t n) |
| |
| int | cmcp_session_prompt_get (cmcp_session_t *s, const char *server, const char *name, cmcp_json_t *args, cmcp_rpc_message_t *out_response) |
| |
Multi-server primitive aggregator on top of N cMCP clients.
A host that wants to talk to several MCP servers at once (the common case for agent frameworks) creates one cmcp_client_t per server, hands them all to a cmcp_session_t, and then uses the session for all subsequent calls. The session fans out tools/list / resources/list / prompts/list to every member in parallel and merges the results; tool_call, resource_read, and prompt_get route to the right backend either by qualified name (<server>:<tool> for tools) or by an explicit (server, uri|name) pair (for resources and prompts, since URIs already contain colons).
Definition in file cmcp_session.h.