Skip to content

Commit 70fcdd2

Browse files
mcp: A1/A2/A3 complete — /openapi-mcp.json, mcp-bridge stdio JAR, mTLS, X.509 auth, unit tests
Track A (OpenAPI-driven MCP bridge) is fully implemented and validated: A1 — /openapi-mcp.json endpoint (axis2-openapi module) - OpenApiSpecGenerator.generateMcpCatalogJson(): iterates AxisConfiguration services with same isSystemService/shouldIncludeService/shouldIncludeOperation filters as generatePaths(); produces MCP tool catalog JSON - SwaggerUIHandler.handleMcpCatalogRequest(): mirrors handleOpenApiJsonRequest() with application/json content-type, CORS headers, security headers - OpenApiServlet + Axis2WebAppInitializer: route /openapi-mcp.json to handler - Axis2Application.OPENAPI_PATHS: added /openapi-mcp.json to bypass JWT chain A2 — axis2-mcp-bridge stdio JAR (new module modules/mcp-bridge/) - McpTool: data class, strips HTTP method prefix to derive path - ToolRegistry: GETs /openapi-mcp.json at startup, builds List<McpTool>/Map - McpStdioServer: blocking stdin loop, JSON-RPC 2.0 dispatch (initialize / tools/list / tools/call / error / notification handling) - McpBridgeMain: --base-url / --keystore / --truststore arg parsing, buildSslContext() for PKCS12 mTLS; maven-shade produces *-exe.jar uber-jar - No MCP SDK — Jackson 2.21.1 (Apache 2.0) + Java stdlib HttpClient only - Protocol version: 2024-11-05; notifications silently consumed (no response) mTLS / PKI - IoT CA pattern: RSA 4096 CA (10yr) + RSA 2048 leaf certs (2yr), SHA-256, PKCS12 - certs/: ca.{key,crt}, server.{key,crt,csr}, client.{key,crt,csr}, server-keystore.p12, ca-truststore.p12, client-keystore.p12 (password: changeit) - Tomcat 8443 connector: certificateVerification=required, TLSv1.2+ X.509 Spring Security (springbootdemo-tomcat11) - X509AuthenticationFilter: reads jakarta.servlet.request.X509Certificate (set by Tomcat post-handshake), extracts CN via RFC 2253, creates UsernamePasswordAuthenticationToken(CN, cert, [ROLE_X509_CLIENT]) - springSecurityFilterChainMtls @order(2): MtlsRequestMatcher (port==8443), X509AuthenticationFilter ahead of existing JWT chains A3 validation — confirmed working end-to-end: Claude Desktop -> axis2-mcp-bridge stdio -> HTTPS+mTLS 8443 -> X509AuthenticationFilter (CN=axis2-mcp-bridge, ROLE_X509_CLIENT) -> BigDataH2Service.processBigDataSet() -> real response returned Unit tests (JUnit 3 TestCase style, matching existing openapi module conventions) mcp-bridge module (4 new test classes, 48 tests): McpToolTest: path extraction, description fallback, accessor correctness McpStdioServerTest: initialize/tools-list/unknown-method/parse-error/notification/ sequence tests via System.in/out redirection + StubToolRegistry inner class McpBridgeMainTest: parseArg/parseArgOrDefault via reflection, buildSslContext with real cert files (skips gracefully when certs absent) ToolRegistryTest: pre-load state, injection via reflection, ParseableRegistry subclass driving catalog-parsing logic for 7 parsing scenarios openapi module (2 new test classes, 26 tests): McpCatalogGeneratorTest: JSON validity, empty catalog, tool fields, endpoint format, inputSchema structure, JSON escaping, MCP/OpenAPI path consistency McpCatalogHandlerTest: HTTP 200, Content-Type, CORS headers, body validity, service discovery, security header presence MCP.md updated: current state table, PKI section, Spring Security filter chain table, X.509 auth flow, next steps (C1 now unblocked, A4/Track B queued) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent ad14246 commit 70fcdd2

30 files changed

Lines changed: 3157 additions & 104 deletions

File tree

MCP.md

Lines changed: 187 additions & 98 deletions
Large diffs are not rendered by default.

certs/ca-truststore.p12

1.72 KB
Binary file not shown.

