This is an automated email from the ASF dual-hosted git repository. robertlazarski pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/axis-axis2-java-core.git
commit 5d7b7ce0a8c3c6dc57de0628efa8abbf138e3308 Author: Robert Lazarski <[email protected]> AuthorDate: Thu Apr 9 06:13:33 2026 -1000 Move MCP docs into Maven site and add TOC entries Move MCP.md and MCP_EXAMPLES.md from project root to src/site/markdown/docs/ so they render as part of the Axis2 website. Strip YAML frontmatter from mcp-architecture.md (not valid for site). Add TOC entries at sections 23.5 (MCP Architecture — Multi-Protocol Design) and 23.6 (MCP Examples — Financial Services Benchmarks) with sub-section links, following the existing json-rpc-mcp-guide at 23.4. Also update MCP.md: remove 'staging' references, fix dates to 2026-04-09, replace BLUF with Summary, update inputSchema example to show populated schemas, add WildFly 32 reference implementation, mark mcpInputSchema as Done in Track A remaining table. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]> --- .../site/markdown/docs/mcp-architecture.md | 47 +++++++++++++--------- .../site/markdown/docs/mcp-examples.md | 0 src/site/xdoc/docs/toc.xml | 18 +++++++++ 3 files changed, 47 insertions(+), 18 deletions(-) diff --git a/MCP.md b/src/site/markdown/docs/mcp-architecture.md similarity index 87% rename from MCP.md rename to src/site/markdown/docs/mcp-architecture.md index 50fb1e14cb..0e8e435b33 100644 --- a/MCP.md +++ b/src/site/markdown/docs/mcp-architecture.md @@ -1,13 +1,6 @@ ---- -type: architecture -created: 2026-04-06 -last-verified: 2026-04-06 -status: Active — A1/A2/A3 complete, mTLS validated ---- - # MCP Support for Apache Axis2/Java -**BLUF**: Axis2/Java gains MCP (Model Context Protocol) support in two phases. Phase A +**Summary**: Axis2/Java gains MCP (Model Context Protocol) support in two phases. Phase A (practical, immediate) wraps an existing Axis2 deployment with a bridge that reads `/openapi-mcp.json` and proxies MCP `tools/call` to Axis2 over HTTPS+mTLS. Phase B (native, novel Apache contribution) implements `axis2-transport-mcp` so Axis2 speaks MCP @@ -20,7 +13,7 @@ modelcontextprotocol.io. --- -## Current State (2026-04-06) +## Current State (2026-04-09) ### What exists today @@ -37,13 +30,18 @@ modelcontextprotocol.io. | A4 HTTP/SSE transport | ❌ Not started | Post-demo, deferred | | `axis2-transport-mcp` native | ❌ Not started | Track B — novel Apache contribution | -### Reference implementation +### Reference implementations ``` springbootdemo-tomcat11 base URL: https://localhost:8443/axis2-json-api -Services deployed: - LoginService (auth, port 8080 only) - BigDataH2Service (streaming/multiplexing demo, accessible via mTLS on 8443) + +springbootdemo-wildfly base URL: http://localhost:8080/axis2-json-api + - LoginService (JWT auth) + - FinancialBenchmarkService (portfolioVariance, monteCarlo, scenarioAnalysis) + - BigDataH2Service (HTTP/2 streaming) + Deployed and validated on WildFly 32.0.1 (2026-04-09) ``` `BigDataH2Service` request format (confirmed working via MCP bridge): @@ -142,15 +140,28 @@ Client presents cert → Tomcat TLS handshake (certificateVerification=required) { "tools": [ { - "name": "processBigDataSet", - "description": "BigDataH2Service: processBigDataSet", - "inputSchema": { "type": "object", "properties": {}, "required": [] }, - "endpoint": "POST /services/BigDataH2Service/processBigDataSet" + "name": "portfolioVariance", + "description": "Calculate portfolio variance using O(n²) covariance matrix...", + "inputSchema": { + "type": "object", + "required": ["nAssets", "weights", "covarianceMatrix"], + "properties": { + "nAssets": {"type": "integer", "minimum": 2, "maximum": 2000}, + "weights": {"type": "array", "items": {"type": "number"}}, + "covarianceMatrix": {"type": "array", "items": {"type": "array", "items": {"type": "number"}}}, + "normalizeWeights": {"type": "boolean", "default": false}, + "nPeriodsPerYear": {"type": "integer", "default": 252} + } + }, + "endpoint": "POST /services/FinancialBenchmarkService/portfolioVariance" } ] } ``` +Tool schemas are populated via `mcpInputSchema` parameters in +`services.xml` — parsed by `generateMcpCatalogJson()` at runtime. + **Routing**: `OpenApiServlet.java` dispatches `uri.endsWith("/openapi-mcp.json")` to `handler.handleMcpCatalogRequest()`. `Axis2WebAppInitializer.java` maps the path. `Axis2Application.java` `OPENAPI_PATHS` array includes `/openapi-mcp.json` so the @@ -329,7 +340,7 @@ See `docs/MCP.md` in the `axis-axis2-c-core` repo for the full C implementation | Step | Work | Notes | |------|------|-------| -| `@McpTool` annotation | Richer `inputSchema` in `/openapi-mcp.json` | Currently all tools return empty properties `{}` | +| `mcpInputSchema` in services.xml | ✅ Done | All financial benchmark tools + login have full parameter schemas | | A4 HTTP/SSE | Persistent bridge server mode | Required for production, additive | ### Track B @@ -338,9 +349,9 @@ See `docs/MCP.md` in the `axis-axis2-c-core` repo for the full C implementation 2. stdio transport first (B1) — validates JSON-RPC 2.0 ↔ MessageContext translation 3. HTTP/SSE transport (B2) — reuses Axis2 HTTP infrastructure -### Penguin demo +### Axis2/C deployment -`build_financial_service.sh` in `axis-axis2-c-core` needs to be run on the Penguin +`build_financial_service.sh` in `axis-axis2-c-core` needs to be run on the target host after Axis2/C is installed. The service is committed and compiles clean — the script is the only remaining deployment step. diff --git a/MCP_EXAMPLES.md b/src/site/markdown/docs/mcp-examples.md similarity index 100% rename from MCP_EXAMPLES.md rename to src/site/markdown/docs/mcp-examples.md diff --git a/src/site/xdoc/docs/toc.xml b/src/site/xdoc/docs/toc.xml index 480f7f43ba..582879d5f6 100644 --- a/src/site/xdoc/docs/toc.xml +++ b/src/site/xdoc/docs/toc.xml @@ -158,6 +158,24 @@ Support</a></li> <li><a href="json-rpc-mcp-guide.html#python_compat">Python MCP Compatibility Notes</a></li> </ul> </li> + <li><strong>23.5 <a href="mcp-architecture.html">MCP Architecture — Multi-Protocol Design</a></strong> + <ul> + <li><a href="mcp-architecture.html#current-state-2026-04-09">Current State</a></li> + <li><a href="mcp-architecture.html#track-a--openapi-driven-mcp-bridge">Track A: OpenAPI-Driven MCP Bridge</a></li> + <li><a href="mcp-architecture.html#track-b--native-mcp-transport-axis2-transport-mcp">Track B: Native MCP Transport</a></li> + <li><a href="mcp-architecture.html#security-architecture">Security Architecture (mTLS + X.509)</a></li> + <li><a href="mcp-architecture.html#key-design-decisions">Key Design Decisions</a></li> + </ul> + </li> + <li><strong>23.6 <a href="mcp-examples.html">MCP Examples — Financial Services Benchmarks</a></strong> + <ul> + <li><a href="mcp-examples.html#live-examples-tested-on-wildfly-32-0-1-final-2026-04-08">Live Examples (WildFly 32)</a></li> + <li><a href="mcp-examples.html#demo-1-stress-test--what-if-correlations-spike">Demo 1: Stress Test</a></li> + <li><a href="mcp-examples.html#demo-2-pre-trade-risk--should-i-add-this-name">Demo 2: Pre-Trade Risk</a></li> + <li><a href="mcp-examples.html#demo-3-convergence--how-much-compute-do-i-actually-need">Demo 3: Convergence</a></li> + <li><a href="mcp-examples.html#full-performance-summary">Full Performance Summary (C vs Java)</a></li> + </ul> + </li> </ul> </li> <li><a href="corba-deployer.html">Exposing CORBA Services as Web Services</a></li>
