Server API: lifecycle, tool/resource/prompt registry, dispatch, notifications.
More...
|
| cmcp_server_t * | cmcp_server_new (const char *name, const char *version) |
| |
| void | cmcp_server_free (cmcp_server_t *s) |
| |
| void | cmcp_server_set_capabilities (cmcp_server_t *s, const cmcp_server_capabilities_t *caps) |
| |
| int | cmcp_server_set_description (cmcp_server_t *s, const char *description) |
| |
| const char * | cmcp_server_client_description (const cmcp_server_t *s) |
| |
| int | cmcp_handler_cancelled (const cmcp_handler_ctx_t *hctx) |
| |
| int | cmcp_handler_progress (cmcp_handler_ctx_t *hctx, double progress, double total, const char *message) |
| |
| const char * | cmcp_handler_get_header (const cmcp_handler_ctx_t *hctx, const char *name) |
| |
| void | cmcp_handler_set_structured (cmcp_handler_ctx_t *hctx, cmcp_json_t *value) |
| |
| int | cmcp_server_add_tool (cmcp_server_t *s, const cmcp_tool_t *tool) |
| |
| cmcp_json_t * | cmcp_tool_text_content (const char *text) |
| |
| cmcp_json_t * | cmcp_tool_resource_link_content (const char *uri, const char *name, const char *description, const char *mime_type) |
| |
| int | cmcp_server_add_resource (cmcp_server_t *s, const cmcp_resource_t *r) |
| |
| cmcp_json_t * | cmcp_resource_text_contents (const char *uri, const char *mime_type, const char *text) |
| |
| int | cmcp_server_add_prompt (cmcp_server_t *s, const cmcp_prompt_t *p) |
| |
| cmcp_json_t * | cmcp_prompt_text_messages (const char *role, const char *text) |
| |
| int | cmcp_server_run (cmcp_server_t *s, cmcp_transport_t *t) |
| |
| int | cmcp_server_run_stdio (cmcp_server_t *s) |
| |
| const cmcp_client_capabilities_t * | cmcp_server_client_caps (const cmcp_server_t *s) |
| |
| const char * | cmcp_server_client_name (const cmcp_server_t *s) |
| |
| const char * | cmcp_server_client_version (const cmcp_server_t *s) |
| |
| int | cmcp_server_notify (cmcp_server_t *s, const char *method, cmcp_json_t *params) |
| |
| int | cmcp_server_notify_tools_changed (cmcp_server_t *s) |
| |
| int | cmcp_server_notify_resources_changed (cmcp_server_t *s) |
| |
| int | cmcp_server_notify_prompts_changed (cmcp_server_t *s) |
| |
| int | cmcp_server_notify_resource_updated (cmcp_server_t *s, const char *uri) |
| |
| int | cmcp_server_log (cmcp_server_t *s, cmcp_log_level_t level, const char *logger, cmcp_json_t *data) |
| |
| int | cmcp_server_send_request (cmcp_server_t *s, cmcp_handler_ctx_t *hctx, const char *method, cmcp_json_t *params, cmcp_rpc_message_t *out_response) |
| |
| int | cmcp_handler_elicit (cmcp_handler_ctx_t *hctx, const char *message, cmcp_json_t *requested_schema, cmcp_json_t **out_result) |
| |
| int | cmcp_handler_elicit_url (cmcp_handler_ctx_t *hctx, const char *message, const char *url, cmcp_json_t **out_result) |
| |
Server API: lifecycle, tool/resource/prompt registry, dispatch, notifications.
A cmcp_server_t owns:
- The registries for tools, resources, and prompts.
- The dispatch loop driving the worker pool.
- The lifecycle of a single MCP session (handshake → operate → teardown) against one transport.
Capabilities (tools, resources, prompts) are auto-advertised when at least one matching primitive is registered. Server-initiated notifications go via cmcp_server_notify (generic) and the capability-gated convenience wrappers. Handlers run on a small worker-pool thread; they get a per-call cmcp_handler_ctx_t for cooperative cancellation, progress reporting, and (in 2025-11-25) elicitation/create round-trips back to the host.
See examples/echo-server.c for a complete minimal server and tools/filesystem-mcp/main.c for a production-shaped one.
Definition in file cmcp_server.h.