certs/ca.crt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIFYzCCA0ugAwIBAgIUSXUAOQ/TXCKneEPsfNSziMPkHG8wDQYJKoZIhvcNAQEL
3+
BQAwQTERMA8GA1UEAwwIQXhpczIgQ0ExFTATBgNVBAoMDEFwYWNoZSBBeGlzMjEV
4+
MBMGA1UECwwMSW9UIFNlcnZpY2VzMB4XDTI2MDQwNjE3NDkxM1oXDTM2MDQwMzE3
5+
NDkxM1owQTERMA8GA1UEAwwIQXhpczIgQ0ExFTATBgNVBAoMDEFwYWNoZSBBeGlz
6+
MjEVMBMGA1UECwwMSW9UIFNlcnZpY2VzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
7+
MIICCgKCAgEAvQ3CNQVQmXqqXFazYVjeSxA80VINNqnG30eJPYsZaWO0h1QnEeJv
8+
WpNGK/xJx+x+wcfTj+Ie0fhR2SROFmmTHxp2x0KLaIkryn6cggfzGVe2AmYo5CrZ
9+
5gS+1ZUFCjm2/CBYxH66sR6iczG0/g/zQbUy1xhceIRbY3qnD/HT8wK492RL6lAm
10+
LHThbd6m6ywLWGakzS9FItv6P1LV3MoeMRBTz+Ptn8iKYgmqincJkHHyHt7q/FrW
11+
pVF1xJxU1lmLugxjfPec4CiJajEVG8B0o+hHJA19uQgsiydg5/VhW2nhoi157f+s
12+
1sNncFXzFclL0f3FdKvZPh+jZI8Y9gDuKHhIb66lwNdE4NCLdRdz5HLkdMcH6za9
13+
tvu4Vmu50xP8FPHgAZqTSsgMoEUv7BJyV2ymEVWYKvGHHhMsUgw7aHSPbUDJ1rA9
14+
3X5xaZ+HyVPU09XVt3ZVcKZHuJx3o/h7TibQvXfV3TrKbhB0zuyDnYH9IBtk1pdf
15+
uWdZs6fN9J4k1rSSRPP/TDkou6NDf4g+fkfx6sNfApnsRvGKJhnJTUR/vFzUQRVK
16+
FeWXd//etMrubMH452iA8o5hVZqXconynrrEAEKfh/WRAKwfubgUrNF7QpyUDaLD
17+
Ukr3T+4uCVndOu9kr2t/UA3FAjMVRTvdTxZfbwdQqiumyQBF+k5p7fsCAwEAAaNT
18+
MFEwHQYDVR0OBBYEFODmuumf3wUCHVpXb5b2/iXPF1ozMB8GA1UdIwQYMBaAFODm
19+
uumf3wUCHVpXb5b2/iXPF1ozMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL
20+
BQADggIBALn9SZbmJGhgHKfNr9+Lfo7ejCeJrCfhLy5DuBIesOcR3OEHEndFLWIn
21+
iNgVwsV9Z+HOwbwmDt4MHPtSO6537E+PTOoWuEK49THZM4ql5E/YP0+kwbQCfhFb
22+
OsspROQlXfdgttqWNpiQN8dqKrle8X0RrLUAh++JUD3S2aTXIGUVo3bQjZAckv0/
23+
sHV+oKnuAyynCOxRcZeZ3K+0H+GGTrhEcc+ohwbIy+O1B94QNhpg4uirif7SzgaM
24+
Z2GiXvT9Mjd7uCYOsPcDsTvixAAVUFbNl/xlqzwLmm1LcsPJFK08zXTIVBT7dp7O
25+
yGT2dTk5o7azI43NDMiXJgHi4H/D7DOGckYjE62NCxnWVS0dyrsRemCN75oKq3Mb
26+
dyVFvqAsZiQTyn5zB7cjuZQ2ygf5g7zIwScjHjWDZdSzp1zvcT30ygD7ilgjXq2v
27+
SyUWsz4FNPIpHBOoxJep+y63B3KrKyYKKOuZ6lMHa4zS2aJ80Bn8tG5+wVfxE5KZ
28+
REp24gdjADKkYw/Hlq4GxTGLmTZ4a3WvClqPz0kMAsawA2w67BmPjitrnAMblqcu
29+
SwgjhapwIJk/SXIoT19UkCco0pjGcL/R2WVUTEnNn1zLo8mpls8VFHAxWM3UYctL
30+
GkBg0YHG/2eCE+VDM9sTCdHPHaJUkDhNw/mSdPHi7DBr697o1BDc
31+
-----END CERTIFICATE-----

certs/ca.key

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
-----BEGIN PRIVATE KEY-----
2+
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
51+
QNDwzgfQn3qAxAzfZPo+P6ge/3izOMY=
52+
-----END PRIVATE KEY-----

certs/ca.srl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
245E2B62757EEB7E063ED4A7A8BAFF2B68F90D31

certs/client-keystore.p12

4.3 KB
Binary file not shown.

