diff options
Diffstat (limited to 'src/mcp/server.c')
| -rw-r--r-- | src/mcp/server.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/mcp/server.c b/src/mcp/server.c new file mode 100644 index 0000000..57d197d --- /dev/null +++ b/src/mcp/server.c @@ -0,0 +1,52 @@ +#include "mcp/server.h" + +#include <mcpc/mcpc.h> +#include "mcp/tools/health.h" + +int +tiny_convmem_server_run(FILE *input, FILE *output) +{ + mcpc_server_t *server = mcpc_server_new_iostrm(input, output); + if (server == NULL) + { + return MCPC_EC_BUG; + } + + mcpc_errcode_t result = mcpc_server_set_nament( + server, + (const char8_t *)"tiny-convmem-mcp" + ); + if (result == MCPC_EC_0) + { + result = mcpc_server_capa_enable_tool(server); + } + + mcpc_tool_t *health = NULL; + if (result == MCPC_EC_0) + { + health = tiny_convmem_health_tool_create(); + if (health == NULL) + { + result = MCPC_EC_BUG; + } + } + + if (result == MCPC_EC_0) + { + result = mcpc_server_add_tool(server, health); + } + if (result == MCPC_EC_0) + { + result = mcpc_server_start(server); + } + + { + const mcpc_errcode_t close_result = mcpc_server_close(server); + if (result == MCPC_EC_0) + { + result = close_result; + } + } + + return (int)result; +} |
