@mcp-abap-adt/proxy 1.6.4 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/CHANGELOG.md +217 -0
  2. package/LICENSE +669 -17
  3. package/README.md +79 -8
  4. package/bin/mcp-abap-adt-proxy-mcp.js +113 -0
  5. package/dist/index.d.ts +10 -4
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +54 -97
  8. package/dist/lib/stores.d.ts +23 -2
  9. package/dist/lib/stores.d.ts.map +1 -1
  10. package/dist/lib/stores.js +56 -1
  11. package/dist/mcp/cli.d.ts +2 -0
  12. package/dist/mcp/cli.d.ts.map +1 -0
  13. package/dist/mcp/cli.js +21 -0
  14. package/dist/mcp/configs.d.ts +33 -0
  15. package/dist/mcp/configs.d.ts.map +1 -0
  16. package/dist/mcp/configs.js +142 -0
  17. package/dist/mcp/ports.d.ts +15 -0
  18. package/dist/mcp/ports.d.ts.map +1 -0
  19. package/dist/mcp/ports.js +35 -0
  20. package/dist/mcp/registry.d.ts +57 -0
  21. package/dist/mcp/registry.d.ts.map +1 -0
  22. package/dist/mcp/registry.js +145 -0
  23. package/dist/mcp/server.d.ts +34 -0
  24. package/dist/mcp/server.d.ts.map +1 -0
  25. package/dist/mcp/server.js +79 -0
  26. package/dist/mcp/shutdown.d.ts +37 -0
  27. package/dist/mcp/shutdown.d.ts.map +1 -0
  28. package/dist/mcp/shutdown.js +82 -0
  29. package/dist/mcp/supervisor.d.ts +125 -0
  30. package/dist/mcp/supervisor.d.ts.map +1 -0
  31. package/dist/mcp/supervisor.js +330 -0
  32. package/dist/mcp/tools.d.ts +28 -0
  33. package/dist/mcp/tools.d.ts.map +1 -0
  34. package/dist/mcp/tools.js +152 -0
  35. package/dist/proxy/btpProxy.d.ts +24 -73
  36. package/dist/proxy/btpProxy.d.ts.map +1 -1
  37. package/dist/proxy/btpProxy.js +116 -631
  38. package/dist/proxy/credentials.d.ts +45 -0
  39. package/dist/proxy/credentials.d.ts.map +1 -0
  40. package/dist/proxy/credentials.js +41 -0
  41. package/dist/proxy/requestHandler.d.ts +38 -0
  42. package/dist/proxy/requestHandler.d.ts.map +1 -0
  43. package/dist/proxy/requestHandler.js +73 -0
  44. package/dist/proxy/reverseProxy.d.ts +11 -2
  45. package/dist/proxy/reverseProxy.d.ts.map +1 -1
  46. package/dist/proxy/reverseProxy.js +52 -9
  47. package/dist/router/headerAnalyzer.js +2 -2
  48. package/dist/router/requestInterceptor.js +9 -9
  49. package/docs/API.md +172 -0
  50. package/docs/ARCHITECTURE.md +322 -0
  51. package/docs/CLIENT_SETUP.md +413 -0
  52. package/docs/CONFIGURATION.md +258 -0
  53. package/docs/MIGRATION-4.0.md +125 -0
  54. package/docs/ROUTING_LOGIC.md +126 -0
  55. package/docs/TROUBLESHOOTING.md +488 -0
  56. package/docs/USAGE.md +422 -0
  57. package/docs/YAML_CONFIG.md +273 -0
  58. package/docs/mcp-proxy-config.example.yaml +62 -0
  59. package/package.json +17 -10
  60. package/dist/proxy/cloudLlmHubProxy.d.ts +0 -2
  61. package/dist/proxy/cloudLlmHubProxy.d.ts.map +0 -1
  62. package/dist/proxy/cloudLlmHubProxy.js +0 -3