certs/client.crt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIEWDCCAkCgAwIBAgIUJF4rYnV+634GPtSnqLr/K2j5DTEwDQYJKoZIhvcNAQEL
3+
BQAwQTERMA8GA1UEAwwIQXhpczIgQ0ExFTATBgNVBAoMDEFwYWNoZSBBeGlzMjEV
4+
MBMGA1UECwwMSW9UIFNlcnZpY2VzMB4XDTI2MDQwNjE3NDkyOFoXDTI4MDQwNTE3
5+
NDkyOFowMjEZMBcGA1UEAwwQYXhpczItbWNwLWJyaWRnZTEVMBMGA1UECgwMQXBh
6+
Y2hlIEF4aXMyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAti2g8L8l
7+
4eIIkJscXGDqLA6NdCVgob1Us93nuFwhRiRPpkKii8OOEHn1jsqQMYKx2TAw8G+O
8+
ziIDrZZK4+Dm4hcv/6I3VifvTIZK5Ko1MrLoupA3eE65RiBPN9qUrzD4Py9YUMqg
9+
EbOJ790KKGmne2cUeGpirYtMG95O5BO3YbS9HrQp9xbtPTtJ+tStKvBMS7wISkOR
10+
w4vJ8HAjtORjgLnjlcZWzLuR+RP5yhsVjNqLNmHb1/XqZk54KJQJAsokc9CnENlL
11+
SGAW1F3ifzEo9Q3l6to763AwmQfzHp7lmWfw8jhjId+A3QoU6abPfjltYqf0BiFP
12+
IGy6hLj2UQVvSQIDAQABo1cwVTATBgNVHSUEDDAKBggrBgEFBQcDAjAdBgNVHQ4E
13+
FgQUeujyFgoS9pdQnT+0/rzI0XNWDK8wHwYDVR0jBBgwFoAU4Oa66Z/fBQIdWldv
14+
lvb+Jc8XWjMwDQYJKoZIhvcNAQELBQADggIBAEbGgs0Kc7UYkrd/mRjuzIbslGeA
15+
82Rjmknjedz88fC9KofDWI4fpMb/TEFgDMGWiQMUkLGYA4jhXsDMwQ/nYTK0Z5GU
16+
+Fp29sN3tPz8ZVM00vo5IuxmSM5xU1JgMy2SCnWXu/5NJ9Ri1qipr+2532tZuJKq
17+
yz86du17QONcJ3WoNrtyBCurIW6TTHtQBgNQxl/M4bPHWW2WJ9bj1D26oQcM5tZj
18+
4LdhHndyON+W9TKY9zTIpjWu1eNJHfRGQhPgtO2e2L/mbFhiNmlq9lFQkFnbwrUy
19+
IhmaaHrqg96UMZsl8hQMlOLpIRuTbfzduCIkvCv1CZBCeOZhYxmh8049wrDCBasn
20+
1TiHZI9eqGQiF//72Qe97kqXN3UcaJYeRRnf1Jpm8Vm9Sn4U9N6Z+pTPb4Ts/MJA
21+
Wcg0NzEC/HxyqE0+0O7drTy0VXpzxmK41F2vwXMvqebafgsIwfK7LUgW1Q1hgW07
22+
Q/5MG06NHh5DTmvFFii74WMfAWW7R2gCnkSKLERFXHpPWqR6VCfDNeUhJ0xcKcCw
23+
Q4d9RK9NjsjMdNjFR1/gJl9vA+u96dkZIydyr0QAhWlzv4eAVYfaroGdwj7pJUiK
24+
7+HKjFPEhJR8pAGNP5H4x2yhH7xjz+PnItR1nYdLJn2CyFmRO2pNGRUgwpbDxUml
25+
X0i0DnRDjZjXqDjD
26+
-----END CERTIFICATE-----

certs/client.csr

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
-----BEGIN CERTIFICATE REQUEST-----
2+
MIICdzCCAV8CAQAwMjEZMBcGA1UEAwwQYXhpczItbWNwLWJyaWRnZTEVMBMGA1UE
3+
CgwMQXBhY2hlIEF4aXMyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
4+
ti2g8L8l4eIIkJscXGDqLA6NdCVgob1Us93nuFwhRiRPpkKii8OOEHn1jsqQMYKx
5+
2TAw8G+OziIDrZZK4+Dm4hcv/6I3VifvTIZK5Ko1MrLoupA3eE65RiBPN9qUrzD4
6+
Py9YUMqgEbOJ790KKGmne2cUeGpirYtMG95O5BO3YbS9HrQp9xbtPTtJ+tStKvBM
7+
S7wISkORw4vJ8HAjtORjgLnjlcZWzLuR+RP5yhsVjNqLNmHb1/XqZk54KJQJAsok
8+
c9CnENlLSGAW1F3ifzEo9Q3l6to763AwmQfzHp7lmWfw8jhjId+A3QoU6abPfjlt
9+
Yqf0BiFPIGy6hLj2UQVvSQIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAAyGI8AL
10+
HPRA2j21RdgFoRJeuwOXvH8kVISACiLXQHKYkMocBq9Kuy3uJ5Oh05tZUD5Swyh+
11+
idRMBRa7hWZegad+jXoLhQ579hl7gje1Dw3eLY+5HFrCwNrg+SZChJh0mneRiTrH
12+
kppW1I6IaXuQTO+GNonlFqmDzilV8P7VYikDia1zvL6oUVLaF5L7WbDxgj+C//DZ
13+
y3v7hZOoM99n0JphZUCuW2j2jHdkqzeFtNfTvc7Z+cy1mZq2IrDdgDRhVGJmfs9P
14+
bTpgWgu5jMHj243tkONSNtS2l1CdELCK8cbp7OlNzwzb+mkuwxzawPDgv57V771/
15+
aI5H+zunuwYpWRk=
16+
-----END CERTIFICATE REQUEST-----

