Table of Contents

May 16, 2025 · View on GitHub

Server

mcpc_server_t

Server instance

mcpc_server_new_iostrm

Create a I/O streams-base server.

mcpc_server_t *
mcpc_server_new_iostrm (const FILE *const strm_in, const FILE *const strm_out);

strm_in: input stream

strm_out: output stream

mcpc_server_new_tcp

Create a TCP-based server.

mcpc_server_t*
mcpc_server_new_tcp ();

mcpc_server_set_nament

Set server's name.

mcpc_errcode_t
mcpc_server_set_nament (mcpc_server_t *sv, const char8_t *nament);

sv: server

nament: null-terminated name. Must be a UTF-8 string

mcpc_server_capa_enable_prmt

Enable server's general capability of Prompt.

mcpc_errcode_t
mcpc_server_capa_enable_prmt (mcpc_server_t *sv);

sv: server

mcpc_server_capa_enable_prmt_listchg

Enable server's capability of notification for Prompt list updates.

mcpc_errcode_t
mcpc_server_capa_enable_prmt_listchg (mcpc_server_t *sv);

sv: server

mcpc_server_capa_enable_tool

Enable server's general capability of Prompt.

mcpc_errcode_t
mcpc_server_capa_enable_tool (mcpc_server_t *sv);

sv: server

mcpc_server_capa_enable_tool_listchg

Enable server's capability of notification for Prompt list updates.

mcpc_errcode_t
mcpc_server_capa_enable_tool_listchg (mcpc_server_t *sv);

sv: server

mcpc_server_capa_enable_rsc

Enable server's general capability of Resource.

mcpc_errcode_t
mcpc_server_capa_enable_rsc (mcpc_server_t *sv);

sv: server

mcpc_server_capa_enable_rsc_subscr

Enable server's capability of notification for Resource subscription.

mcpc_errcode_t
mcpc_server_capa_enable_rsc_subscr (mcpc_server_t *sv);

sv: server

mcpc_server_capa_enable_rsc_listchg

Enable server's capability of notification for Prompt list updates.

mcpc_errcode_t
mcpc_server_capa_enable_rsc_listchg (mcpc_server_t *sv);

sv: server

mcpc_server_capa_enable_complt

Enable server's general capability of Completion.

mcpc_errcode_t
mcpc_server_capa_enable_complt (mcpc_server_t *sv);

sv: server

mcpc_server_add_tool

Add a Tool to a server.

mcpc_errcode_t
mcpc_server_add_tool (mcpc_server_t *sv, mcpc_tool_t *tool);

sv: server

tool: tool, it will be automatically freed

mcpc_server_add_prmpt

Add a Prompt to a server.

mcpc_errcode_t
mcpc_server_add_prmpt (mcpc_server_t *sv, mcpc_prmpt_t *prmpt);

sv: server

prmpt: prompt, it will be automatically freed

mcpc_server_add_rsc

Add a Resource to a server.

mcpc_errcode_t
mcpc_server_add_rsc (mcpc_server_t *sv, mcpc_rsc_t *rsc);

sv: server

prmpt: prompt, it will be automatically freed

mcpc_server_start

Start a server.

mcpc_errcode_t
mcpc_server_start (mcpc_server_t *sv);

sv: server

mcpc_server_close

Close a server.

mcpc_errcode_t
mcpc_server_close (mcpc_server_t *sv);

sv: server

Tool

mcpc_tool_t

Tool

mcpc_toolprop_t

Tool property

mcpc_tcallcb_t

The callback function of while doing tool calling.

mcpc_toolprop_new

mcpc_toolprop_t *
mcpc_toolprop_new (const char8_t *name, const size_t name_len, const char8_t *desc, const size_t desc_len, mcpc_anytype_t typ);

name: tool property's name

name_len: the length of tool property's name

desc: tool property's description

desc_len: the length of tool property's description

mcpc_toolprop_new2

mcpc_toolprop_t *
mcpc_toolprop_new2 (const char8_t *nament, const char8_t *descnt, mcpc_anytype_t typ);

nament: tool property's name, must be null-terminated

descnt: tool property's description, must be null-terminated

mcpc_tool_new

mcpc_tool_t *
mcpc_tool_new (const char8_t *name, const size_t name_len, const char8_t *desc, const size_t desc_len);

name: tool's name

name_len: the length of tool's name

desc: tool's description

desc_len: the length of tool's description

mcpc_tool_new2

mcpc_tool_t *
mcpc_tool_new2 (const char8_t *nament, const char8_t *descnt);

nament: tool's name, must be null-terminated

descnt: tool's description, must be null-terminated

mcpc_tool_addfre_toolprop

void
mcpc_tool_addfre_toolprop (mcpc_tool_t *tool, mcpc_toolprop_t *toolprop);

