@chkp/documentation-mcp 1.4.3 → 1.4.6

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.
package/README.md CHANGED
@@ -196,6 +196,40 @@ Add the configuration as Claude Desktop App.
196
196
 
197
197
  ---
198
198
 
199
+ ## HTTP Transport
200
+
201
+ By default, this server uses **stdio** transport, which is the standard mode for MCP clients like Claude Desktop and Cursor. For hosted or multi-user deployments, an **HTTP transport** (MCP Streamable HTTP) is also available.
202
+
203
+ > **Security notice before you continue:** The HTTP server has no built-in authentication and no TLS. Any client that can reach the port can establish a session, and credentials travel in cleartext. Only use HTTP transport behind an authenticated reverse proxy (nginx, Caddy, a cloud load balancer) that terminates TLS and enforces authentication. If you are running the server on the same machine as your MCP client, use the default stdio transport — it has none of these concerns.
204
+
205
+ ### Starting the server in HTTP mode
206
+
207
+ ```bash
208
+ MCP_TRANSPORT_TYPE=http MCP_TRANSPORT_PORT=3000 npx @chkp/documentation-mcp
209
+ # or
210
+ npx @chkp/documentation-mcp --transport http --transport-port 3000
211
+ ```
212
+
213
+ The server exposes:
214
+ - `POST/GET/DELETE /mcp` — MCP protocol endpoint
215
+ - `GET /health` — server status (active session count, version)
216
+
217
+ ### Connecting an MCP client
218
+
219
+ Point your MCP client at `http://<host>:3000/mcp`. Example for Claude Desktop (`claude_desktop_config.json`):
220
+
221
+ ```json
222
+ {
223
+ "mcpServers": {
224
+ "checkpoint-documentation-tool": {
225
+ "url": "http://localhost:3000/mcp"
226
+ }
227
+ }
228
+ }
229
+ ```
230
+
231
+ ---
232
+
199
233
  ## Development
200
234
 
201
235
  ### Prerequisites
package/dist/index.js CHANGED
@@ -1560,7 +1560,7 @@ var Settings = class _Settings {
1560
1560
  return "STG";
1561
1561
  return void 0;
1562
1562
  }
