MCP client as a new subproject#138
Conversation
18365ec to
ae83b7b
Compare
…for a short period of time and is gone in 2 last versions, not adopted by official clients
…io implementation, basic client interface
…th expected failures
… bug in conformance repository instead modelcontextprotocol/conformance#274
baa677b to
dbdf8bb
Compare
| //> using dep ch.qos.logback:logback-classic:1.5.20 | ||
|
|
||
| package chimp | ||
| package chimp.server |
There was a problem hiding this comment.
maybe the examples should live in a different package, to also show what imports you need
|
Review by my Claude review agents: |
|
|
||
| val rc: Int = | ||
| try | ||
| scenario match |
There was a problem hiding this comment.
so we support only two scenarios?
There was a problem hiding this comment.
I think the implementation would support few more already especially auth/* related, they just require some implementation in this file. I didn't want to make the scope of single PR too large.
There was a problem hiding this comment.
Ok, so currently we do support 2 scenarios, and that's expected :)
| McpResponse.JsonResponse((response: JSONRPCMessage).asJson).unit | ||
| case other => | ||
| val errorResponse = protocolError(id, JSONRPCErrorCodes.MethodNotFound.code, s"Unknown method: $other") | ||
| McpResponse.JsonResponse((errorResponse: JSONRPCMessage).asJson).unit | ||
| case Right(JSONRPCMessage.BatchRequest(requests)) => |
There was a problem hiding this comment.
They aren't included anymore in latest spec version. They were there two versions ago (in version 2025-03-26). I thought let's code against the latest spec if we are doing a general rework of the project.
|
I've pushed some updates, from the claude review I addressed the ones that doesn't affect |
adamw
left a comment
There was a problem hiding this comment.
Great, let's merge, one thing that we might want to do in this PR or a seaprate one before releasing - update the main README :)
|
Yep, I will make sure README is up to date before next release. Merging ✅ |
DONE:
serverprojectcoreprojectclientprojectCODE WISE:
McpClientinterface defines possible interactions client sideMcpClientImplactual client implementationTransport[F[_]]main abstractionStdioTransporta library default implementation for stdio, backend agnosticStreamingStdioTransportfor backend specific implementations (coming soon) like ZIO, Future, ox or other runtimesHttpTransporta library default implementation for non streaming sttp backendsStreamingHttpTransportfor backend specific implementations (coming soon); note: some MCP client features require streamingI am not yet certain of correctness of those abstractions especially streaming ones. I would rather see them as extensions to base
StdioTransportandHttpTransportinstead. But I think I will get there once implementing a first streaming one soon.Created a new GH label
tier:2 SDKthat I will use to flag followup issues when creating a issues "roadmap" for chimp.Tiers are described here - https://modelcontextprotocol.io/community/sdk-tiers.