tool: tool

toolprop: tool property

mcpc_tool_addcpy_toolprop

void
mcpc_tool_addcpy_toolprop (mcpc_tool_t *tool, mcpc_toolprop_t *toolprop);

tool: tool

toolprop: tool property

mcpc_tool_add_toolprop

Alias of mcpc_tool_addfre_toolprop

mcpc_tool_get_toolprop (deprecate)

const mcpc_toolprop_t *
mcpc_tool_get_toolprop (const mcpc_tool_t *tool, size_t idx);

tool: tool

mcpc_tool_get_toolprop_len

size_t
mcpc_tool_get_toolprop_len (const mcpc_tool_t *tool);

tool: tool

mcpc_tool_get_next_toolprop

const mcpc_toolprop_t *
mcpc_tool_get_next_toolprop (const mcpc_tool_t *tool);

tool: Tool

mcpc_tool_get_tpropval_i32

mcpc_errcode_t
mcpc_tool_get_tpropval_i32 (const mcpc_tool_t *tool, const char8_t *tprop_nament, int32_t *ret);

tool: tool

tprop_nament: tool property's name, null-terminated

ret: the value of tool property

mcpc_tool_get_tpropval_u8str

mcpc_errcode_t
mcpc_tool_get_tpropval_u8str (const mcpc_tool_t *tool, const char8_t *tprop_nament, char8_t *ret, size_t ret_cap, size_t *ret_len);

tool: tool

tprop_nament: tool property's name, null-terminated

ret: the value of tool property

mcpc_tool_get_call_cb

mcpc_errcode_t
mcpc_tool_get_call_cb (const mcpc_tool_t *tool, mcpc_tcallcb_t *ret);

tool: tool

ret: the callback for tools/call

mcpc_tool_set_call_cb

mcpc_errcode_t
mcpc_tool_set_call_cb (mcpc_tool_t *tool, mcpc_tcallcb_t cb);

tool: tool

ret: the callback for tools/call

mcpc_toolcall_result_add_text_printf8

Add a text content to the result of tools/call.

Alias of mcpc_ucbr_toolcall_add_text_printf8.

mcpc_toolcall_result_add_errmsg_printf8

Add a error message to the result of tools/call. This will mark the whole result as an error.

Alias of mcpc_toolcall_result_add_errmsg_printf8.

Resource

mcpc_rsc_t

Resource

mcpc_rsc_new

mcpc_rsc_t *
mcpc_rsc_new (const char8_t *uri, const size_t uri_len, const char8_t *name, const size_t name_len);

uri: Resource's URI

uri_len: the length of Resource's URI

name: Resource's name

name_len: the length of Resource's name

mcpc_rsc_new2

mcpc_rsc_t *
mcpc_rsc_new2 (const char8_t *uri_nt, const char8_t *nament);

uri_nt: Resource's URI, must be null-terminated

nament: Resource's name, must be null-terminated

mcpc_rsc_new3

mcpc_rsc_t *
mcpc_rsc_new3 (mcpc_mime_t mime, const char8_t *uri_nt, const char8_t *nament);

mime: Resource's MIME type

uri_nt: Resource's URI, must be null-terminated

nament: Resource's name, must be null-terminated

mcpc_rsc_free

void
mcpc_rsc_free (mcpc_rsc_t *rsc);

rsc: Resource

mcpc_rsc_get_uri

mcpc_errcode_t
mcpc_rsc_get_uri (const mcpc_rsc_t *rsc, char8_t *ret, size_t ret_cap, size_t *ret_len);

rsc: Resource

mcpc_rsc_getref_uri

mcpc_errcode_t
mcpc_rsc_getref_uri (const mcpc_rsc_t *rsc, const char8_t **ret, size_t *ret_len);

rsc: Resource.

ret: the pointer to Resource's URI.

ret_len: the length of Resource's URI.

mcpc_rsc_getref_name

mcpc_errcode_t
mcpc_rsc_getref_name (const mcpc_rsc_t *rsc, const char8_t **ret, size_t *ret_len);

rsc: Resource.

ret: the pointer to Resource's name.

ret_len: the length of Resource's name.

mcpc_rsc_get_mime

mcpc_errcode_t
mcpc_rsc_get_mime (const mcpc_rsc_t *rsc, mcpc_mime_t *ret);

rsc: Resource.

ret: Resource's MIME type.

Prompt

mcpc_prmpt_t

Prompt

mcpc_prmptarg_t

prompt argument

mcpc_prmptarghint_t

prompt argument hint

mcpc_prmpt_callcb_t

callback for prompts/get

mcpc_prmptarg_new

mcpc_prmptarg_t *
mcpc_prmptarg_new (const char8_t *name, const size_t name_len, const char8_t *desc, const size_t desc_len);

