@customer-support-success/pylon-mcp-server 3.7.0 → 3.7.1

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/.env.example CHANGED
@@ -7,4 +7,14 @@ PYLON_API_TOKEN=your_pylon_api_token_here
7
7
  # Cache TTL in milliseconds (optional)
8
8
  # Default: 30000 (30 seconds)
9
9
  # Set to 0 to disable caching
10
- # PYLON_CACHE_TTL=30000
10
+ # PYLON_CACHE_TTL=30000
11
+
12
+ # Maximum retry attempts for transient failures (optional)
13
+ # Default: 3
14
+ # Set to 0 to disable retries
15
+ # Retries on: 429 (rate limit), 5xx (server error), network timeouts
16
+ # PYLON_RETRY_MAX=3
17
+
18
+ # Debug logging (optional)
19
+ # Set to true to log request/response details and retry attempts to stderr
20
+ # PYLON_DEBUG=true
package/CHANGELOG.md CHANGED
@@ -5,6 +5,30 @@ All notable changes to the Pylon MCP Server will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [3.7.1] - 2026-02-27
9
+
10
+ ### Changed
11
+
12
+ - **Documentation**: Comprehensive README and CLAUDE.md update
13
+ - Added 12 missing tools to Available Tools section (38 total now documented)
14
+ - Added retry logic documentation (`PYLON_RETRY_MAX`, `PYLON_DEBUG`, Retry Behavior section)
15
+ - Removed all Smithery references and deleted `smithery.yaml`
16
+ - Removed stale "NEW" markers from 7 tools
17
+ - Fixed workflow reference (`publish.yml` → `release.yml`)
18
+ - Rewrote Features section to cover all capabilities
19
+ - Expanded Example Tool Usage section
20
+
21
+ ### Removed
22
+
23
+ - Deleted `GCP_SETUP.md` (outdated, referenced non-existent `publish.yml`)
24
+ - Deleted `SECURITY_AUDIT_REPORT.md` (one-time pre-publication audit, no longer relevant)
25
+ - Removed tracked `.DS_Store` and `.idea/` files (should never have been committed)
26
+
27
+ ### Fixed
28
+
29
+ - Added `.DS_Store` to `.gitignore`
30
+ - Added `PYLON_RETRY_MAX` and `PYLON_DEBUG` to `.env.example`
31
+
8
32
  ## [3.7.0] - 2026-02-27
9
33
 
10
34
  ### Added
package/CLAUDE.md CHANGED
@@ -13,13 +13,12 @@ This is an MCP (Model Context Protocol) server that provides comprehensive integ
13
13
  - **HTTP Client**: Axios for API communication
14
14
  - **Caching**: In-memory cache with configurable TTL (default 30s)
15
15
  - **Build System**: TypeScript compiler
16
- - **Deployment**: Smithery platform
16
+ - **Deployment**: npm registry
17
17
 
18
18
  ## Key Files
19
19
 
20
20
  - `src/pylon-client.ts` - Pylon API client with authentication and all endpoint methods
21
21
  - `src/index.ts` - MCP server implementation with tool definitions and handlers
22
- - `smithery.yaml` - Smithery deployment configuration
23
22
  - `package.json` - Dependencies and build scripts
24
23
 
25
24
  ## API Coverage
@@ -132,12 +131,6 @@ To test the MCP server with a real client:
132
131
  - Use built `dist/index.js` as entrypoint
133
132
  - Can run with `npx pylon-mcp-server` after publishing to npm
134
133
 
135
- ### Smithery Production
136
-
137
- - Uses `smithery.yaml` configuration
138
- - Automatic dependency installation and build
139
- - Environment variable configuration through Smithery UI
140
-
141
134
  ## Code Patterns
142
135
 
143
136
  ### Adding New API Endpoints
@@ -184,8 +177,6 @@ To test the MCP server with a real client:
184
177
  }