@@ -0,0 +1,62 @@
1
+ # MCP ABAP ADT Proxy Configuration Example
2
+ # Copy this file and pass it explicitly: mcp-abap-adt-proxy --config=<path>
3
+ # (There is no auto-discovery — the file is loaded ONLY via --config / -c.)
4
+
5
+ # --- Transport ---
6
+ transport: streamable-http # stdio | http | streamable-http | sse
7
+ httpPort: 3001
8
+ httpHost: "127.0.0.1"
9
+ ssePort: 3002
10
+ sseHost: "127.0.0.1"
11
+
12
+ # --- BTP authentication ---
13
+ # BTP destination name. Must match a service-key file:
14
+ # ~/.config/mcp-abap-adt/service-keys/<btpDestination>.json
15
+ btpDestination: "btp"
16
+
17
+ # Optional: override the target URL. Auth still comes from the service key
18
+ # above, but requests are forwarded here instead of the key's abap.url.
19
+ targetUrl: "https://your-service.cfapps.eu10.hana.ondemand.com"
20
+
21
+ # --- Default headers ---
22
+ # Injected into every forwarded request. Client-supplied request headers win
23
+ # over these; `Authorization` is always managed by the proxy (destination JWT)
24
+ # and CANNOT be set here.
25
+ #
26
+ # This is the per-user ABAP credential injection point. The upstream
27
+ # cloud-llm-hub is a SHARED server with no default service user, so on-premise /
28
+ # NoAuthentication destinations require each caller's own SAP login/password on
29
+ # every request. The proxy runs locally on YOUR machine, so it holds YOUR
30
+ # identity.
31
+ #
32
+ # Do NOT hardcode secrets here. Reference environment variables with ${VAR} (or
33
+ # ${VAR:-default}); values come from process.env or the envFile below. A ${VAR}
34
+ # without a default that cannot be resolved fails the proxy at startup.
35
+ defaultHeaders:
36
+ x-sap-destination: "S4HANA_E19"
37
+ x-sap-login: "${SAP_USER}"
38
+ x-sap-password: "${SAP_PASSWORD}"
39
+
40
+ # --- Secret source ---
41
+ # Optional .env file holding the variables referenced above. Path is resolved
42
+ # relative to THIS config file's directory. Override at launch with --env-file.
43
+ # Keep it user-local with restrictive permissions (chmod 600); never commit it.
44
+ # process.env takes priority over values in this file.
45
+ envFile: "secrets.env"
46
+
47
+ # --- OAuth2 login browser ---
48
+ browser: "system" # system | headless | chrome | edge | firefox | none
49
+ browserAuthPort: 7777 # port for the local OAuth2 callback server
50
+
51
+ # --- Session storage ---
52
+ unsafe: false # true: persist tokens to disk. false: in-memory (secure, default)
53
+
54
+ # --- Error handling & resilience ---
55
+ maxRetries: 3
56
+ retryDelay: 1000 # milliseconds
57
+ requestTimeout: 60000 # milliseconds
58
+ circuitBreakerThreshold: 5
59
+ circuitBreakerTimeout: 60000 # milliseconds
60
+
61
+ # --- Logging ---
62
+ logLevel: "info" # debug | info | warn | error
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-abap-adt/proxy",
3
- "version": "1.6.4",
3
+ "version": "4.0.0",
4
4
  "description": "MCP proxy server for SAP ABAP ADT - proxies local requests to cloud-llm-hub with JWT authentication",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -19,7 +19,8 @@
19
19
  "dev": "npx @modelcontextprotocol/inspector node ./dist/index.js",
20
20
  "clean": "rimraf dist tsconfig.tsbuildinfo",
21
21
  "prepublishOnly": "npm run build",
22
- "test-destination": "npx tsx tools/test-destination.ts"
22
+ "test-destination": "npx tsx tools/test-destination.ts",
23
+ "start:mcp": "node ./bin/mcp-abap-adt-proxy-mcp.js"
23
24
  },
24
25
  "keywords": [
25
26
  "abap",
@@ -30,7 +31,7 @@
30
31
  "proxy"
31
32
  ],
32
33
  "author": "Oleksii Kyslytsia <oleksij.kyslytsja@gmail.com>",
33
- "license": "MIT",
34
+ "license": "GPL-3.0-only",
34
35
  "repository": {
35
36
  "type": "git",
36
37
  "url": "git+https://github.com/fr0ster/mcp-abap-adt-proxy.git"
@@ -62,12 +63,15 @@
62
63
  "typescript": "^6.0.3"
63
64
  },
64
65
  "dependencies": {
65
- "@mcp-abap-adt/auth-broker": "^1.0.8",
66
- "@mcp-abap-adt/auth-providers": "^1.2.0",
67
- "@mcp-abap-adt/auth-stores": "^1.0.4",
68
- "@mcp-abap-adt/header-validator": "^0.1.8",
69
- "@mcp-abap-adt/interfaces": "^7.0.0",
70
- "@mcp-abap-adt/logger": "^0.1.4",
66
+ "@mcp-abap-adt/auth-broker": "^2.2.0",
67
+ "@mcp-abap-adt/auth-providers": "^2.2.2",
68
+ "@mcp-abap-adt/auth-stores": "^1.2.0",
69
+ "@mcp-abap-adt/connection": "^9.2.0",
70
+ "@mcp-abap-adt/header-validator": "^0.3.0",
71
+ "@mcp-abap-adt/interfaces-auth": "^1.2.0",
72
+ "@mcp-abap-adt/interfaces-auth-sap": "^1.0.0",
73
+ "@mcp-abap-adt/interfaces-network": "^2.0.0",
74
+ "@mcp-abap-adt/logger": "^0.4.0",
71
75
  "@modelcontextprotocol/sdk": "^1.26.0",
72
76
  "axios": "^1.15.1",
73
77
  "dotenv": "^17.4.2",
@@ -81,11 +85,14 @@
81
85
  "files": [
82
86
  "dist/",
83
87
  "bin/",
88
+ "docs/*.md",
89
+ "docs/mcp-proxy-config.example.yaml",
84
90
  "README.md",
85
91
  "LICENSE",
86
92
  "CHANGELOG.md"
87
93
  ],
88
94
  "bin": {
89
- "mcp-abap-adt-proxy": "./bin/mcp-abap-adt-proxy.js"
95
+ "mcp-abap-adt-proxy": "./bin/mcp-abap-adt-proxy.js",
96
+ "mcp-abap-adt-proxy-mcp": "./bin/mcp-abap-adt-proxy-mcp.js"
90
97
  }
91
98
  }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=cloudLlmHubProxy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cloudLlmHubProxy.d.ts","sourceRoot":"","sources":["../../src/proxy/cloudLlmHubProxy.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- // DELETED