name: Prompt argument's name

name_len: the length of Prompt argument's name

desc: Prompt argument's description

desc_len: the length of Prompt argument's description

mcpc_prmptarg_new2

mcpc_prmptarg_t *
mcpc_prmptarg_new2 (const char8_t *nament, const char8_t *descnt);

nament: Prompt argument's name, must be null-terminated

descnt: Prompt argument's description, must be null-terminated

mcpc_prmptarg_new3

mcpc_prmptarg_t *
mcpc_prmptarg_new3 (const char8_t *nament);

nament: Prompt argument's name, must be null-terminated

mcpc_prmpt_new

mcpc_prmpt_t *
mcpc_prmpt_new (const char8_t *name, const size_t name_len, const char8_t *desc, const size_t desc_len);

name: Prompt's name

name_len: the length of Prompt's name

desc: Prompt's description

desc_len: the length of Prompt's description

mcpc_prmpt_new2

mcpc_prmpt_t *
mcpc_prmpt_new2 (const char8_t *nament, const char8_t *descnt);

nament: Prompt's name, must be null-terminated

descnt: Prompt's description, must be null-terminated

mcpc_prmpt_new3

mcpc_prmpt_t *
mcpc_prmpt_new3 (const char8_t *nament);

nament: Prompt's name, must be null-terminated

mcpc_prmpt_addfre_prmptarg

mcpc_errcode_t
mcpc_prmpt_addfre_prmptarg (mcpc_prmpt_t *prmpt, mcpc_prmptarg_t *prmptarg);

prmpt: Prompt

prmptarg: Prompt argument

mcpc_prmpt_addcpy_prmptarg

void
mcpc_prmpt_addcpy_prmptarg (mcpc_prmpt_t *prmpt, mcpc_prmptarg_t *prmptarg);

prmpt: Prompt

prmptarg: Prompt argument

mcpc_prmpt_add_prmptarg

Alias of mcpc_prmpt_addfre_prmptarg.

mcpc_prmpt_get_prmptarg (deprecated)

const mcpc_prmptarg_t *
mcpc_prmpt_get_prmptarg (const mcpc_prmpt_t *prmpt, size_t idx);

prmpt: Prompt

idx: …

mcpc_prmpt_get_prmptarg_len

size_t
mcpc_prmpt_get_prmptarg_len (const mcpc_prmpt_t *prmpt);

prmpt: Prompt

mcpc_prmpt_get_next_prmptarg

const mcpc_prmptarg_t *
mcpc_prmpt_get_next_prmptarg (const mcpc_prmpt_t *prmpt);

prmpt: Prompt

mcpc_prmpt_getbyname_prmptarg

const mcpc_prmptarg_t *
mcpc_prmpt_getbyname_prmptarg (const mcpc_prmpt_t *prmpt, const char8_t *parg_name, size_t parg_name_len);

prmpt: Prompt

parg_name: Prompt argument's name

parg_name_len: the length of Prompt argument's name

mcpc_prmpt_getbynament_prmptarg

const mcpc_prmptarg_t *
mcpc_prmpt_getbynament_prmptarg (const mcpc_prmpt_t *prmpt, const char8_t *parg_nament);

prmpt: Prompt

parg_nament: Prompt argument's name, must be null-terminated

mcpc_prmpt_get_callcb

mcpc_errcode_t
mcpc_prmpt_get_callcb (const mcpc_prmpt_t *prmpt, mcpc_prmpt_callcb_t *ret);

prmpt: Prompt

ret: the callback for prompts/get

mcpc_prmpt_set_callcb

mcpc_errcode_t
mcpc_prmpt_set_callcb (mcpc_prmpt_t *prmpt, mcpc_prmpt_callcb_t cb);

prmpt: prompt

ret: the callback for prompts/get

mcpc_prmptarg_get_u8str

mcpc_errcode_t
mcpc_prmptarg_get_u8str (const mcpc_prmptarg_t *prmptarg, char8_t *ret, size_t ret_cap, size_t *ret_len);

prmptarg: prompt argument

ret: caller-provided buffer

ret_cap: the buffer's capacity

ret_len: the buffer's length

mcpc_prmptarg_getref_u8str

mcpc_errcode_t
mcpc_prmptarg_getref_u8str (const mcpc_prmptarg_t *prmptarg, const char8_t **ret, size_t *ret_len);

prmptarg: prompt argument

ret: the pointer to prompt's argument string data

ret_len: the length of prompt's argument string data

mcpc_prmptarg_add_hint_printf8

mcpc_errcode_t
mcpc_prmptarg_add_hint_printf8 (mcpc_prmptarg_t *prmptarg, const char8_t *fmt, ...);

prmptarg: prompt argument