185
178
  ```
186
179
 
187
- 5. **Update smithery.yaml** tools list
188
-
189
180
  ## Error Handling
190
181
 
191
182
  - All API calls are wrapped in try/catch
@@ -210,6 +201,5 @@ To test the MCP server with a real client:
210
201
 
211
202
  - Add response type validation
212
203
  - Implement proper TypeScript types for all API responses
213
- - Add retry logic for failed API calls
214
204
  - Implement rate limiting
215
205
  - Add comprehensive error codes mapping
package/README.md CHANGED
@@ -4,13 +4,22 @@ An MCP (Model Context Protocol) server for integrating with the Pylon API.
4
4
 
5
5
  ## Features
6
6
 
7
- This MCP server provides tools to interact with Pylon's API:
7
+ This MCP server provides 38 tools for comprehensive Pylon API integration:
8
8
 
9
- - **User Management**: Get current user information
9
+ - **User Management**: Get current user, list and search team members
10
10
  - **Contacts**: List, search, and create contacts
11
- - **Issues**: List, filter, and create issues
12
- - **Knowledge Base**: Access and create knowledge base articles
13
- - **Smart Caching**: Automatic caching of GET requests to minimize API usage
11
+ - **Issues**: Full CRUD, search, filter, snooze, and delete issues
12
+ - **Tags**: Get, create, add, and remove tags on issues
13
+ - **External Issue Linking**: Link/unlink Linear, Jira, GitHub, Asana issues
14
+ - **Issue Followers**: Get, add, and remove followers on issues
15
+ - **Similar Issues**: Find similar issues by requestor, account, or globally
16
+ - **Knowledge Base**: List knowledge bases and create articles
17
+ - **Teams**: List, get details, and create teams
18
+ - **Accounts**: List and get account details
19
+ - **Attachments**: Get metadata and create from URL
20
+ - **Ticket Forms**: List available submission forms
21
+ - **Smart Caching**: Automatic caching of GET requests with configurable TTL
22
+ - **Retry Logic**: Exponential backoff for transient failures (429, 5xx, timeouts)
14
23
 
15
24
  ## Setup
16
25
 
@@ -22,6 +31,14 @@ Set the following environment variables:
22
31
  - `PYLON_CACHE_TTL`: Cache time-to-live in milliseconds (optional, default: 30000)
23
32
  - Set to `0` to disable caching
24
33
  - Example: `PYLON_CACHE_TTL=60000` for 60-second cache
34
+ - `PYLON_RETRY_MAX`: Maximum retry attempts for transient failures (optional, default: 3)
35
+ - Set to `0` to disable retries
36
+ - Retries on: 429 (rate limit), 5xx (server error), network timeouts
37
+ - Only retries idempotent requests (GET, HEAD, OPTIONS, PUT, DELETE)
38
+ - Uses exponential backoff with jitter
39
+ - Respects `Retry-After` header (capped at 30 seconds)
40
+ - `PYLON_DEBUG`: Set to `true` to enable debug logging (optional)
41
+ - Logs request/response details and retry attempts to stderr
25
42
 
26
43
  ### HTTP Request Timeout
27
44
 
@@ -37,6 +54,15 @@ If you encounter timeout errors, check:
37
54
  2. Pylon API status
38
55
  3. Whether the operation is legitimately slow (e.g., large data queries)
39
56
 
57
+ ### Retry Behavior
58
+
59
+ The client automatically retries transient API failures with exponential backoff:
60
+
61
+ - **Retried errors**: HTTP 429 (rate limit), 5xx (server errors), network timeouts
62
+ - **Not retried**: 4xx client errors (400, 401, 403, 404, 422), POST/PATCH requests
63
+ - **Backoff**: `min(1000ms × 2^attempt + random jitter, 30s)`, respects `Retry-After` header
64
+ - **Default**: 3 retry attempts. Set `PYLON_RETRY_MAX=0` to disable.
65
+
40
66
  ### Caching Behavior
41
67
 
42
68
  The server implements intelligent caching to reduce API calls:
@@ -77,7 +103,7 @@ Preferred: tag and let GitHub Actions publish via npm Trusted Publishing (OIDC)
77
103
  git tag vX.Y.Z && git push origin vX.Y.Z
78
104
  ```
79
105
 
80
- CI (`.github/workflows/publish.yml`) will build/test and publish to npmjs with `--provenance` via trusted publisher.
106
+ CI (`.github/workflows/release.yml`) will build/test and publish to npmjs with `--provenance` via trusted publisher.
81
107
 
