cMCP 0.4.1
Model Context Protocol library in pure C11
Loading...
Searching...
No Matches
Data Structures | Typedefs | Functions
cmcp_session.h File Reference

Multi-server primitive aggregator on top of N cMCP clients. More...

#include "cmcp_client.h"
#include "cmcp_types.h"

Go to the source code of this file.

Data Structures

struct  cmcp_session_tool_t
 
struct  cmcp_session_resource_t
 
struct  cmcp_session_prompt_t
 

Typedefs

typedef struct cmcp_session cmcp_session_t
 

Functions

cmcp_session_tcmcp_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_tcmcp_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)
 

Detailed Description

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.

Typedef Documentation

◆ cmcp_session_t

typedef struct cmcp_session cmcp_session_t

Definition at line 31 of file cmcp_session.h.

Function Documentation

◆ cmcp_session_new()

cmcp_session_t * cmcp_session_new ( void  )

◆ cmcp_session_free()

void cmcp_session_free ( cmcp_session_t s)

◆ cmcp_session_add()

int cmcp_session_add ( cmcp_session_t s,
const char *  server_name,
cmcp_client_t c 
)

◆ cmcp_session_tools_list()

int cmcp_session_tools_list ( cmcp_session_t s,
cmcp_session_tool_t **  out_tools,
size_t *  out_n 
)

◆ cmcp_session_tools_free()

void cmcp_session_tools_free ( cmcp_session_tool_t tools,
size_t  n 
)

◆ cmcp_session_tool_call()

int cmcp_session_tool_call ( cmcp_session_t s,
const char *  qualified,
cmcp_json_t *  args,
cmcp_rpc_message_t out_response 
)

◆ cmcp_session_tool_call_async()

cmcp_tool_handle_t cmcp_session_tool_call_async ( cmcp_session_t s,
const char *  qualified,
cmcp_json_t *  args 
)

◆ cmcp_session_tool_wait()

cmcp_tool_result_t cmcp_session_tool_wait ( cmcp_tool_handle_t  h)

◆ cmcp_session_get()

cmcp_client_t * cmcp_session_get ( cmcp_session_t s,
const char *  server_name 
)

◆ cmcp_session_count()

size_t cmcp_session_count ( const cmcp_session_t s)

◆ cmcp_session_resources_list()

int cmcp_session_resources_list ( cmcp_session_t s,
cmcp_session_resource_t **  out_resources,
size_t *  out_n 
)

◆ cmcp_session_resources_free()

void cmcp_session_resources_free ( cmcp_session_resource_t r,
size_t  n 
)

◆ cmcp_session_resource_read()

int cmcp_session_resource_read ( cmcp_session_t s,
const char *  server,
const char *  uri,
cmcp_rpc_message_t out_response 
)

◆ cmcp_session_prompts_list()

int cmcp_session_prompts_list ( cmcp_session_t s,
cmcp_session_prompt_t **  out_prompts,
size_t *  out_n 
)

◆ cmcp_session_prompts_free()

void cmcp_session_prompts_free ( cmcp_session_prompt_t p,
size_t  n 
)

◆ cmcp_session_prompt_get()

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 
)