@chkp/documentation-mcp 0.1.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.
- package/.eslintrc.json +18 -0
- package/CHANGELOG.md +7 -0
- package/README.md +229 -0
- package/dist/documentation-api-manager.d.ts +30 -0
- package/dist/documentation-api-manager.d.ts.map +1 -0
- package/dist/documentation-api-manager.js +75 -0
- package/dist/documentation-api-manager.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +116 -0
- package/dist/index.js.map +1 -0
- package/dist/server-config.json +26 -0
- package/dist/settings.d.ts +9 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +15 -0
- package/dist/settings.js.map +1 -0
- package/package.json +40 -0
- package/tsconfig.json +9 -0
package/.eslintrc.json
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": ["../../.eslintrc.json"],
|
|
3
|
+
"ignorePatterns": ["!**/*"],
|
|
4
|
+
"overrides": [
|
|
5
|
+
{
|
|
6
|
+
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
|
|
7
|
+
"rules": {}
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"files": ["*.ts", "*.tsx"],
|
|
11
|
+
"rules": {}
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"files": ["*.js", "*.jsx"],
|
|
15
|
+
"rules": {}
|
|
16
|
+
}
|
|
17
|
+
]
|
|
18
|
+
}
|
package/CHANGELOG.md
ADDED
package/README.md
ADDED
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
# Check Point Documentation Tool MCP
|
|
2
|
+
|
|
3
|
+
## What is MCP?
|
|
4
|
+
|
|
5
|
+
Model Context Protocol (MCP) servers expose a structured, machine-readable API for your enterprise data—designed for AI-powered automation, copilots, and decision engines. By delivering a clear, contextual slice of your security environment, MCP lets you query, analyze, and optimize complex systems without building custom SDKs or parsing raw exports.
|
|
6
|
+
|
|
7
|
+
## Why MCP for Check Point Documentation Tool?
|
|
8
|
+
|
|
9
|
+
The Check Point Documentation Tool provides seamless access to Check Point Documentation Tool services through the Model Context Protocol. It enables AI assistants to interact with Check Point Documentation Tool, making it easier to get accurate answers about Check Point products, configurations, and best practices.
|
|
10
|
+
|
|
11
|
+
## Use with other MCPs for Best Results
|
|
12
|
+
While the Documentation Tool works well on its own for documentation queries, it is designed to be used alongside other Check Point MCP servers (found in this repo) to provide comprehensive context about your security environment and correlate documentation with live system data.
|
|
13
|
+
|
|
14
|
+
## Features
|
|
15
|
+
|
|
16
|
+
- Access to Check Point Documentation Tool services and knowledge base
|
|
17
|
+
- Search functionality for finding relevant documentation through Documentation Tool
|
|
18
|
+
- Real-time retrieval of Check Point product information via Documentation Tool
|
|
19
|
+
- Integration with AI assistants for contextual help and guidance
|
|
20
|
+
|
|
21
|
+
## Example Use Cases
|
|
22
|
+
|
|
23
|
+
### Documentation Lookup
|
|
24
|
+
"Find documentation about Check Point firewall rule configuration."
|
|
25
|
+
*→ Searches and returns relevant Check Point documentation about firewall rule setup and configuration best practices through Documentation Tool.*
|
|
26
|
+
|
|
27
|
+
### Product Information
|
|
28
|
+
"What are the system requirements for Check Point R81.20?"
|
|
29
|
+
*→ Retrieves specific product documentation with system requirements and compatibility information.*
|
|
30
|
+
|
|
31
|
+
### Troubleshooting Guidance
|
|
32
|
+
"How do I troubleshoot VPN connectivity issues in Check Point?"
|
|
33
|
+
*→ Returns step-by-step troubleshooting guides and diagnostic procedures from Check Point documentation.*
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
### ⚠️ Performance Notice
|
|
38
|
+
This server accesses Check Point documentation resources and may have rate limits. For best performance, use specific queries rather than broad searches.
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Configuration Options
|
|
42
|
+
|
|
43
|
+
This server supports configuration via command-line arguments or environment variables:
|
|
44
|
+
|
|
45
|
+
### API Configuration
|
|
46
|
+
|
|
47
|
+
The Check Point Documentation Tool MCP server requires authentication credentials for accessing Check Point Documentation Tool services.
|
|
48
|
+
|
|
49
|
+
#### Acquiring Credentials
|
|
50
|
+
|
|
51
|
+
To obtain the required API credentials:
|
|
52
|
+
|
|
53
|
+
1. **Login to Infinity Portal**: Navigate to your Check Point Infinity Portal
|
|
54
|
+
2. **Access API Keys**: Go to the "API Keys" menu
|
|
55
|
+
3. **Create New Key**: Click "New" → "New User API Key"
|
|
56
|
+
4. **Save Credentials**: Copy the generated `CLIENT_ID` and `SECRET_KEY`
|
|
57
|
+
|
|
58
|
+
#### Environment Variables
|
|
59
|
+
|
|
60
|
+
Set the following environment variables:
|
|
61
|
+
|
|
62
|
+
- `CLIENT_ID`: Client ID for authentication with Check Point Documentation Tool (required)
|
|
63
|
+
- `SECRET_KEY`: Secret Key for authentication with Check Point Documentation Tool (required)
|
|
64
|
+
- `REGION`: Documentation Tool region - EU, US, STG, or Local (default: EU)
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
### On-Prem Example Configuration
|
|
69
|
+
|
|
70
|
+
For on-premises Check Point Documentation Tool deployment:
|
|
71
|
+
|
|
72
|
+
Set the following environment variables:
|
|
73
|
+
|
|
74
|
+
- `CLIENT_ID`: Your client ID for Documentation Tool authentication
|
|
75
|
+
- `SECRET_KEY`: Your secret key for Documentation Tool authentication
|
|
76
|
+
- `REGION`: Set to "Local" for on-premises deployment
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Client Configuration
|
|
81
|
+
|
|
82
|
+
### Prerequisites
|
|
83
|
+
|
|
84
|
+
Download and install the latest version of [Node.js](https://nodejs.org/en/download/) if you don't already have it installed.
|
|
85
|
+
You can check your installed version by running:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
node -v # Should print "v18" or higher
|
|
89
|
+
nvm current # Should print "v18" or higher
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Supported Clients
|
|
93
|
+
|
|
94
|
+
This server has been tested with Claude Desktop, Cursor, GitHub Copilot, and Windsurf clients.
|
|
95
|
+
It is expected to work with any MCP client that supports the Model Context Protocol.
|
|
96
|
+
|
|
97
|
+
### Basic Configuration Example
|
|
98
|
+
|
|
99
|
+
```json
|
|
100
|
+
{
|
|
101
|
+
"mcpServers": {
|
|
102
|
+
"checkpoint-documentation-tool": {
|
|
103
|
+
"command": "npx",
|
|
104
|
+
"args": ["@chkp/documentation-mcp"],
|
|
105
|
+
"env": {
|
|
106
|
+
"CLIENT_ID": "YOUR_CLIENT_ID",
|
|
107
|
+
"SECRET_KEY": "YOUR_SECRET_KEY",
|
|
108
|
+
"REGION": "EU"
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Configuring the Claude Desktop App
|
|
116
|
+
|
|
117
|
+
#### For macOS:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Create the config file if it doesn't exist
|
|
121
|
+
touch "$HOME/Library/Application Support/Claude/claude_desktop_config.json"
|
|
122
|
+
|
|
123
|
+
# Open the config file in TextEdit
|
|
124
|
+
open -e "$HOME/Library/Application Support/Claude/claude_desktop_config.json"
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
#### For Windows:
|
|
128
|
+
|
|
129
|
+
```cmd
|
|
130
|
+
code %APPDATA%\Claude\claude_desktop_config.json
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Add the server configuration:
|
|
134
|
+
|
|
135
|
+
```json
|
|
136
|
+
{
|
|
137
|
+
"mcpServers": {
|
|
138
|
+
"checkpoint-documentation-tool": {
|
|
139
|
+
"command": "npx",
|
|
140
|
+
"args": ["@chkp/documentation-mcp"],
|
|
141
|
+
"env": {
|
|
142
|
+
"CLIENT_ID": "YOUR_CLIENT_ID",
|
|
143
|
+
"SECRET_KEY": "YOUR_SECRET_KEY",
|
|
144
|
+
"REGION": "EU"
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### VSCode
|
|
152
|
+
|
|
153
|
+
Enter VSCode settings and type "mcp" in the search bar.
|
|
154
|
+
You should see the option to edit the configuration file.
|
|
155
|
+
Add this configuration:
|
|
156
|
+
|
|
157
|
+
```json
|
|
158
|
+
{
|
|
159
|
+
...
|
|
160
|
+
"mcp": {
|
|
161
|
+
"inputs": [],
|
|
162
|
+
"servers": {
|
|
163
|
+
"checkpoint-documentation-tool": {
|
|
164
|
+
"command": "npx",
|
|
165
|
+
"args": [
|
|
166
|
+
"@chkp/documentation-mcp"
|
|
167
|
+
],
|
|
168
|
+
"env": {
|
|
169
|
+
"CLIENT_ID": "YOUR_CLIENT_ID",
|
|
170
|
+
"SECRET_KEY": "YOUR_SECRET_KEY",
|
|
171
|
+
"REGION": "EU"
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
...
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Windsurf
|
|
181
|
+
|
|
182
|
+
Enter Windsurf settings and type "mcp" in the search bar.
|
|
183
|
+
You should see the option to edit the configuration file.
|
|
184
|
+
Add the configuration as Claude Desktop App.
|
|
185
|
+
|
|
186
|
+
### Cursor
|
|
187
|
+
|
|
188
|
+
Enter Cursor settings and click on "MCP Servers" in the left menu.
|
|
189
|
+
You should see the option to add a new MCP Server.
|
|
190
|
+
Add the configuration as Claude Desktop App.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Development
|
|
195
|
+
|
|
196
|
+
### Prerequisites
|
|
197
|
+
|
|
198
|
+
- Node.js 18+
|
|
199
|
+
- npm 10+
|
|
200
|
+
|
|
201
|
+
### Setup
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
# Install all dependencies
|
|
205
|
+
npm install
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Build
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
# Build all packages
|
|
212
|
+
npm run build
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### Running Locally
|
|
216
|
+
|
|
217
|
+
You can run the server locally for development using [MCP Inspector](https://modelcontextprotocol.io/docs/tools/inspector) or any compatible MCP client.
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
node FULL_PATH_TO_SERVER/packages/copilot/dist/index.js --client-id "YOUR_CLIENT_ID" --secret-key "YOUR_SECRET_KEY" --region "EU"
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## ⚠️ Security Notice
|
|
226
|
+
|
|
227
|
+
1. **Authentication keys and credentials are never shared with the model.** They are used only by the MCP server to authenticate with your Check Point management system.
|
|
228
|
+
2. **Only use client implementations you trust.** Malicious or untrusted clients could misuse your credentials or access data improperly.
|
|
229
|
+
3. **Management data is exposed to the model.** Ensure that you only use models and providers that comply with your organization’s policies for handling sensitive data and PII.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { DocumentationToolSettings } from './settings';
|
|
2
|
+
type DocumentationToolAPIResponse = {
|
|
3
|
+
response: string;
|
|
4
|
+
};
|
|
5
|
+
export declare class DocumentationToolAPIManager {
|
|
6
|
+
private tokenService;
|
|
7
|
+
private axios;
|
|
8
|
+
private settings;
|
|
9
|
+
constructor(settings: DocumentationToolSettings);
|
|
10
|
+
/**
|
|
11
|
+
* Create a new DocumentationToolAPIManager instance from settings for Documentation Tool
|
|
12
|
+
* @param settings The complete settings object for this session
|
|
13
|
+
* @returns A new DocumentationToolAPIManager instance
|
|
14
|
+
*/
|
|
15
|
+
static create(settings: DocumentationToolSettings): DocumentationToolAPIManager;
|
|
16
|
+
/**
|
|
17
|
+
* Get a valid auth token using the shared token service
|
|
18
|
+
*/
|
|
19
|
+
getToken(): Promise<string>;
|
|
20
|
+
/**
|
|
21
|
+
* Get the base URL for API calls, handling local development if needed
|
|
22
|
+
*/
|
|
23
|
+
getBaseUrl(): string;
|
|
24
|
+
callApi(method: string, uri: string, data: {
|
|
25
|
+
question: string;
|
|
26
|
+
product: string;
|
|
27
|
+
}): Promise<DocumentationToolAPIResponse>;
|
|
28
|
+
}
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=documentation-api-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentation-api-manager.d.ts","sourceRoot":"","sources":["../src/documentation-api-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvD,KAAK,4BAA4B,GAAG;IAChC,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qBAAa,2BAA2B;IACpC,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,QAAQ,CAA4B;gBAEhC,QAAQ,EAAE,yBAAyB;IAS/C;;;;OAIG;IACH,MAAM,CAAC,MAAM,CACT,QAAQ,EAAE,yBAAyB,GACpC,2BAA2B;IAI9B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC;;OAEG;IACH,UAAU,IAAI,MAAM;IAOd,OAAO,CACT,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC,4BAA4B,CAAC;CAmE3C"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import { ExternalUserTokenManager } from '@chkp/quantum-infra';
|
|
3
|
+
export class DocumentationToolAPIManager {
|
|
4
|
+
constructor(settings) {
|
|
5
|
+
this.settings = settings;
|
|
6
|
+
this.tokenService = new ExternalUserTokenManager(settings);
|
|
7
|
+
this.axios = axios.create({
|
|
8
|
+
timeout: 30000,
|
|
9
|
+
validateStatus: () => true,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Create a new DocumentationToolAPIManager instance from settings for Documentation Tool
|
|
14
|
+
* @param settings The complete settings object for this session
|
|
15
|
+
* @returns A new DocumentationToolAPIManager instance
|
|
16
|
+
*/
|
|
17
|
+
static create(settings) {
|
|
18
|
+
return new DocumentationToolAPIManager(settings);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get a valid auth token using the shared token service
|
|
22
|
+
*/
|
|
23
|
+
async getToken() {
|
|
24
|
+
return await this.tokenService.getToken();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get the base URL for API calls, handling local development if needed
|
|
28
|
+
*/
|
|
29
|
+
getBaseUrl() {
|
|
30
|
+
if (this.settings.region === 'LOCAL') {
|
|
31
|
+
return `http://localhost:${this.settings.devPort || '8006'}`;
|
|
32
|
+
}
|
|
33
|
+
return `${this.settings.getCloudInfraGateway()}/app/console-one`;
|
|
34
|
+
}
|
|
35
|
+
async callApi(method, uri, data) {
|
|
36
|
+
const token = await this.getToken();
|
|
37
|
+
const chatUrl = `${this.getBaseUrl()}/${uri}`;
|
|
38
|
+
const question = data.question;
|
|
39
|
+
const product = data.product;
|
|
40
|
+
const headers = {
|
|
41
|
+
Authorization: `Bearer ${token}`,
|
|
42
|
+
'Content-Type': 'application/json',
|
|
43
|
+
};
|
|
44
|
+
const params = {
|
|
45
|
+
question: question,
|
|
46
|
+
product: product,
|
|
47
|
+
skip_llm: true,
|
|
48
|
+
};
|
|
49
|
+
try {
|
|
50
|
+
const response = await this.axios.post(chatUrl, params, {
|
|
51
|
+
headers,
|
|
52
|
+
});
|
|
53
|
+
if (response.status !== 200) {
|
|
54
|
+
// Log the error response body
|
|
55
|
+
console.error('Error response body:', JSON.stringify(response.data, null, 2));
|
|
56
|
+
throw new Error(`Chat request failed: ${response.statusText} (${response.status})`);
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
response: response.data.response,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
// Log any axios exceptions
|
|
64
|
+
const axiosError = error;
|
|
65
|
+
console.error('Axios error:', axiosError.message);
|
|
66
|
+
if (axiosError.response) {
|
|
67
|
+
console.error('Error status:', axiosError.response.status);
|
|
68
|
+
console.error('Error headers:', JSON.stringify(axiosError.response.headers, null, 2));
|
|
69
|
+
console.error('Error data:', JSON.stringify(axiosError.response.data, null, 2));
|
|
70
|
+
}
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=documentation-api-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentation-api-manager.js","sourceRoot":"","sources":["../src/documentation-api-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsBpE,QAAA,MAAM,MAAM,WAKV,CAAC;AAiHH,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
4
|
+
import { launchMCPServer, createServerModule, createApiRunner, } from '@chkp/mcp-utils';
|
|
5
|
+
import { readFileSync } from 'fs';
|
|
6
|
+
import { join, dirname } from 'path';
|
|
7
|
+
import { fileURLToPath } from 'url';
|
|
8
|
+
import { DocumentationToolAPIManager } from './documentation-api-manager.js';
|
|
9
|
+
import { DocumentationToolSettings } from './settings.js';
|
|
10
|
+
const pkg = JSON.parse(readFileSync(join(dirname(fileURLToPath(import.meta.url)), '../package.json'), 'utf-8'));
|
|
11
|
+
process.env.CP_MCP_MAIN_PKG = `${pkg.name} v${pkg.version}`;
|
|
12
|
+
// Create a new MCP server instance
|
|
13
|
+
const server = new McpServer({
|
|
14
|
+
name: 'checkpoint-documentation',
|
|
15
|
+
description: 'Comprehensive Check Point documentation assistant providing instant access to product information, technical specifications, configuration guidance, and feature documentation across the entire Check Point security portfolio.',
|
|
16
|
+
version: '1.0.0',
|
|
17
|
+
});
|
|
18
|
+
// Create a multi-user server module
|
|
19
|
+
const serverModule = createServerModule(server, DocumentationToolSettings, pkg, DocumentationToolAPIManager);
|
|
20
|
+
// Create an API runner function
|
|
21
|
+
const runApi = createApiRunner(serverModule);
|
|
22
|
+
server.tool('ask-checkpoint-docs', 'Ask Check Point documentation. Use this to get information about Check Point products and features.', {
|
|
23
|
+
text: z.string().describe(`The question to ask Check Point, in clear text with clear concise context and instructions.
|
|
24
|
+
The question should be about one of the Check Point products (e.g., Smart-1 Cloud, Harmony SASE, CloudGuard, Harmony Endpoint, etc.).
|
|
25
|
+
Include relevant technical details, product names, feature names, and specific use cases for the most accurate and helpful response.`),
|
|
26
|
+
product: z
|
|
27
|
+
.enum([
|
|
28
|
+
's1c',
|
|
29
|
+
'maas',
|
|
30
|
+
'mobile',
|
|
31
|
+
'endpoint',
|
|
32
|
+
'edr',
|
|
33
|
+
'xdr',
|
|
34
|
+
'playblocks',
|
|
35
|
+
'infinity-events',
|
|
36
|
+
'cloudguard',
|
|
37
|
+
'cloudguardnetwork',
|
|
38
|
+
'cloudnetworksecurity',
|
|
39
|
+
'rfp-copilot',
|
|
40
|
+
'harmony-sase',
|
|
41
|
+
'customer-support',
|
|
42
|
+
'smp',
|
|
43
|
+
'appsec',
|
|
44
|
+
'sd-wan',
|
|
45
|
+
'horizonmonitoring',
|
|
46
|
+
'ndr',
|
|
47
|
+
])
|
|
48
|
+
.optional()
|
|
49
|
+
.describe(`Select the specific Check Point product to target for focused documentation queries. This parameter helps narrow down search results to the most relevant product-specific information. Defaults to 's1c' (Smart-1 Cloud) if not specified. Choose from:
|
|
50
|
+
|
|
51
|
+
Cloud Management & Security:
|
|
52
|
+
- s1c: Smart-1 Cloud - Cloud-based security management platform for centralized policy management (DEFAULT)
|
|
53
|
+
- maas: Management as a Service - Cloud management platform for distributed deployments
|
|
54
|
+
- cloudguard: CloudGuard - Comprehensive cloud security and compliance platform
|
|
55
|
+
- cloudguardnetwork: CloudGuard Network - Cloud network security solutions
|
|
56
|
+
- cloudnetworksecurity: CloudGuard Network Security - Advanced cloud network protection
|
|
57
|
+
- appsec: CloudGuard WAF - Web Application Firewall and application security
|
|
58
|
+
|
|
59
|
+
Endpoint & Device Security:
|
|
60
|
+
- mobile: Harmony Mobile - Mobile device security and threat protection
|
|
61
|
+
- endpoint: Harmony Endpoint - Endpoint protection and threat prevention
|
|
62
|
+
- edr: Endpoint Detection and Response - Advanced endpoint threat detection and response
|
|
63
|
+
- xdr: Extended Detection and Response - Cross-platform threat detection and response
|
|
64
|
+
|
|
65
|
+
Network & Infrastructure:
|
|
66
|
+
- harmony-sase: Harmony SASE - Secure Access Service Edge platform
|
|
67
|
+
- sd-wan: Quantum SD-WAN - Software-defined wide area networking solutions
|
|
68
|
+
- horizonmonitoring: Horizon Monitoring - AI-powered network operations and monitoring
|
|
69
|
+
- ndr: Network Detection and Response - Advanced network threat detection
|
|
70
|
+
|
|
71
|
+
Automation & Intelligence:
|
|
72
|
+
- playblocks: Infinity Playblocks - Security automation and orchestration platform
|
|
73
|
+
- infinity-events: Infinity Events - Centralized security event management platform
|
|
74
|
+
- rfp-copilot: RFP Copilot - AI-powered request for proposal assistance
|
|
75
|
+
|
|
76
|
+
Support & Management:
|
|
77
|
+
- customer-support: Customer Support - Technical support and assistance services
|
|
78
|
+
- smp: Security Management Platform - Unified security management
|
|
79
|
+
|
|
80
|
+
Usage Guidelines:
|
|
81
|
+
- Defaults to s1c (Smart-1 Cloud) for general management and security questions
|
|
82
|
+
- Specify a different product when the user's question is clearly about that specific product
|
|
83
|
+
- For troubleshooting or configuration questions, specify the exact product involved.`),
|
|
84
|
+
}, async ({ text, product }, extra) => {
|
|
85
|
+
try {
|
|
86
|
+
const result = await runApi('post', 'api/v1/doc/ask_docs', { question: text, product }, extra);
|
|
87
|
+
return {
|
|
88
|
+
content: [
|
|
89
|
+
{
|
|
90
|
+
type: 'text',
|
|
91
|
+
text: result.response,
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
return {
|
|
98
|
+
content: [
|
|
99
|
+
{
|
|
100
|
+
type: 'text',
|
|
101
|
+
text: `API Error: ${error.message}`,
|
|
102
|
+
},
|
|
103
|
+
],
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
export { server };
|
|
108
|
+
// Settings implementation - updated for multi-user support
|
|
109
|
+
const main = async () => {
|
|
110
|
+
await launchMCPServer(join(dirname(fileURLToPath(import.meta.url)), 'server-config.json'), serverModule);
|
|
111
|
+
};
|
|
112
|
+
main().catch((error) => {
|
|
113
|
+
console.error('Fatal error in main():', error);
|
|
114
|
+
process.exit(1);
|
|
115
|
+
});
|
|
116
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "checkpoint-documentation-tool",
|
|
3
|
+
"description": "Check Point Documentation Tool Service - API integration with Check Point Documentation Tool",
|
|
4
|
+
"options": [
|
|
5
|
+
{
|
|
6
|
+
"flag": "--client-id <client-id>",
|
|
7
|
+
"description": "Client ID for authentication with Documentation Tool",
|
|
8
|
+
"env": "CLIENT_ID",
|
|
9
|
+
"required": true,
|
|
10
|
+
"type": "string"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"flag": "--secret-key <secret-key>",
|
|
14
|
+
"description": "Secret Key for authentication with Documentation Tool",
|
|
15
|
+
"env": "SECRET_KEY",
|
|
16
|
+
"required": true,
|
|
17
|
+
"type": "string"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"flag": "--region <region>",
|
|
21
|
+
"description": "Documentation Tool region: EU, US, STG, or Local",
|
|
22
|
+
"env": "REGION",
|
|
23
|
+
"type": "string"
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Settings } from '@chkp/quantum-infra';
|
|
2
|
+
export declare class DocumentationToolSettings extends Settings {
|
|
3
|
+
constructor(args?: Record<string, unknown>);
|
|
4
|
+
/**
|
|
5
|
+
* Create DocumentationToolSettings from command-line arguments for Documentation Tool
|
|
6
|
+
*/
|
|
7
|
+
static fromArgs(args: Record<string, unknown>): DocumentationToolSettings;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,qBAAa,yBAA0B,SAAQ,QAAQ;gBACvC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAI9C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,yBAAyB;CAK5E"}
|
package/dist/settings.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Settings } from '@chkp/quantum-infra';
|
|
2
|
+
export class DocumentationToolSettings extends Settings {
|
|
3
|
+
constructor(args = {}) {
|
|
4
|
+
super(args);
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Create DocumentationToolSettings from command-line arguments for Documentation Tool
|
|
8
|
+
*/
|
|
9
|
+
static fromArgs(args) {
|
|
10
|
+
return new DocumentationToolSettings({
|
|
11
|
+
...args,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,MAAM,OAAO,yBAA0B,SAAQ,QAAQ;IACnD,YAAY,OAAgC,EAAE;QAC1C,KAAK,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAA6B;QACzC,OAAO,IAAI,yBAAyB,CAAC;YACjC,GAAG,IAAI;SACV,CAAC,CAAC;IACP,CAAC;CACJ"}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@chkp/documentation-mcp",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Check Point Documentation Tool Service - API integration with Check Point Documentation Tool",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"documentation-mcp": "./dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "https://github.com/CheckPointSW/mcp-servers.git",
|
|
14
|
+
"directory": "packages/documentation-tool"
|
|
15
|
+
},
|
|
16
|
+
"license": "MIT",
|
|
17
|
+
"engines": {
|
|
18
|
+
"node": ">=18.0.0"
|
|
19
|
+
},
|
|
20
|
+
"scripts": {
|
|
21
|
+
"clean": "rimraf dist",
|
|
22
|
+
"build": "tsc && chmod +x ./dist/index.js && cp src/server-config.json dist/",
|
|
23
|
+
"dev": "tsc --watch",
|
|
24
|
+
"start": "node dist/index.js"
|
|
25
|
+
},
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"@modelcontextprotocol/sdk": "^1.11.1",
|
|
28
|
+
"axios": "^1.11.0",
|
|
29
|
+
"commander": "^11.1.0",
|
|
30
|
+
"zod": "^3.22.4"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@chkp/mcp-utils": "*",
|
|
34
|
+
"@chkp/quantum-infra": "*",
|
|
35
|
+
"@types/node": "^18.15.11",
|
|
36
|
+
"dotenv": "^17.2.2",
|
|
37
|
+
"tsx": "^4.20.5",
|
|
38
|
+
"typescript": "^5.0.4"
|
|
39
|
+
}
|
|
40
|
+
}
|