82
108
  Manual (maintainers only, if ever needed):
83
109
 
@@ -126,10 +152,13 @@ npm run test:coverage
126
152
  ### User Tools
127
153
 
128
154
  - `pylon_get_me`: Get current user information
155
+ - `pylon_get_users`: Get all team members and support agents
156
+ - `pylon_search_users`: Search for team members by name, email, or department
129
157
 
130
158
  ### Contact Tools
131
159
 
132
160
  - `pylon_get_contacts`: List contacts with optional search and limit
161
+ - `pylon_search_contacts`: Search for contacts by name, email, or company
133
162
  - `pylon_create_contact`: Create a new contact
134
163
 
135
164
  ### Issue Tools
@@ -142,21 +171,21 @@ npm run test:coverage
142
171
  - `pylon_get_issue_with_messages`: Get a complete issue with all messages in one call
143
172
  - `pylon_get_issue_messages`: Get conversation history for an issue
144
173
  - `pylon_update_issue`: Update issue status, priority, assignee, or replace all tags
145
- - `pylon_add_tags`: **NEW** - Incrementally add tags to an issue (preserves existing tags, deduplicates)
146
- - `pylon_remove_tags`: **NEW** - Incrementally remove specific tags from an issue (leaves other tags intact)
174
+ - `pylon_add_tags`: Incrementally add tags to an issue (preserves existing tags, deduplicates)
175
+ - `pylon_remove_tags`: Incrementally remove specific tags from an issue (leaves other tags intact)
147
176
  - `pylon_snooze_issue`: Temporarily hide an issue until a future date
148
177
  - `pylon_delete_issue`: Permanently delete an issue (⚠️ destructive operation)
149
178
 
150
179
  ### External Issue Linking Tools
151
180
 
152
- - `pylon_link_external_issue`: **NEW** - Link an external issue (Linear, Jira, GitHub, Asana) to a Pylon issue
153
- - `pylon_unlink_external_issue`: **NEW** - Unlink an external issue from a Pylon issue
181
+ - `pylon_link_external_issue`: Link an external issue (Linear, Jira, GitHub, Asana) to a Pylon issue
182
+ - `pylon_unlink_external_issue`: Unlink an external issue from a Pylon issue
154
183
 
155
184
  ### Issue Followers Tools
156
185
 
157
- - `pylon_get_issue_followers`: **NEW** - Get the list of followers for an issue
158
- - `pylon_add_issue_followers`: **NEW** - Add users and/or contacts as followers to an issue
159
- - `pylon_remove_issue_followers`: **NEW** - Remove followers from an issue
186
+ - `pylon_get_issue_followers`: Get the list of followers for an issue
187
+ - `pylon_add_issue_followers`: Add users and/or contacts as followers to an issue
188
+ - `pylon_remove_issue_followers`: Remove followers from an issue
160
189
 
161
190
  #### Searching by Custom Status
162
191
 
@@ -197,11 +226,37 @@ pylon_search_issues with:
197
226
 
198
227
  > **Note:** The Pylon API does not support creating messages programmatically. Messages can only be created through the Pylon web UI or original channels (Slack, email, etc.).
199
228
 
229
+ ### Similar Issues Tools
230
+
231
+ - `pylon_find_similar_issues_for_requestor`: Find similar issues from the same contact
232
+ - `pylon_find_similar_issues_for_account`: Find similar issues from the same account/company
233
+ - `pylon_find_similar_issues_global`: Find similar issues across all users and companies
234
+
200
235
  ### Knowledge Base Tools
201
236
 
202
237
  - `pylon_get_knowledge_bases`: List all knowledge bases
203
238
  - `pylon_create_knowledge_base_article`: Create a new article in a knowledge base
204
239
 
240
+ ### Team Tools
241
+
242
+ - `pylon_get_teams`: List all support teams
243
+ - `pylon_get_team`: Get details of a specific team
244
+ - `pylon_create_team`: Create a new support team
245
+
246
+ ### Account Tools
247
+
248
+ - `pylon_get_accounts`: List all customer accounts
249
+ - `pylon_get_account`: Get details of a specific account
250
+
251
+ ### Tag Tools
252
+
253
+ - `pylon_get_tags`: Get all available tags
254
+ - `pylon_create_tag`: Create a new tag
255
+
256
+ ### Ticket Form Tools
257
+
258
+ - `pylon_get_ticket_forms`: Get all ticket submission forms
259
+
205
260
  ### Attachment Tools
