tideways-mcp-server 0.1.0 → 1.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) [2025] [Mouhammed Diop]
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,56 +1,61 @@
1
1
  # Tideways MCP Server
2
2
 
3
- A Model Context Protocol (MCP) server that enables AI assistants to query Tideways performance monitoring data and provide conversational performance insights for PHP applications.
3
+ [![CI/CD Pipeline](https://github.com/abuhamza/mcp-tideways/actions/workflows/ci.yml/badge.svg)](https://github.com/abuhamza/mcp-tideways/actions/workflows/ci.yml)
4
+ [![Release](https://github.com/abuhamza/mcp-tideways/actions/workflows/release.yml/badge.svg)](https://github.com/abuhamza/mcp-tideways/actions/workflows/release.yml)
5
+ [![Security Pipeline](https://github.com/abuhamza/mcp-tideways/actions/workflows/security.yml/badge.svg)](https://github.com/abuhamza/mcp-tideways/actions/workflows/security.yml)
6
+ [![CodeQL](https://github.com/abuhamza/mcp-tideways/actions/workflows/security.yml/badge.svg?event=push)](https://github.com/abuhamza/mcp-tideways/security/code-scanning)
7
+ [![codecov](https://codecov.io/gh/abuhamza/mcp-tideways/branch/main/graph/badge.svg)](https://codecov.io/gh/abuhamza/mcp-tideways)
8
+ [![npm version](https://img.shields.io/npm/v/tideways-mcp-server.svg)](https://www.npmjs.com/package/tideways-mcp-server)
9
+ [![npm downloads](https://img.shields.io/npm/dt/tideways-mcp-server.svg)](https://www.npmjs.com/package/tideways-mcp-server)
10
+ [![npm audit](https://img.shields.io/badge/npm%20audit-0%20vulnerabilities-brightgreen)](https://www.npmjs.com/package/tideways-mcp-server)
11
+ [![Dependabot](https://img.shields.io/badge/Dependabot-enabled-brightgreen)](https://github.com/abuhamza/mcp-tideways/security/dependabot)
4
12
 
5
- ## 🚀 Features
13
+ A Model Context Protocol (MCP) server that enables AI assistants to query [Tideways](https://tideways.com/) performance monitoring data and provide conversational performance insights for PHP applications.
14
+
15
+ > **About Tideways**: [Tideways](https://tideways.com/) is a powerful application performance monitoring (APM) platform designed specifically for PHP applications. For technical details, see the [REST API documentation](https://support.tideways.com/documentation/reference/index.html).
16
+
17
+ ## Features
6
18
 
7
19
  - **Conversational Performance Insights**: Get performance data in natural language format optimized for AI assistants
8
20
  - **AI Assistant Integration**: Works with Claude Desktop, Cursor, Claude Code, and other MCP-compatible tools
9
- - **Real-time Performance Metrics**: Query current performance data with intelligent caching
21
+ - **Real-time Performance Metrics**: Query current performance data with intelligent rate limiting
10
22
  - **Issue Analysis**: Retrieve and analyze errors, exceptions, and performance issues
11
- - **Rate Limiting & Caching**: Intelligent API management with respect for Tideways rate limits
23
+ - **Intelligent API Management**: Built-in rate limiting with respect for Tideways API constraints
12
24
  - **Robust Error Handling**: Comprehensive error handling with user-friendly messages
13
25
 
14
- ## 📋 Prerequisites
26
+ ## Installation
15
27
 
16
- - Node.js 18.0 or higher
17
- - Valid Tideways API token with appropriate scopes (`metrics`, `issues`, `traces`)
18
- - Access to a Tideways organization and project
28
+ The Tideways MCP Server is available as an npm package for easy integration with AI assistants:
19
29
 
20
- ## 🛠️ Installation
30
+ ```bash
31
+ # Install globally for system-wide access
32
+ npm install -g tideways-mcp-server
21
33
 
22
- ### Option 1: Clone and Install
34
+ # Or use with npx (recommended - always uses latest version)
35
+ npx tideways-mcp-server
23
36
 
24
- ```bash
25
- git clone https://github.com/abuhamza/mcp-tideways.git
26
- cd mcp-tideways
27
- npm install
28
- npm run build
37
+ # Or install as a dependency in your project
38
+ npm install tideways-mcp-server
29
39
  ```
30
40
 
31
- ### Option 2: Install from npm (coming soon)
41
+ **Package Information:**
42
+ - **NPM Package**: [`tideways-mcp-server`](https://www.npmjs.com/package/tideways-mcp-server)
43
+ - **Repository**: [abuhamza/mcp-tideways](https://github.com/abuhamza/mcp-tideways)
44
+ - **Latest Version**: Check [npm version badge](#) above
45
+ - **License**: MIT
32
46
 
33
- ```bash
34
- npm install -g tideways-mcp-server
35
- ```
47
+ ## Prerequisites
36
48
 
37
- ## ⚙️ Configuration
49
+ - Node.js 18.0 or higher
50
+ - [Tideways](https://tideways.com/) account with a valid API token
51
+ - API token with appropriate scopes (`metrics`, `issues`, `traces`) - see [API documentation](https://support.tideways.com/documentation/reference/index.html)
52
+ - Access to a Tideways organization and project
38
53
 
39
- Create a `.env` file in the project root:
54
+ ## AI Integration Setup
40
55
 
41
- ```env
42
- # Required Configuration
43
- TIDEWAYS_TOKEN=your_tideways_api_token
44
- TIDEWAYS_ORG=your_organization_name
45
- TIDEWAYS_PROJECT=your_project_name
56
+ **This is an MCP (Model Context Protocol) server designed exclusively for AI assistants. It cannot be used as a standalone CLI tool.**
46
57
 
47
- # Optional Configuration
48
- TIDEWAYS_BASE_URL=https://app.tideways.io/apps/api
49
- TIDEWAYS_MAX_RETRIES=3
50
- TIDEWAYS_REQUEST_TIMEOUT=30000
51
- SERVER_PORT=3000
52
- LOG_LEVEL=info
53
- ```
58
+ The server integrates with AI assistants through MCP configuration using the npm package `tideways-mcp-server`.
54
59
 
55
60
  ### Environment Variables
56
61
 
@@ -62,34 +67,86 @@ LOG_LEVEL=info
62
67
  | `TIDEWAYS_BASE_URL` | ❌ | `https://app.tideways.io/apps/api` | Tideways API base URL |
63
68
  | `TIDEWAYS_MAX_RETRIES` | ❌ | `3` | Maximum API retry attempts |
64
69
  | `TIDEWAYS_REQUEST_TIMEOUT` | ❌ | `30000` | API request timeout (ms) |
65
- | `SERVER_PORT` | ❌ | `3000` | Server port |
66
70
  | `LOG_LEVEL` | ❌ | `info` | Log level (debug, info, warn, error) |
67
71
 
68
- ## 🚀 Usage
72
+ ## AI Assistant Integration
69
73
 
70
- ### Running the Server
74
+ **This server only works with MCP-compatible AI assistants. It uses stdio transport.**
71
75
 
72
- ```bash
73
- # Development mode
74
- npm run dev
76
+ #### Claude Desktop
75
77
 
76
- # Production mode
77
- npm run start
78
+ Add to your Claude Desktop MCP configuration file:
79
+
80
+ **Location:**
81
+ - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
82
+ - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
83
+ - Linux: `~/.config/claude/claude_desktop_config.json`
84
+
85
+ **Configuration (Recommended - using npx):**
86
+ ```json
87
+ {
88
+ "mcpServers": {
89
+ "tideways": {
90
+ "command": "npx",
91
+ "args": ["tideways-mcp-server"],
92
+ "env": {
93
+ "TIDEWAYS_TOKEN": "your_token",
94
+ "TIDEWAYS_ORG": "your_org",
95
+ "TIDEWAYS_PROJECT": "your_project"
96
+ }
97
+ }
98
+ }
99
+ }
100
+ ```
78
101
 
79
- # Or run built version directly
80
- node dist/index.js
102
+ **Alternative (if installed globally):**
103
+ ```json
104
+ {
105
+ "mcpServers": {
106
+ "tideways": {
107
+ "command": "tideways-mcp-server",
108
+ "env": {
109
+ "TIDEWAYS_TOKEN": "your_token",
110
+ "TIDEWAYS_ORG": "your_org",
111
+ "TIDEWAYS_PROJECT": "your_project"
112
+ }
113
+ }
114
+ }
115
+ }
81
116
  ```
82
117
 
83
- ### Claude Desktop Integration
118
+ #### Cursor IDE
84
119
 
85
- Add to your Claude Desktop MCP configuration (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
120
+ Cursor supports MCP through its settings. Add the server configuration in Cursor's MCP settings:
86
121
 
122
+ 1. Open Cursor Settings
123
+ 2. Tools & Integration
124
+ 3. Add a new server with:
87
125
  ```json
88
126
  {
89
127
  "mcpServers": {
90
128
  "tideways": {
91
- "command": "node",
92
- "args": ["/path/to/tideways-mcp-server/dist/index.js"],
129
+ "command": "tideways-mcp-server",
130
+ "env": {
131
+ "TIDEWAYS_TOKEN": "your_token",
132
+ "TIDEWAYS_ORG": "your_org",
133
+ "TIDEWAYS_PROJECT": "your_project"
134
+ }
135
+ }
136
+ }
137
+ }
138
+ ```
139
+
140
+ #### VS Code with MCP Extension
141
+
142
+ If using VS Code with an MCP-compatible extension:
143
+
144
+ ```json
145
+ {
146
+ "mcp.servers": {
147
+ "tideways": {
148
+ "command": "npx",
149
+ "args": ["tideways-mcp-server"],
93
150
  "env": {
94
151
  "TIDEWAYS_TOKEN": "your_token",
95
152
  "TIDEWAYS_ORG": "your_org",
@@ -128,7 +185,7 @@ Once configured, you can ask your AI assistant questions like:
128
185
  - "Suggest code refactoring based on performance bottlenecks"
129
186
  - "Analyze memory usage patterns and recommend optimizations"
130
187
 
131
- ## 🛠️ Available MCP Tools
188
+ ## Available MCP Tools
132
189
 
133
190
  All tools return structured JSON data for optimal AI assistant integration. The MCP server follows a "raw JSON approach" where tools return complete API responses without formatting, allowing AI assistants to analyze and present data flexibly.
134
191
 
@@ -142,12 +199,17 @@ Retrieve aggregate performance metrics and system-wide statistics.
142
199
  - `env` (optional): Filter by specific environment
143
200
  - `s` (optional): Filter by specific service name
144
201
 
145
- **Example Usage:**
202
+ **Conversational Examples:**
146
203
  ```
147
- Claude, get my performance metrics for the last 6 hours
148
- Claude, show me metrics for the API service in production
204
+ "What's the current performance of my application?"
205
+ "Show me performance metrics for the last 6 hours"
206
+ "Get metrics for the API service in production"
207
+ "How is my web service performing in the staging environment?"
208
+ "Compare today's metrics with the last 24 hours"
149
209
  ```
150
210
 
211
+ **Returns:** Complete performance data including response times, throughput, error rates, memory usage, and database performance.
212
+
151
213
  ### `get_performance_summary`
152
214
 
153
215
  Retrieve time-series performance summary data in 15-minute intervals for trend analysis.
@@ -155,12 +217,17 @@ Retrieve time-series performance summary data in 15-minute intervals for trend a
155
217
  **Parameters:**
156
218
  - `s` (optional): Service name to filter by (e.g., "web", "api", "worker"). Default: "web"
157
219
 
158
- **Example Usage:**
220
+ **Conversational Examples:**
159
221
  ```
160
- Claude, show me the performance summary trends
161
- Claude, get performance summary for the API service
222
+ "Show me performance trends over the last few hours"
223
+ "Get the performance summary for my API service"
224
+ "How has my web service been performing recently?"
225
+ "Display trends for the worker service"
226
+ "Show me response time patterns for today"
162
227
  ```
163
228
 
229
+ **Returns:** Time-series data with 15-minute intervals showing response times, request counts, error rates, and resource utilization trends.
230
+
164
231
  ### `get_issues`
165
232
 
166
233
  Retrieve and analyze recent errors, exceptions, and performance issues.
@@ -170,15 +237,21 @@ Retrieve and analyze recent errors, exceptions, and performance issues.
170
237
  - `status` (optional): "open", "new", "resolved", "not_error", "ignored", "all" (default: "open")
171
238
  - `page` (optional): Page number for pagination (default: 1)
172
239
 
173
- **Example Usage:**
240
+ **Conversational Examples:**
174
241
  ```
175
- Claude, show me all open errors
176
- Claude, get slow SQL queries from today
242
+ "What errors are currently happening in my application?"
243
+ "Show me all open errors from the last 24 hours"
244
+ "Get slow SQL queries that need attention"
245
+ "Are there any new performance issues I should know about?"
246
+ "List all deprecated function calls in my code"
247
+ "Show me resolved errors to understand what was fixed"
177
248
  ```
178
249
 
250
+ **Returns:** Detailed error information including stack traces, occurrence frequency, affected endpoints, and suggested fixes for common issues.
251
+
179
252
  ### `get_traces`
180
253
 
181
- Analyze individual trace samples for detailed bottleneck identification and performance debugging.
254
+ Analyze individual trace samples for detailed bottleneck identification and performance debugging. Includes advanced AI-powered bottleneck detection and optimization recommendations.
182
255
 
183
256
  **Parameters:**
184
257
  - `env` (optional): Environment name (e.g., "production", "staging")
@@ -193,13 +266,26 @@ Analyze individual trace samples for detailed bottleneck identification and perf
193
266
  - `sort_by` (optional): "response_time", "date", "memory" (default: "response_time")
194
267
  - `sort_order` (optional): "ASC", "DESC" (default: "DESC")
195
268
 
196
- **Example Usage:**
269
+ **Conversational Examples:**
197
270
  ```
198
- Claude, analyze traces for /api/products and find slow requests
199
- Claude, get traces with response time over 1000ms from the last hour
200
- Claude, find traces with callgraph data for the checkout endpoint
271
+ "Analyze traces for the /api/products endpoint and find bottlenecks"
272
+ "Show me the slowest requests from the last hour with details"
273
+ "Find traces with callgraph data for the checkout process"
274
+ "What's causing slow response times in my user registration flow?"
275
+ "Detect N+1 query problems in my product listing page"
276
+ "Analyze memory usage patterns in my API endpoints"
277
+ "Find database bottlenecks in the /dashboard endpoint"
278
+ "Show me traces where response time is over 2 seconds"
201
279
  ```
202
280
 
281
+ **Returns:** Detailed trace data with AI-powered analysis including:
282
+ - Individual request traces with timing breakdown
283
+ - Bottleneck detection (database, CPU, memory, API calls)
284
+ - N+1 query detection and suggested fixes
285
+ - Performance optimization recommendations
286
+ - Call graph visualization data
287
+ - Resource utilization analysis
288
+
203
289
  ### `get_historical_data`
204
290
 
205
291
  Retrieve historical performance data for specific dates with configurable granularity.
@@ -208,13 +294,19 @@ Retrieve historical performance data for specific dates with configurable granul
208
294
  - `date` (required): Date in YYYY-MM-DD format
209
295
  - `granularity` (optional): "day", "week", "month" (default: "day")
210
296
 
211
- **Example Usage:**
297
+ **Conversational Examples:**
212
298
  ```
213
- Claude, get historical data for 2025-08-01
214
- Claude, show me weekly performance data for last Monday
299
+ "Get historical performance data for August 1st, 2025"
300
+ "Show me weekly performance trends for last Monday"
301
+ "Compare this month's performance with last month"
302
+ "How did my application perform on 2025-07-15?"
303
+ "Get daily performance data for the past week"
304
+ "Show me monthly trends for the last quarter"
215
305
  ```
216
306
 
217
- ## 🧪 Development
307
+ **Returns:** Historical performance metrics with trend analysis, comparisons to previous periods, and insights into performance patterns over time.
308
+
309
+ ## Development
218
310
 
219
311
  ### Project Structure
220
312
 
@@ -276,7 +368,7 @@ npm run lint:fix
276
368
  npm run format
277
369
  ```
278
370
 
279
- ## 🏗️ Architecture
371
+ ## Architecture
280
372
 
281
373
  ### Core Components
282
374
 
@@ -290,9 +382,9 @@ npm run format
290
382
  ### Data Flow
291
383
 
292
384
  ```
293
- AI Assistant → MCP Protocol → TidewaysMCPServer → TidewaysClient → Tideways API
294
- ↓
295
- Raw JSON Response → AI Assistant
385
+ AI Assistant ←→ MCP Protocol (stdio) ←→ TidewaysMCPServer → TidewaysClient → Tideways API
386
+ ↓
387
+ Raw JSON Response → AI Assistant
296
388
  ```
297
389
 
298
390
  ### Response Format Philosophy
@@ -342,9 +434,10 @@ The server provides structured JSON logs for monitoring:
342
434
  ```
343
435
  Error: Authentication failed. Please check your API token.
344
436
  ```
345
- - Verify `TIDEWAYS_TOKEN` is correct and has required scopes
437
+ - Verify `TIDEWAYS_TOKEN` is correct and has required scopes (`metrics`, `issues`, `traces`)
346
438
  - Check token hasn't expired
347
439
  - Ensure organization and project names are correct
440
+ - Verify environment variables are properly loaded
348
441
 
349
442
  **Rate Limit Exceeded**
350
443
  ```
@@ -352,48 +445,88 @@ Error: Rate limit exceeded. Please try again later.
352
445
  ```
353
446
  - Wait for rate limit reset (shown in error message)
354
447
  - Reduce query frequency
355
- - Enable caching to minimize API calls
448
+ - Built-in rate limiting respects Tideways API constraints (900 requests/hour)
356
449
 
357
450
  **Connection Issues**
358
451
  ```
359
452
  Error: Network error: Unable to connect to Tideways API.
360
453
  ```
361
454
  - Check internet connection
362
- - Verify Tideways API is accessible
363
- - Check if corporate firewall blocks API access
455
+ - Verify Tideways API is accessible from your network
456
+ - Check if corporate firewall blocks API access to `app.tideways.io`
457
+ - Test with curl: `curl -H "Authorization: Bearer YOUR_TOKEN" https://app.tideways.io/apps/api/`
458
+
459
+ **MCP Integration Issues**
460
+ ```
461
+ Error: MCP server not responding or connection failed
462
+ ```
463
+ - Restart your AI assistant (Claude Desktop, Cursor, etc.)
464
+ - Verify MCP configuration file syntax is correct
465
+ - Check that the server command path is correct
466
+ - Ensure environment variables are properly set in MCP config
467
+ - Try running the server manually first: `npx tideways-mcp-server`
468
+
469
+ **Package Installation Issues**
470
+ ```
471
+ Error: Command 'tideways-mcp-server' not found
472
+ ```
473
+ - Install the package: `npm install -g tideways-mcp-server`
474
+ - Or use npx directly: `npx tideways-mcp-server`
475
+ - Clear npm cache: `npm cache clean --force`
364
476
 
365
477
  ### Debug Mode
366
478
 
367
479
  Enable debug logging for detailed troubleshooting:
368
480
 
369
481
  ```bash
370
- LOG_LEVEL=debug npm run dev
371
- ```
482
+ # When running directly
483
+ LOG_LEVEL=debug npx tideways-mcp-server
372
484
 
373
- ## 🚧 Roadmap
485
+ # In MCP configuration, add to env:
486
+ {
487
+ "env": {
488
+ "LOG_LEVEL": "debug",
489
+ "TIDEWAYS_TOKEN": "your_token",
490
+ ...
491
+ }
492
+ }
493
+ ```
374
494
 
375
- ### Phase 2 (Planned)
376
- - **MCP Prompts**: Pre-defined analysis templates and guided workflows for systematic performance investigation
377
- - **Streamable Responses**: Real-time streaming of large datasets for better user experience
378
- - **Advanced Trace Analysis**: Enhanced bottleneck detection with AI-powered recommendations
379
- - **Multi-project Support**: Manage performance across multiple applications
380
- - **Integration with Other APM Providers**: Support for New Relic, DataDog, Elastic APM
495
+ ### Getting Help
381
496
 
382
- ### Phase 3 (Future)
383
- - **Real-time Performance Monitoring**: Live performance alerts and recommendations
384
- - **Custom Dashboard Generation**: AI-generated performance dashboards
385
- - **Performance Regression Detection**: Automatic detection of performance degradations in deployments
386
- - **Load Testing Integration**: Performance analysis under different load scenarios
387
- - **Security Performance Analysis**: Identification of security-related performance bottlenecks
497
+ 1. **Check the logs**: Debug mode provides detailed information about requests and responses
498
+ 2. **Verify configuration**: Double-check all environment variables and MCP settings
499
+ 3. **Test API access**: Use curl to verify your Tideways API credentials work
500
+ 4. **Report issues**: [GitHub Issues](https://github.com/abuhamza/mcp-tideways/issues) with debug logs and configuration details
388
501
 
389
502
  ## 🔒 Security
390
503
 
391
- This MCP server implements several security measures to protect your Tideways API credentials:
504
+ This MCP server implements comprehensive security measures to protect your Tideways API credentials and ensure secure operation:
505
+
506
+ ### Security Pipeline
507
+ - **Automated Security Scanning**: CodeQL static analysis for vulnerability detection
508
+ - **Dependency Monitoring**: Snyk and npm audit for dependency vulnerabilities
509
+ - **Secrets Scanning**: TruffleHog and GitLeaks for credential exposure prevention
510
+ - **Supply Chain Security**: SLSA verification and package integrity checks
511
+ - **Continuous Monitoring**: Daily automated security scans
392
512
 
393
513
  ### Token Security
394
514
  - **Validation**: API tokens are validated to ensure they are set (any format accepted)
395
515
  - **Logging Protection**: Authorization headers are automatically redacted in debug logs as `Bearer [REDACTED]`
396
516
  - **Secure Storage**: Tokens should be stored in environment variables, never in code
517
+ - **Input Sanitization**: All user inputs are validated and sanitized
518
+
519
+ ### CI/CD Security
520
+ - **Hardened GitHub Actions**: Minimal permissions for each workflow job
521
+ - **Secrets Management**: Secure handling of environment variables and API tokens
522
+ - **Supply Chain Protection**: Dependabot for automated security updates
523
+ - **Security Gates**: All security checks must pass before deployment
524
+
525
+ ### Runtime Security
526
+ - **Rate Limiting**: Built-in protection against API abuse
527
+ - **Error Handling**: No sensitive data exposed in error messages
528
+ - **Network Security**: HTTPS enforcement for all API communications
529
+ - **Memory Safety**: No credential persistence in memory logs
397
530
 
398
531
  ### Best Practices
399
532
  - Store your API token securely in environment variables or `.env` files
@@ -401,47 +534,45 @@ This MCP server implements several security measures to protect your Tideways AP
401
534
  - Use unique, strong tokens with minimal required permissions
402
535
  - Regularly rotate your API tokens
403
536
  - Monitor access logs for suspicious activity
537
+ - Keep dependencies updated with automated security patches
538
+
539
+ ### Security Monitoring
540
+ - **Zero Known Vulnerabilities**: Continuous npm audit reporting
541
+ - **Active Dependency Updates**: Weekly Dependabot security patches
542
+ - **Code Quality Gates**: Security scans integrated in CI/CD pipeline
543
+ - **Vulnerability Alerts**: Immediate notifications for security issues
404
544
 
405
545
  ### Reporting Security Issues
406
- If you discover a security vulnerability, please report it responsibly through GitHub's security advisory feature.
546
+ If you discover a security vulnerability, please report it responsibly through GitHub's security advisory feature or contact the maintainers directly.
407
547
 
408
- ## 🤝 Contributing
548
+ ## Contributing
409
549
 
410
- We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
550
+ We welcome contributions!
411
551
 
412
552
  ### Development Setup
413
553
 
414
554
  1. Fork the repository
415
- 2. Create a feature branch: `git checkout -b feature/your-feature`
555
+ 2. Create a feature branch: `git checkout -b your-feature`
416
556
  3. Make changes and add tests
417
557
  4. Run tests: `npm test`
418
558
  5. Submit a pull request
419
559
 
420
- ## 📄 License
560
+ ## License
421
561
 
422
562
  This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
423
563
 
424
- ## 🆘 Support
564
+ ## Support
425
565
 
426
566
  - GitHub Issues: [Report bugs or request features](https://github.com/abuhamza/mcp-tideways/issues)
427
- - Documentation: [Project Wiki](https://github.com/abuhamza/mcp-tideways/wiki)
428
567
 
429
- ## 📈 Performance
430
568
 
431
- - Average response time: <2 seconds for cached queries
432
- - Memory usage: <100MB with default cache settings
433
- - Supports concurrent AI assistant connections
434
- - Efficient rate limiting prevents API quota exhaustion
569
+ ## Contributing
435
570
 
436
- ## 🏷️ Version History
571
+ Contributions are welcome! Please:
437
572
 
438
- - **v0.1.0** - Initial release with core MCP functionality
439
- - Foundation setup with performance metrics and issues analysis
440
- - Comprehensive error handling and caching
573
+ 1. Fork the repository
574
+ 2. Create a feature branch
575
+ 3. Make your changes
576
+ 4. Submit a pull request
441
577
 
442
578
  ---
443
-
444
- Add example for :
445
- DANGEROUSLY_OMIT_AUTH=true npx @modelcontextprotocol/inspector -e TIDEWAYS_TOKEN= -e TIDEWAYS_ORG=check24_hotel -e TIDEWAYS_PROJECT=api -e LOG_LEVEL=debug node /home/mouhammed/Work/tideways-mcp/dist/index.js
446
-
447
- Built with ❤️ for the PHP development community
package/bin/cli.js CHANGED
@@ -4,7 +4,6 @@ import { readFileSync } from 'fs';
4
4
  import { fileURLToPath } from 'url';
5
5
  import { dirname, join } from 'path';
6
6
 
7
- // Import compiled modules
8
7
  import { TidewaysMCPServer } from '../dist/server.js';
9
8
 
10
9
  const __dirname = dirname(fileURLToPath(import.meta.url));
@@ -24,9 +23,6 @@ Usage:
24
23
  Options:
25
24
  --help, -h Show this help message
26
25
  --version, -v Show version information
27
- --stdio Use stdio transport (default for MCP)
28
- --http Use HTTP transport (experimental)
29
- --port <port> HTTP port (default: 3000, requires --http)
30
26
 
31
27
  Environment Variables (required):
32
28
  TIDEWAYS_TOKEN Your Tideways API token
@@ -34,12 +30,9 @@ Environment Variables (required):
34
30
  TIDEWAYS_PROJECT Your Tideways project name
35
31
 
36
32
  Examples:
37
- # Start MCP server with stdio transport (default)
33
+ # Start MCP server
38
34
  npx ${packageJson.name}
39
35
 
40
- # Start with HTTP transport on custom port
41
- npx ${packageJson.name} --http --port 3001
42
-
43
36
  # Show version
44
37
  npx ${packageJson.name} --version
45
38
 
@@ -54,10 +47,6 @@ function showVersion() {
54
47
  async function main() {
55
48
  const args = process.argv.slice(2);
56
49
 
57
- // Parse command line arguments
58
- let useHttp = false;
59
- let port = 3000;
60
-
61
50
  for (let i = 0; i < args.length; i++) {
62
51
  const arg = args[i];
63
52
 
@@ -74,25 +63,6 @@ async function main() {
74
63
  process.exit(0);
75
64
  break;
76
65
 
77
- case '--stdio':
78
- useHttp = false;
79
- break;
80
-
81
- case '--http':
82
- useHttp = true;
83
- break;
84
-
85
- case '--port':
86
- if (i + 1 >= args.length) {
87
- console.error('Error: --port requires a value');
88
- process.exit(1);
89
- }
90
- port = parseInt(args[++i], 10);
91
- if (isNaN(port) || port < 1 || port > 65535) {
92
- console.error('Error: Invalid port number');
93
- process.exit(1);
94
- }
95
- break;
96
66
 
97
67
  default:
98
68
  console.error(`Error: Unknown option '${arg}'`);
@@ -101,7 +71,6 @@ async function main() {
101
71
  }
102
72
  }
103
73
 
104
- // Validate required environment variables
105
74
  const requiredEnvVars = ['TIDEWAYS_TOKEN', 'TIDEWAYS_ORG', 'TIDEWAYS_PROJECT'];
106
75
  const missingVars = requiredEnvVars.filter(varName => !process.env[varName]);
107
76
 
@@ -116,30 +85,18 @@ async function main() {
116
85
  }
117
86
 
118
87
  try {
119
- // Create and start the MCP server
120
88
  const server = new TidewaysMCPServer();
121
89
 
122
- if (useHttp) {
123
- console.log(`Starting Tideways MCP Server on HTTP port ${port}...`);
124
- console.log('Note: HTTP transport is experimental');
125
- // HTTP transport would be implemented here when available
126
- console.error('Error: HTTP transport is not yet implemented');
127
- console.error('Please use stdio transport (default) for now');
128
- process.exit(1);
129
- } else {
130
- console.log('Starting Tideways MCP Server with stdio transport...');
131
- console.log('Server is ready to receive MCP requests');
132
-
133
- // Start the server with stdio transport
134
- await server.start();
135
- }
90
+ console.log('Starting Tideways MCP Server...');
91
+ console.log('Server is ready to receive MCP requests');
92
+
93
+ await server.start();
136
94
  } catch (error) {
137
95
  console.error('Error starting server:', error.message);
138
96
  process.exit(1);
139
97
  }
140
98
  }
141
99
 
142
- // Handle graceful shutdown
143
100
  process.on('SIGINT', () => {
144
101
  console.log('\nShutting down Tideways MCP Server...');
145
102
  process.exit(0);
@@ -6,15 +6,9 @@ export declare class TidewaysAPIError extends Error implements TidewaysError {
6
6
  constructor(message: string, category: ErrorCategory, statusCode?: number, retryAfter?: number);
7
7
  }
8
8
  export declare class ErrorHandler {
9
- /**
10
- * Handle API errors and convert them to user-friendly messages
11
- */
12
9
  static handleApiError(error: any): TidewaysAPIError;
13
10
  static handleValidationError(message: string): TidewaysAPIError;
14
11
  static formatErrorForUser(error: TidewaysAPIError): string;
15
- /**
16
- * Handle partial failures gracefully
17
- */
18
12
  static handlePartialFailure(errors: TidewaysAPIError[], partialData?: any): string;
19
13
  static isRetryable(error: TidewaysAPIError): boolean;
20
14
  static getRetryDelay(error: TidewaysAPIError, attempt: number): number;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEjE,qBAAa,gBAAiB,SAAQ,KAAM,YAAW,aAAa;IAC3D,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;gBAEf,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAS/F;AAED,qBAAa,YAAY;IACvB;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,gBAAgB;IAoEnD,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB;IAK/D,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM;IA4B1D;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,WAAW,CAAC,EAAE,GAAG,GAAG,MAAM;IAUlF,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO;IAQpD,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;CAOvE"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEjE,qBAAa,gBAAiB,SAAQ,KAAM,YAAW,aAAa;IAC3D,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;gBAEf,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAS/F;AAED,qBAAa,YAAY;IACvB,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,gBAAgB;IAoEnD,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB;IAK/D,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM;IA4B1D,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,WAAW,CAAC,EAAE,GAAG,GAAG,MAAM;IAUlF,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO;IAQpD,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;CAOvE"}
@@ -13,9 +13,6 @@ export class TidewaysAPIError extends Error {
13
13
  }
14
14
  }
15
15
  export class ErrorHandler {
16
- /**
17
- * Handle API errors and convert them to user-friendly messages
18
- */
19
16
  static handleApiError(error) {
20
17
  logger.error('API error occurred', error, {
21
18
  url: error.config?.url,
@@ -72,9 +69,6 @@ export class ErrorHandler {
72
69
  return `${baseMessage}\n\nIf this error persists, please check the server logs for more details.`;
73
70
  }
74
71
  }
75
- /**
76
- * Handle partial failures gracefully
77
- */
78
72
  static handlePartialFailure(errors, partialData) {
79
73
  const errorSummary = errors.map(err => `• ${err.category}: ${err.message}`).join('\n');
80
74
  if (partialData && Object.keys(partialData).length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,4 @@ export interface TidewaysConfig {
6
6
  maxRetries?: number;
7
7
  requestTimeout?: number;
8
8
  }
9
- export interface TidewaysPerformanceApiParams {
10
- ts: string;
11
- env?: string;
12
- m: number;
13
- s?: string;
14
- }
15
9
  //# sourceMappingURL=tideways-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tideways-config.d.ts","sourceRoot":"","sources":["../../src/types/tideways-config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ"}
1
+ {"version":3,"file":"tideways-config.d.ts","sourceRoot":"","sources":["../../src/types/tideways-config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tideways-mcp-server",
3
- "version": "0.1.0",
3
+ "version": "1.1.0",
4
4
  "description": "MCP server for Tideways performance monitoring integration with AI assistants",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -34,7 +34,9 @@
34
34
  "typecheck": "tsc --noEmit",
35
35
  "clean": "rimraf dist",
36
36
  "prepare": "npm run build",
37
- "prepublishOnly": "npm run typecheck && npm run lint && npm run test && npm run build"
37
+ "prepublishOnly": "npm run typecheck && npm run lint && npm run test && npm run build",
38
+ "semantic-release": "semantic-release",
39
+ "semantic-release:dry-run": "semantic-release --dry-run"
38
40
  },
39
41
  "keywords": [
40
42
  "mcp",
@@ -68,6 +70,13 @@
68
70
  "jest": "^29.5.0",
69
71
  "prettier": "^3.0.0",
70
72
  "rimraf": "^5.0.0",
73
+ "semantic-release": "^23.0.0",
74
+ "@semantic-release/changelog": "^6.0.3",
75
+ "@semantic-release/git": "^10.0.1",
76
+ "@semantic-release/github": "^9.2.0",
77
+ "@semantic-release/npm": "^11.0.2",
78
+ "@commitlint/cli": "^18.4.0",
79
+ "@commitlint/config-conventional": "^18.4.0",
71
80
  "ts-jest": "^29.1.0",
72
81
  "tsx": "^4.0.0",
73
82
  "typescript": "^5.2.0"