certs/client.key

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC2LaDwvyXh4giQ
3+
mxxcYOosDo10JWChvVSz3ee4XCFGJE+mQqKLw44QefWOypAxgrHZMDDwb47OIgOt
4+
lkrj4ObiFy//ojdWJ+9MhkrkqjUysui6kDd4TrlGIE832pSvMPg/L1hQyqARs4nv
5+
3Qooaad7ZxR4amKti0wb3k7kE7dhtL0etCn3Fu09O0n61K0q8ExLvAhKQ5HDi8nw
6+
cCO05GOAueOVxlbMu5H5E/nKGxWM2os2YdvX9epmTngolAkCyiRz0KcQ2UtIYBbU
7+
XeJ/MSj1DeXq2jvrcDCZB/MenuWZZ/DyOGMh34DdChTpps9+OW1ip/QGIU8gbLqE
8+
uPZRBW9JAgMBAAECggEAQmAhkVWzsbcvM7CwBqBw8ZhjxXuQ150p7VbehHdc0DeO
9+
pZ8FpjKb4jjtVRdMrh1WOzGpwxCCUWxnNqnZo2lf9eRI4rTxwHxQXetYAjRZqZ0x
10+
2jeNXlIggwJmmo0TOzl2WV8gqF8LLyfhC/nXJ55HHVkTRkRMq7pjAoxe5g6g9AHO
11+
ZVZiqhG1JRO9vO3clr60iCt5O0lD902aoYkF9V8V6VZBZioySTLbtQDASvYOM+Az
12+
lipyRWwkLI1N+p5HqgieADCYmDNFtvZhQePdjPAvYnCZynmfUKlLVRUkS78zhS3+
13+
v1OXQL2aYJpH6OuSN2wqopMnERjF6HY/as/SitLdmQKBgQDm7caGTCnn2nWKGl7h
14+
n2kWbOmQVcG1001I8X9bVNlA/6pjyGMx3yBmJB/vDtnbHT4WFW86kZrHZc66O8JZ
15+
Vo8MjccoOBkWT1pMCNmIdrKItRtEP4J0Df5GQ5Qxhllo0KukxLosF6jJVKYipRv+
16+
fbSzU0Bb+5GZ/NTZzeTjRBgrKwKBgQDJ9OycLe887ztPIDZlMbw5P7hQupuOGMDa
17+
P4HS9qSraK3HVFQFx2ezLWXjBfpDW1KHtxuqeZlH6w/vlhqAWJ/JQspL6aCaEiFt
18+
0XHJ46NabUbrOfZOXqZig5dK91+iLOtXw4r3i6xhZY+eb9GFYr3et/cRgmd+D9fc
19+
7dCQlqLFWwKBgQC/RvxFiRi83wq01Zr5r5zP4m6kCyRkgx1k6gPflqxNVnfAJt9j
20+
E7o2YH3C+b4h7Frc1+xFyw01VHKjd5RHg5cBgv4PpkfBXwEgMcRdcFP5QGnRYfmg
21+
P2b6tEcvrmSomQ9Tb0/17bL08JSb5b8GUQE3+CE7D2lO70kvD4gjZufN+QKBgQCJ
22+
v8pHeLlOaaqdfM49VaAZuFGilrWVRWL9OgX1/A8zbxHg/K7Wxj0AJL3zDFe366ku
23+
MoHnVEttl3JmK47l7g0GvMy43KCTljxA6HPhjagU/KY7uWw75ik81p6yHmqXdmYL
24+
la/KyvUH9brxCTny7fet2vLleXnXrTzCT19Lz8M0MwKBgFQOY/2Tc1Oqj+lM6Z2Y
25+
xDNxh1bRHvJFzVUdIMAypCtAWiWawUjG+Cb84Hx1O/icGR1fX8jQw9Oe+jAGGkID
26+
TiKlVK/uebE4glL9FlgLyzmNCafoVex1Lv889aY0pPWCTTQgSsakrpItHl8cxDrH
27+
irD9TczrDnFhdX3H0Z3vgV9y
28+
-----END PRIVATE KEY-----

certs/server-keystore.p12

4.31 KB
Binary file not shown.

0 commit comments

Comments
 (0)