fmt: the format string to print

mcpc_prmptget_result_add_user_printf8

Add a complete user prompt to the result of prompts/get.

Alias of mcpc_ucbr_prmptget_add_user_printf8.

mcpc_prmptget_result_add_assist_printf8

Add a complete assistant prompt to the result of prompts/get.

Alias of mcpc_ucbr_prmptget_add_assist_printf8.

Others

mcpc_errcode_t

Library-specific error codes.

Possible values

MCPC_EC_0: success

MCPC_EC_BUG: bug

MCPC_EC_BUFCAP: insufficient buffer capacity

MCPC_EC_LONGTOOLNAME: tool's name is too long

MCPC_EC_LONGTOOLDESC: tool's description is too long

MCPC_EC_LONGTPROPNAME: tool property's name is too long

MCPC_EC_LONGTPROPDESC: tool property's description is too long

MCPC_EC_TOOLPROP_NOTFOUND: tool property is not found

MCPC_EC_TOOLCALL_USERERR: after tool calling, user indicates an error

MCPC_EC_CONNPOOL_NOTADD: connection cannot be added

MCPC_EC_SVIMPL_SOCKET: fail to create TCP socket

MCPC_EC_SVIMPL_BIND: fail to bind TCP socket

MCPC_EC_SVIMPL_LISTEN: fail to listen TCP socket

MCPC_EC_SVIMPL_TCP_INSUF_BUF: insufficient buffer capacity

MCPC_EC_ANYDATA_NOTFOUND: data cannot be found

MCPC_EC_ANYDATA_LONGNAME: data's name is too long

MCPC_EC_PRMPTARG_NOTFOUND: prompt agument cannot be found

MCPC_EC_JSON_FIELD_INVALID: json field's value invalid, this means the field is missing, or field has unexpected type

mcpc_anytype_t

The data type recognizable by the library.

Possible values

MCPC_NONE: nothing

MCPC_I8: int8_t-like type

MCPC_U8: uint8_t-like type

MCPC_I16: int16_t-like type

MCPC_U16: uint16_t-like type

MCPC_I32: int32_t-like type

MCPC_U32: uint32_t-like type

MCPC_I64: int64_t-like type

MCPC_U64: uint64_t-like type

MCPC_U8STR: string of UTF-8 code units

MCPC_I8S: an array of int8_t

MCPC_U8S: an array of uint8_t

MCPC_I16S: an array of int16_t

MCPC_U16S: an array of uint16_t

MCPC_I32S: an array of int32_t

MCPC_U32S: an array of uint32_t

MCPC_I64S: an array of int64_t

MCPC_U64S: an array of uint64_t

MCPC_FUNC: a function

mcpc_mime_t

MIME types recognizable by the library, that conforms to RFC2045.

Possible value

MCPC_MIME_NONE: nothing

MCPC_MIME_TEXT_PLAIN: text/plain

MCPC_MIME_IMAGE_PNG: image/png

MCPC_MIME_IMAGE_JPEG: image/jpeg

MCPC_MIME_IMAGE_GIF: image/gif

MCPC_MIME_AUDIO_MPEG: audio/mpeg

MCPC_MIME_AUDIO_WAV: audio/wav

MCPC_MIME_VIDEO_MPEG: video/mpeg

MCPC_MIME_VIDEO_AVI: video/avi

MCPC_MIME_APPLI_OCTS: application/octet-stream

MCPC_MIME_APPLI_JSON: application/json

MCPC_MIME_APPLI_PDF: application/pdf

mcpc_ucbr_t

User call back result.

mcpc_ucbr_toolcall_add_text_printf8

Add a text message to the result of tools/call.

void
mcpc_ucbr_toolcall_add_text_printf8 (mcpc_ucbr_t *ucbr, const char8_t *fmt, ...);

ucbr: the callback result

fmt: format string to be printed

mcpc_ucbr_toolcall_add_errmsg_printf8

Add a error message to the result of tools/call.

void
mcpc_ucbr_toolcall_add_errmsg_printf8 (mcpc_ucbr_t *ucbr, const char8_t *fmt, ...);

ucbr: the callback result

fmt: format string to be printed

mcpc_ucbr_prmptget_add_user_printf8

Add a user prompt to the result of prompts/get.

void
mcpc_ucbr_prmptget_add_user_printf8 (mcpc_ucbr_t *ucbr, const char8_t *fmt, ...);

ucbr: the callback result

fmt: format string to be printed

mcpc_ucbr_prmptget_add_assist_printf8

Add an assistant prompt to the result of prompts/get.

void
mcpc_ucbr_prmptget_add_assist_printf8 (mcpc_ucbr_t *ucbr, const char8_t *fmt, ...);

ucbr: the callback result

fmt: format string to be printed