Skip to content

Commit aa4a365

Browse files
committed
README: update module structure & key decisions with mcp-json removal
Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
1 parent d740686 commit aa4a365

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

README.md

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,11 @@ The following sections explain what we chose, why it made sense, and how the cho
8383

8484
### 1. JSON Serialization
8585

86-
* **SDK Choice**: Jackson for JSON serialization and deserialization, behind an SDK abstraction (`mcp-json`)
86+
* **SDK Choice**: Jackson for JSON serialization and deserialization, behind an SDK abstraction (package `io.modelcontextprotocol.json` in `mcp-core`)
8787

8888
* **Why**: Jackson is widely adopted across the Java ecosystem, provides strong performance and a mature annotation model, and is familiar to the SDK team and many potential contributors.
8989

90-
* **How we expose it**: Public APIs use a zero-dependency abstraction (`mcp-json`). Jackson is shipped as the default implementation (`mcp-jackson2`), but alternatives can be plugged in.
90+
* **How we expose it**: Public APIs use a bundled abstraction. Jackson is shipped as the default implementation (`mcp-json-jackson3`), but alternatives can be plugged in.
9191

9292
* **How it fits the SDK**: This offers a pragmatic default while keeping flexibility for projects that prefer different JSON libraries.
9393

@@ -168,15 +168,26 @@ MCP supports both clients (applications consuming MCP servers) and servers (appl
168168

169169
The SDK is organized into modules to separate concerns and allow adopters to bring in only what they need:
170170
* `mcp-bom` – Dependency versions
171-
* `mcp-core` – Reference implementation (STDIO, JDK HttpClient, Servlet)
172-
* `mcp-json` – JSON abstraction
173-
* `mcp-jackson2` – Jackson implementation of JSON binding
174-
* `mcp` – Convenience bundle (core + Jackson)
171+
* `mcp-core` – Reference implementation (STDIO, JDK HttpClient, Servlet), JSON binding interface definitions
172+
* `mcp-json-jackson2`Jackson 2 implementation of JSON binding
173+
* `mcp-json-jackson3` – Jackson 3 implementation of JSON binding
174+
* `mcp` – Convenience bundle (core + Jackson 3)
175175
* `mcp-test` – Shared testing utilities
176176
* `mcp-spring` – Spring integrations (WebClient, WebFlux, WebMVC)
177177

178178
For example, a minimal adopter may depend only on `mcp` (core + Jackson), while a Spring-based application can use `mcp-spring` for deeper framework integration.
179179

180+
Additionally, `mcp-test` contains integration tests for `mcp-core`.
181+
`mcp-core` needs a JSON implementation to run full integration tests.
182+
Implementations such as `mcp-json-jackson3`, depend on `mcp-core`, and therefore cannot be imported in `mcp-core` for tests.
183+
Instead, all integration tests that need a JSON implementation are now in `mcp-test`, and use `jackson3` by default.
184+
A `jackson2` maven profile allows to run integration tests with Jackson 2, like so:
185+
186+
187+
```bash
188+
./mvnw -pl mcp-test -am -Pjackson2 test
189+
```
190+
180191
### Future Directions
181192

182193
The SDK is designed to evolve with the Java ecosystem. Areas we are actively watching include:

0 commit comments

Comments
 (0)