You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+17-6Lines changed: 17 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -83,11 +83,11 @@ The following sections explain what we chose, why it made sense, and how the cho
83
83
84
84
### 1. JSON Serialization
85
85
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`)
87
87
88
88
***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.
89
89
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.
91
91
92
92
***How it fits the SDK**: This offers a pragmatic default while keeping flexibility for projects that prefer different JSON libraries.
93
93
@@ -168,15 +168,26 @@ MCP supports both clients (applications consuming MCP servers) and servers (appl
168
168
169
169
The SDK is organized into modules to separate concerns and allow adopters to bring in only what they need:
*`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)
175
175
*`mcp-test` – Shared testing utilities
176
176
*`mcp-spring` – Spring integrations (WebClient, WebFlux, WebMVC)
177
177
178
178
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.
179
179
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
+
180
191
### Future Directions
181
192
182
193
The SDK is designed to evolve with the Java ecosystem. Areas we are actively watching include:
0 commit comments