206
261
 
207
262
  - `pylon_get_attachment`: Get attachment metadata (includes a downloadable URL)
@@ -238,13 +293,14 @@ Augment Code supports MCP servers through its Easy MCP feature in VS Code and Je
238
293
  "args": ["@customer-support-success/pylon-mcp-server"],
239
294
  "env": {
240
295
  "PYLON_API_TOKEN": "your_pylon_api_token_here",
241
- "PYLON_CACHE_TTL": "30000"
296
+ "PYLON_CACHE_TTL": "30000",
297
+ "PYLON_RETRY_MAX": "3"
242
298
  }
243
299
  }
244
300
  }
245
301
  ```
246
302
 
247
- > **Note**: `PYLON_CACHE_TTL` is optional and defaults to 30000ms (30 seconds). Set to `0` to disable caching.
303
+ > **Note**: `PYLON_RETRY_MAX` is optional and defaults to 3. Set to `0` to disable retries. `PYLON_CACHE_TTL` is optional and defaults to 30000ms (30 seconds). Set to `0` to disable caching.
248
304
 
249
305
  **Option B: Using local installation**
250
306
 
@@ -257,7 +313,8 @@ Augment Code supports MCP servers through its Easy MCP feature in VS Code and Je
257
313
  "args": ["/absolute/path/to/pylon-mcp-server/dist/index.js"],
258
314
  "env": {
259
315
  "PYLON_API_TOKEN": "your_pylon_api_token_here",
260
- "PYLON_CACHE_TTL": "30000"
316
+ "PYLON_CACHE_TTL": "30000",
317
+ "PYLON_RETRY_MAX": "3"
261
318
  }
262
319
  }
263
320
  }
@@ -310,7 +367,8 @@ Add this to your Claude Desktop MCP settings (`~/Library/Application Support/Cla
310
367
  "args": ["@customer-support-success/pylon-mcp-server"],
311
368
  "env": {
312
369
  "PYLON_API_TOKEN": "your_pylon_api_token_here",
313
- "PYLON_CACHE_TTL": "30000"
370
+ "PYLON_CACHE_TTL": "30000",
371
+ "PYLON_RETRY_MAX": "3"
314
372
  }
315
373
  }
316
374
  }