1563
- constructor({ apiKey = process.env.API_KEY, username = process.env.USERNAME, password = process.env.PASSWORD, s1cUrl = process.env.S1C_URL, managementHost = process.env.MANAGEMENT_HOST, managementPort = process.env.MANAGEMENT_PORT || "443", cloudInfraToken = process.env.CLOUD_INFRA_TOKEN, cloudConnected = process.env.CLOUD_CONNECTED === "true", clientId = process.env.CLIENT_ID, secretKey = process.env.SECRET_KEY, region = process.env.REGION || "EU", devPort = process.env.DEV_PORT || "8006", gatewayUrl } = {}) {
1563
+ constructor({ apiKey = process.env.API_KEY, username = process.env.USERNAME, password = process.env.PASSWORD, s1cUrl = process.env.S1C_URL, managementHost = process.env.MANAGEMENT_HOST, managementPort = process.env.MANAGEMENT_PORT || "443", cloudInfraToken = process.env.CLOUD_INFRA_TOKEN, cloudConnected = process.env.CLOUD_CONNECTED === "true", sid, clientId = process.env.CLIENT_ID, secretKey = process.env.SECRET_KEY, region = process.env.REGION || "EU", devPort = process.env.DEV_PORT || "8006", gatewayUrl } = {}) {
1564
1564
  this.region = "EU";
1565
1565
  this.devPort = "8006";
1566
1566
  this.gatewayUrl = "";
@@ -1588,6 +1588,7 @@ var Settings = class _Settings {
1588
1588
  this.managementPort = managementPort;
1589
1589
  this.cloudInfraToken = cloudInfraToken;
1590
1590
  this.cloudConnected = cloudConnected;
1591
+ this.sid = sid;
1591
1592
  this.clientId = clientId;
1592
1593
  this.secretKey = secretKey;
1593
1594
  this.region = this.normalizeRegion(region) || "EU";
@@ -1611,7 +1612,7 @@ var Settings = class _Settings {
1611
1612
  * Check if the provided string is a valid region
1612
1613
  */
1613
1614
  isValidRegion(region) {
1614
- return ["EU", "US", "STG", "DEV", "LOCAL"].includes(region.toUpperCase());
1615
+ return ["EU", "US", "AU", "IN", "AE", "CA", "DEV", "STG", "LOCAL"].includes(region.toUpperCase());
1615
1616
  }
1616
1617
  /**
1617
1618
  * Get the base gateway URL for a given region
@@ -1622,6 +1623,14 @@ var Settings = class _Settings {
1622
1623
  return "https://cloudinfra-gw.portal.checkpoint.com";
1623
1624
  case "US":
1624
1625
  return "https://cloudinfra-gw-us.portal.checkpoint.com";
1626
+ case "AU":
1627
+ return "https://cloudinfra-gw.ap.portal.checkpoint.com";
1628
+ case "IN":
1629
+ return "https://cloudinfra-gw.in.portal.checkpoint.com";
1630
+ case "AE":
1631
+ return "https://cloudinfra-gw.ae.portal.checkpoint.com";
1632
+ case "CA":
1633
+ return "https://cloudinfra-gw.ca.portal.checkpoint.com";
1625
1634
  case "STG":
1626
1635
  case "DEV":
1627
1636
  case "LOCAL":
@@ -1661,6 +1670,7 @@ var Settings = class _Settings {
1661
1670
  const verbose = SettingsManager.globalDebugState;
1662
1671
  if (verbose) {
1663
1672
  console.error("[Settings] Verbose: Validating settings...");
1673
+ console.error("[Settings] Verbose: sid:", this.sid ? "***" : "(empty)");
1664
1674
  console.error("[Settings] Verbose: s1cUrl:", this.s1cUrl || "(empty)");
1665
1675
  console.error("[Settings] Verbose: managementHost:", this.managementHost || "(empty)");
1666
1676
  console.error("[Settings] Verbose: apiKey:", this.apiKey ? "***" : "(empty)");
@@ -1668,17 +1678,35 @@ var Settings = class _Settings {
1668
1678
  console.error("[Settings] Verbose: username:", this.username ? "***" : "(empty)");
1669
1679
  console.error("[Settings] Verbose: password:", this.password ? "***" : "(empty)");
1670
1680
  }
1671
- if (!nullOrEmpty(this.s1cUrl) && nullOrEmpty(this.apiKey) && nullOrEmpty(this.cloudInfraToken)) {
1681
+ if (!nullOrEmpty(this.sid)) {
1672
1682
  if (verbose) {
1673
- console.error("[Settings] Verbose: Validation FAILED - S1C URL provided but no API key or CI token");
1683
+ console.error("[Settings] Verbose: Pre-authenticated SID provided, skipping credential validation");
1684
+ }
1685
+ return;
1686
+ }
1687
+ if (!nullOrEmpty(this.s1cUrl) && nullOrEmpty(this.apiKey) && nullOrEmpty(this.cloudInfraToken)) {
1688
+ if (process.env.MCP_TRANSPORT_TYPE?.toLowerCase() === "http") {
1689
+ if (verbose) {
1690
+ console.error("[Settings] Verbose: S1C URL provided without credentials, but HTTP transport mode allows per-request auth via headers");
1691
+ }
1692
+ } else {
1693
+ if (verbose) {
1694
+ console.error("[Settings] Verbose: Validation FAILED - S1C URL provided but no API key or CI token");
1695
+ }
1696
+ throw new Error("API key or CI Token is required for S1C (via --api-key or API_KEY env var)");
1674
1697
  }
1675
- throw new Error("API key or CI Token is required for S1C (via --api-key or API_KEY env var)");
1676
1698
  }
1677
1699
  if (!nullOrEmpty(this.managementHost) && nullOrEmpty(this.apiKey) && (nullOrEmpty(this.username) || nullOrEmpty(this.password))) {
1678
- if (verbose) {
1679
- console.error("[Settings] Verbose: Validation FAILED - Management host provided but no API key or credentials");
1700
+ if (process.env.MCP_TRANSPORT_TYPE?.toLowerCase() === "http") {
1701
+ if (verbose) {
1702
+ console.error("[Settings] Verbose: Management host provided without credentials, but HTTP transport mode allows per-request auth via headers");
1703
+ }
1704
+ } else {
1705
+ if (verbose) {
1706
+ console.error("[Settings] Verbose: Validation FAILED - Management host provided but no API key or credentials");
1707
+ }
1708
+ throw new Error("Either API key or username/password are required for on-prem management (via CLI args or env vars)");
1680
1709
  }
1681
- throw new Error("Either API key or username/password are required for on-prem management (via CLI args or env vars)");
1682
1710
  }
1683
1711
  if (nullOrEmpty(this.s1cUrl) && nullOrEmpty(this.managementHost)) {
1684
1712
  if (verbose) {
@@ -1747,6 +1775,7 @@ var Settings = class _Settings {
1747
1775
  managementPort: getHeaderValue(headers, "MANAGEMENT-PORT"),
1748
1776
  cloudInfraToken: getHeaderValue(headers, "CLOUD-INFRA-TOKEN"),
1749
1777
  cloudConnected: getHeaderValue(headers, "CLOUD-CONNECTED"),
1778
+ sid: getHeaderValue(headers, "X-chkp-sid"),
1750
1779
  clientId: getHeaderValue(headers, "CLIENT-ID"),
1751
1780
  secretKey: getHeaderValue(headers, "SECRET-KEY"),
1752
1781
  region: getHeaderValue(headers, "REGION"),
@@ -1780,6 +1809,7 @@ var Settings = class _Settings {
1780
1809
  managementPort: extractedValues.managementPort,
1781
1810
  cloudInfraToken: extractedValues.cloudInfraToken,
1782
1811
  cloudConnected: extractedValues.cloudConnected === "true",
1812
+ sid: extractedValues.sid,
1783
1813
  clientId: extractedValues.clientId,
1784
1814
  secretKey: extractedValues.secretKey,
1785
1815
  region: extractedValues.region?.toUpperCase(),
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chkp/documentation-mcp",
3
- "version": "1.4.3",
3
+ "version": "1.4.6",
4
4
  "description": "Check Point Documentation Tool Service - API integration with Check Point Documentation Tool",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chkp/documentation-mcp",
3
- "version": "1.4.3",
3
+ "version": "1.4.6",
4
4
  "description": "Check Point Documentation Tool Service - API integration with Check Point Documentation Tool",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/package.json.bak CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chkp/documentation-mcp",
3
- "version": "1.4.3",
3
+ "version": "1.4.6",
4
4
  "description": "Check Point Documentation Tool Service - API integration with Check Point Documentation Tool",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",