* DONE Create a Stdio-transport based server implementation * DONE Create a template project for easily creating MCP servers CLOSED: [2025-04-27 Sun 18:30] :LOGBOOK: - State "DONE" from "TODO" [2025-04-27 Sun 18:30] - State "TODO" from [2025-04-27 Sun 18:28] :END: See: 1. [[https://github.com/unravel-team/mcp-clojure-server-deps-new][mcp-clojure-server-deps-new]] for a ~deps-new~ based template 2. [[https://github.com/unravel-team/example-cool-mcp-server][example-cool-mcp-server]] for a Github template project * WORKING Add client support to mcp-clojure-sdk :LOGBOOK: - State "WORKING" from "TODO" [2025-05-24 Sat 14:38] :END: ** WORKING Add basic client support for the stdio transport, based on what python-sdk and typescript-sdk do :LOGBOOK: - State "WORKING" from "TODO" [2025-05-24 Sat 14:38] :END: :CLOCK: CLOCK: [2025-05-25 Sun 11:07]--[2025-05-25 Sun 11:41] => 0:34 CLOCK: [2025-05-24 Sat 14:38]--[2025-05-25 Sun 08:29] => 17:51 :END: ** WORKING Create an integration test for the current server code using such a client, based on clojure-lsp integration tests :LOGBOOK: - State "WORKING" from "TODO" [2025-05-25 Sun 11:41] :END: :CLOCK: CLOCK: [2025-05-25 Sun 11:41]--[2025-05-25 Sun 12:32] => 0:51 :END: - See: * TODO Update the README of mcp-clojure-sdk. Refer to typescript-sdk as a reference * TODO Write an example mcp-client-tool to run mcp-servers locally and list what they do/don't provide ** TODO Support servers launched using npx/node ** TODO Support servers launched using uv/python ** TODO Support servers launched using java * TODO Add support for dynamic server capability negotiation * TODO Add support for the SSE / Streaming HTTP transport to mcp-clojure-sdk ** TODO Add support for SSE transport ** TODO Add support for Streaming HTTP transport * WORKING Implement the entire roots section of the protocol :LOGBOOK: - State "WORKING" from "TODO" [2025-05-03 Sat 16:38] :END: * WORKING Bring the spec up-to-date and track the differences * TODO Add an integration test for end-to-end testing the server See ~integration.client~ from ~lsp4clj~ for inspiration * TODO Implement the HTTP-SSE Transport ** TODO Implement the SSE-transport based server ** TODO Implement the SSE-transport based client * TODO Checks and Balances in the mcp-cljc-sdk code ** TODO Make sure that handle-* functions are implement proper checks Read through the python decorator code to double-check if we are doing the right thing here. ** TODO Implement best practices for prompts ** TODO Implement best practices for tools ** TODO Implement best practices for resources ** TODO Ensure that error handling is correctly done for transports ** TODO Implement best practices for transports * TODO Implement the entire sampling section of the protocol * TODO Create a CLI tool for how tools, prompts, resources should be defined 1. Easily create new projects, in ~deps-new~ style 2. Organize them properly, making it possible to build servers fast. 3. Make it language-agnostic, allowing the tool to create Clojure, Python, TS projects. * TODO Explore babashka as the runner in Claude Desktop / Inspector The current code is wildly incompatible with bb, so this is a long-shot. But bb compatibility will mean speed and ease of use.