@@ -327,7 +385,8 @@ Add this to your Claude Desktop MCP settings (`~/Library/Application Support/Cla
327
385
  "args": ["/path/to/pylon-mcp-server/dist/index.js"],
328
386
  "env": {
329
387
  "PYLON_API_TOKEN": "your_pylon_api_token_here",
330
- "PYLON_CACHE_TTL": "30000"
388
+ "PYLON_CACHE_TTL": "30000",
389
+ "PYLON_RETRY_MAX": "3"
331
390
  }
332
391
  }
333
392
  }
@@ -346,26 +405,6 @@ Use pylon_get_issues to show recent support tickets
346
405
  Search for contacts with pylon_search_contacts using "customer@example.com"
347
406
  ```
348
407
 
349
- ### Running via Smithery
350
-
351
- 1. **Deploy to Smithery**:
352
- - Upload your project to Smithery
353
- - Smithery will automatically use the `smithery.yaml` configuration
354
- - Set the `PYLON_API_TOKEN` environment variable in Smithery's deployment settings
355
-
356
- 2. **Configure in Claude Desktop**:
357
-
358
- ```json
359
- {
360
- "mcpServers": {
361
- "pylon": {
362
- "command": "npx",
363
- "args": ["-y", "@smithery/pylon-mcp-server"]
364
- }
365
- }
366
- }
367
- ```
368
-
369
408
  ### Example Tool Usage
370
409
 
371
410
  Once connected, you can use the available tools:
@@ -381,6 +420,20 @@ Once connected, you can use the available tools:
381
420
  "Get issue #123 with all messages" → uses pylon_get_issue_with_messages
382
421
  "Update issue status to resolved" → uses pylon_update_issue
383
422
 
423
+ # Similar Issues
424
+ "Find similar issues from this customer" → uses pylon_find_similar_issues_for_requestor
425
+ "Check if this account has had similar problems" → uses pylon_find_similar_issues_for_account
426
+
427
+ # Tags
428
+ "Show all available tags" → uses pylon_get_tags
429
+ "Add a tag to this issue" → uses pylon_add_tags
430
+
431
+ # External Linking
432
+ "Link this Linear ticket to the Pylon issue" → uses pylon_link_external_issue
433
+
434
+ # Issue Followers
435
+ "Add me as a follower on this issue" → uses pylon_add_issue_followers
436
+
384
437
  # Attachments
385
438
  "Create attachment from URL" → uses pylon_create_attachment_from_url
386
439
 
@@ -388,20 +441,14 @@ Once connected, you can use the available tools:
388
441
  "List all knowledge bases" → uses pylon_get_knowledge_bases
389
442
  "Create a new help article" → uses pylon_create_knowledge_base_article
390
443
 
444
+ # Ticket Forms
445
+ "Show available ticket forms" → uses pylon_get_ticket_forms
446
+
391
447
  # Team & Account Management
392
448
  "Show all teams" → uses pylon_get_teams
393
449
  "Get account details" → uses pylon_get_accounts
394
450
  ```
395
451
 
396
- ## Deployment to Smithery
397
-
398
- This server is designed to be deployed to Smithery using the included `smithery.yaml` configuration. The deployment will automatically:
399
-
400
- - Install dependencies with `npm install && npm run build`
401
- - Configure the Node.js runtime with proper entrypoint
402
- - Expose all supported Pylon API tools
403
- - Require the `PYLON_API_TOKEN` environment variable
404
-
405
452
  ## API Reference
406
453
 
407
454
  For more information about the Pylon API, visit the [API reference](https://docs.usepylon.com/pylon-docs/developer/api/api-reference).
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@ const pylonClient = createPylonClient(PYLON_API_TOKEN, PYLON_CACHE_TTL);
11
11
  // Create the McpServer instance (high-level API, replaces deprecated Server class)
12
12
  const mcpServer = new McpServer({
13
13
  name: 'pylon-mcp-server',
14
- version: '3.7.0',
14
+ version: '3.7.1',
15
15
  });
16
16
  // Helper function to ensure pylonClient is initialized
17
17
  function ensurePylonClient() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@customer-support-success/pylon-mcp-server",
3
- "version": "3.7.0",
3
+ "version": "3.7.1",
4
4
  "description": "MCP server for Pylon API integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/GCP_SETUP.md DELETED
@@ -1,109 +0,0 @@
1
- # npm Public Publish Guide
2
-
3
- This document explains how the Pylon MCP Server is published to and used from the public npm registry using npm Trusted Publishing (OIDC).
4
-
5
- ## What Was Set Up
6
-
7
- 1. **npm Registry (public)**
8
- - Registry: `https://registry.npmjs.org/`
9
- - Package: `@customer-support-success/pylon-mcp-server`
10
- - Access: public
11
-
12
- 2. **Trusted Publisher**
13
- - Provider: GitHub
14
- - Repository: `mgmonteleone/pylon-mcp`
15
- - Workflow: `.github/workflows/publish.yml`
16
- - Branch: `main`
17
-
18
- ## For Users: Installing and Using the Package
19
-
20
- ### Using with npx (Recommended)
21
-
22
- ```bash
23
- npx @customer-support-success/pylon-mcp-server
24
- ```
25
-
26
- ### Installing Globally
27
-
28
- ```bash
29
- npm install -g @customer-support-success/pylon-mcp-server
30
- ```
31
-
32
- ### Using with Augment Code
33
-
34
- Add this to your Augment Code MCP configuration (npm public):
35
-
36
- ```json
37
- {
38
- "pylon": {
39
- "command": "npx",
40
- "args": ["@customer-support-success/pylon-mcp-server"],
41
- "env": {
42
- "PYLON_API_TOKEN": "your_pylon_api_token_here"
43
- }
44
- }
45
- }
46
- ```
47
-
48
- ### Using with Claude Desktop
49
-
50
- Add this to `~/Library/Application Support/Claude/claude_desktop_config.json`:
51
-
52
- ```json
53
- {
54
- "mcpServers": {
55
- "pylon": {
56
- "command": "npx",
57
- "args": ["@customer-support-success/pylon-mcp-server"],
58
- "env": {
59
- "PYLON_API_TOKEN": "your_pylon_api_token_here"
60
- }
61
- }
62
- }
63
- }
64
- ```
65
-
66
- ## For Maintainers: Publishing Updates
67
-
68
- ### Prerequisites
69
-
70
- 1. GCP authentication with publish permissions
71
- 2. Local repository cloned and up to date
72
-
73
- ### Publishing a New Version
74
-
75
- 1. **Update the version** in `package.json`:
76
-
77
- ```bash
78
- npm version patch # or minor, or major
79
- ```
80
-
81
- 2. **Publish (CI preferred via trusted publisher)**:
82
- - Push a tag `vX.Y.Z` and let `.github/workflows/publish.yml` build/test/publish to npmjs with `--provenance`.
83
- - Local/manual (maintainers only, if needed):
84
-
85
- ```bash
86
- npm run build
87
- npm publish --access public
88
- ```
89
-
90
- ### Verifying the Publication
91
-
92
- ```bash
93
- npm view @customer-support-success/pylon-mcp-server version
94
- ```
95
-
96
- ## Troubleshooting
97
-
98
- ### Authentication Issues
99
-
100
- If npm publish fails locally, ensure you use the trusted publisher workflow or a granular access token with publish rights and 2FA bypass. For installs, no auth is required (public package).
101
-
102
- ## Files Created/Modified
103
-
104
- None (documentation only).
105
-
106
- ## Notes
107
-
108
- - Package is public on npm; no auth required for consumers.
109
- - Publishing is handled by GitHub Actions via npm Trusted Publishing (OIDC). Manual publishes should be rare.
@@ -1,270 +0,0 @@
1
- # Security & Compliance Audit Report
2
-
3
- ## Pylon MCP Server
4
-
5
- **Date:** December 4, 2025
6
- **Auditor:** Automated Security Analysis
7
- **Scope:** Pre-publication security, PII, and SOC-2 compliance review
8
- **Status:** ✅ **PASSED - SAFE FOR PUBLIC RELEASE**
9
-
10
- ---
11
-
12
- ## Executive Summary
13
-
14
- The Pylon MCP Server codebase has been thoroughly analyzed for security vulnerabilities, personally identifiable information (PII), and SOC-2 compliance concerns. **The repository is safe to make public** with no critical issues found.
15
-
16
- ### Key Findings:
17
-
18
- - ✅ **No hardcoded secrets or API keys**
19
- - ✅ **No PII in codebase or documentation**
20
- - ✅ **Zero npm dependency vulnerabilities**
21
- - ✅ **Proper secret management via environment variables**
22
- - ✅ **Comprehensive .gitignore protection**
23
- - ⚠️ **Minor:** .npmrc configuration warning (non-blocking)
24
-
25
- ---
26
-
27
- ## Detailed Analysis
28
-
29
- ### 1. Secrets & Credentials Scan ✅ PASS
30
-
31
- **Scope:** All source files, configuration files, and documentation
32
-
33
- **Findings:**
34
-
35
- - ✅ No hardcoded API keys, tokens, or passwords found
36
- - ✅ All sensitive values use environment variables (`PYLON_API_TOKEN`)
37
- - ✅ `.env.example` contains only placeholder values
38
- - ✅ `.npmrc` uses environment variable substitution (`${ARTIFACT_REGISTRY_TOKEN}`) for local/manual publishing; CI uses short-lived access tokens from `GCP_CREDENTIALS`
39
- - ✅ No secrets in git history
40
-
41
- **Files Reviewed:**
42
-
43
- - `src/index.ts` - Uses `process.env.PYLON_API_TOKEN`
44
- - `src/pylon-client.ts` - Accepts token via constructor parameter
45
- - `.env.example` - Contains only example placeholder
46
- - `.npmrc` - Uses `${ARTIFACT_REGISTRY_TOKEN}` variable
47
- - All configuration files
48
-
49
- **Recommendation:** ✅ No action required
50
-
51
- ---
52
-
53
- ### 2. PII (Personally Identifiable Information) Scan ✅ PASS
54
-
55
- **Scope:** Documentation, comments, example data, and code
56
-
57
- **Findings:**
58
-
59
- - ✅ No real email addresses (only examples: `customer@example.com`, `your-email@example.com`)
60
- - ✅ No phone numbers
61
- - ✅ No physical addresses
62
- - ✅ No names of real individuals
63
- - ✅ All examples use generic placeholders
64
-
65
- **Files Reviewed:**
66
-
67
- - `README.md` - Only example emails found
68
- - `CLAUDE.md` - No PII
69
- - `GCP_SETUP.md` - Only placeholder emails
70
- - `src/` directory - No PII in code or comments
71
-
72
- **Recommendation:** ✅ No action required
73
-
74
- ---
75
-
76
- ### 3. Dependency Vulnerability Scan ✅ PASS
77
-
78
- **Initial State:**
79
-
80
- - 9 vulnerabilities found (1 moderate, 4 high, 3 critical)
81
- - Issues in: `@modelcontextprotocol/sdk`, `axios`, `body-parser`, `form-data`, `js-yaml`, `uglify-js`, `build`
82
-
83
- **Actions Taken:**
84
-
85
- - Ran `npm audit fix` - Updated vulnerable packages
86
- - Removed accidental `build` dependency (source of most vulnerabilities)
87
-
88
- **Final State:**
89
-
90
- - ✅ **0 vulnerabilities**
91
- - All dependencies updated to secure versions
92
- - 109 packages audited
93
-
94
- **Current Dependencies:**
95
-
96
- ```json
97
- {
98
- "@modelcontextprotocol/sdk": "^1.0.0", // Updated to latest
99
- "axios": "^1.6.0" // Updated to latest
100
- }
101
- ```
102
-
103
- **Recommendation:** ✅ No action required. Continue monitoring with `npm audit` regularly.
104
-
105
- ---
106
-
107
- ### 4. Secret Management & Access Control ✅ PASS
108
-
109
- **Environment Variables:**
110
-
111
- - `PYLON_API_TOKEN` - Required for Pylon API access
112
- - `NPM_TOKEN` - npm token used by CI for publishing to npmjs
113
- - `ARTIFACT_REGISTRY_TOKEN` - Local/manual publishing token (derived from `gcloud auth application-default print-access-token`)
114
-
115
- **Protection Mechanisms:**
116
-
117
- - ✅ `.gitignore` excludes all `.env*` files (except `.env.example`)
118
- - ✅ `.npmignore` excludes sensitive development files
119
- - ✅ No secrets in published npm package
120
- - ✅ Clear documentation on required environment variables
121
-
122
- **Recommendation:** ✅ No action required
123
-
124
- ---
125
-
126
- ### 5. SOC-2 Compliance Considerations ✅ PASS
127
-
128
- **Data Handling:**
129
-
130
- - ✅ No data storage - server acts as API proxy only
131
- - ✅ No logging of sensitive information
132
- - ✅ Authentication tokens passed via environment variables
133
- - ✅ HTTPS-only communication with Pylon API (`https://api.usepylon.com`)
134
-
135
- **Access Control:**
136
-
137
- - ✅ API token required for all operations
138
- - ✅ No default credentials
139
- - ✅ Clear documentation on authentication requirements
140
-
141
- **Audit Trail:**
142
-
143
- - ✅ All API calls go through centralized `PylonClient` class
144
- - ✅ Error handling doesn't expose sensitive data
145
- - ✅ No client-side data caching
146
-
147
- **Recommendation:** ✅ Compliant for public release
148
-
149
- ---
150
-
151
- ### 6. Code Quality & Security Best Practices ✅ PASS
152
-
153
- **TypeScript Usage:**
154
-
155
- - ✅ Strict type checking enabled
156
- - ✅ Proper interface definitions
157
- - ✅ No use of `any` type in critical paths
158
-
159
- **Error Handling:**
160
-
161
- - ✅ Try-catch blocks around all API calls
162
- - ✅ Errors don't expose internal details
163
- - ✅ Proper error messages for missing configuration
164
-
165
- **Input Validation:**
166
-
167
- - ✅ Required parameters validated before API calls
168
- - ✅ Type safety through TypeScript interfaces
169
- - ✅ MCP SDK handles input schema validation
170
-
171
- **Recommendation:** ✅ No action required
172
-
173
- ---
174
-
175
- ## Minor Issues & Warnings
176
-
177
- ### ⚠️ npm Configuration Warning (Non-blocking)
178
-
179
- - npm may warn about `always-auth` in `.npmrc` in future npm versions; current behavior is unaffected. If npm deprecates it, remove the `always-auth` line.
180
-
181
- ---
182
-
183
- ## Files Safe for Public Release
184
-
185
- ### ✅ Source Code
186
-
187
- - `src/index.ts`
188
- - `src/pylon-client.ts`
189
-
190
- ### ✅ Configuration
191
-
192
- - `package.json`
193
- - `tsconfig.json`
194
- - `.gitignore`
195
- - `.npmignore`
196
- - `.env.example`
197
-
198
- ### ✅ Documentation
199
-
200
- - `README.md`
201
- - `CLAUDE.md`
202
- - `GCP_SETUP.md`
203
- - `LICENSE`
204
-
205
- ### ✅ Build Artifacts
206
-
207
- - `dist/` (generated, excluded from git)
208
-
209
- ### ⚠️ Consider Excluding (Optional)
210
-
211
- - `.npmrc` - Contains GCP-specific registry config (consider making it local-only)
212
- - `publish.sh` - Publishing script (consider making it maintainer-only)
213
- - `.idea/` - IDE settings (already in .gitignore)
214
-
215
- ---
216
-
217
- ## Recommendations for Public Repository
218
-
219
- ### Before Making Public:
220
-
221
- 1. ✅ **Remove GCP-specific files** (optional but recommended):
222
-
223
- ```bash
224
- git rm --cached .npmrc
225
- git rm --cached publish.sh
226
- ```
227
-
228
- 2. ✅ **Add SECURITY.md** for responsible disclosure
229
- 3. ✅ **Add CONTRIBUTING.md** for contribution guidelines
230
- 4. ✅ **Consider adding GitHub Actions** for automated security scanning
231
-
232
- ### After Making Public:
233
-
234
- 1. Enable GitHub security features:
235
- - Dependabot alerts
236
- - Code scanning
237
- - Secret scanning
238
-
239
- 2. Set up automated npm audit in CI/CD
240
-
241
- 3. Add security policy to README
242
-
243
- ---
244
-
245
- ## Conclusion
246
-
247
- ✅ **APPROVED FOR PUBLIC RELEASE**
248
-
249
- The Pylon MCP Server repository contains no sensitive information, PII, or security vulnerabilities. All secrets are properly managed through environment variables, and the codebase follows security best practices.
250
-
251
- **Risk Level:** LOW
252
- **Confidence:** HIGH
253
- **Recommendation:** Safe to make repository public immediately
254
-
255
- ---
256
-
257
- ## Audit Checklist
258
-
259
- - [x] Source code scanned for hardcoded secrets
260
- - [x] Configuration files reviewed
261
- - [x] Documentation checked for PII
262
- - [x] Dependencies scanned for vulnerabilities
263
- - [x] Git history checked for leaked secrets
264
- - [x] Environment variable usage verified
265
- - [x] .gitignore coverage confirmed
266
- - [x] Error handling reviewed
267
- - [x] API communication security verified
268
- - [x] SOC-2 compliance considerations addressed
269
-
270
- **Audit Completed:** December 4, 2025
package/smithery.yaml DELETED
@@ -1,17 +0,0 @@
1
- # Smithery configuration file: https://smithery.ai/docs/config#smitheryyaml
2
-
3
- startCommand:
4
- type: stdio
5
- configSchema:
6
- # JSON Schema defining the configuration options for the MCP.
7
- type: object
8
- required:
9
- - pylonApiToken
10
- properties:
11
- pylonApiToken:
12
- type: string
13
- description: The API key for the Pylon MCP server.
14
- secret: true
15
- required: true
16
- commandFunction: |-
17
- config => ({ command: 'node', args: ['dist/index.js'], env: { PYLON_API_TOKEN: config.pylonApiToken } })