tideways-mcp-server 0.1.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +233 -118
- package/bin/cli.js +5 -48
- package/dist/lib/errors.d.ts +0 -6
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +0 -6
- package/dist/lib/errors.js.map +1 -1
- package/dist/types/tideways-config.d.ts +0 -6
- package/dist/types/tideways-config.d.ts.map +1 -1
- package/package.json +14 -5
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,45 @@
|
|
|
1
1
|
# Tideways MCP Server
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://github.com/abuhamza/tideways-mcp-server/actions/workflows/ci.yml)
|
|
4
|
+
[](https://github.com/abuhamza/tideways-mcp-server/actions/workflows/release.yml)
|
|
5
|
+
[](https://github.com/abuhamza/tideways-mcp-server/actions/workflows/security.yml)
|
|
6
|
+
[](https://github.com/abuhamza/tideways-mcp-server/security/code-scanning)
|
|
7
|
+
[](https://codecov.io/gh/abuhamza/tideways-mcp-server)
|
|
8
|
+
[](https://www.npmjs.com/package/tideways-mcp-server)
|
|
9
|
+
[](https://www.npmjs.com/package/tideways-mcp-server)
|
|
10
|
+
[](https://www.npmjs.com/package/tideways-mcp-server)
|
|
11
|
+
[](https://github.com/abuhamza/tideways-mcp-server/security/dependabot)
|
|
4
12
|
|
|
5
|
-
|
|
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
|
|
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
|
-
- **
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
|
|
20
|
-
## 🛠️ Installation
|
|
26
|
+
**Package Information:**
|
|
27
|
+
- **NPM Package**: [`tideways-mcp-server`](https://www.npmjs.com/package/tideways-mcp-server)
|
|
28
|
+
- **Repository**: [abuhamza/tideways-mcp-server](https://github.com/abuhamza/tideways-mcp-server)
|
|
29
|
+
- **Latest Version**: Check [npm version badge](#) above
|
|
30
|
+
- **License**: MIT
|
|
21
31
|
|
|
22
|
-
|
|
32
|
+
## Prerequisites
|
|
23
33
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
npm install
|
|
28
|
-
npm run build
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### Option 2: Install from npm (coming soon)
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
npm install -g tideways-mcp-server
|
|
35
|
-
```
|
|
34
|
+
- [Tideways](https://tideways.com/) account with a valid API token
|
|
35
|
+
- API token with appropriate scopes (`metrics`, `issues`, `traces`) - see [API documentation](https://support.tideways.com/documentation/reference/index.html)
|
|
36
|
+
- Access to a Tideways organization and project
|
|
36
37
|
|
|
37
|
-
##
|
|
38
|
+
## AI Integration Setup
|
|
38
39
|
|
|
39
|
-
|
|
40
|
+
**This is an MCP (Model Context Protocol) server designed exclusively for AI assistants. It cannot be used as a standalone CLI tool.**
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
# Required Configuration
|
|
43
|
-
TIDEWAYS_TOKEN=your_tideways_api_token
|
|
44
|
-
TIDEWAYS_ORG=your_organization_name
|
|
45
|
-
TIDEWAYS_PROJECT=your_project_name
|
|
46
|
-
|
|
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
|
-
```
|
|
42
|
+
The server integrates with AI assistants through MCP configuration using the npm package `tideways-mcp-server`.
|
|
54
43
|
|
|
55
44
|
### Environment Variables
|
|
56
45
|
|
|
@@ -62,34 +51,86 @@ LOG_LEVEL=info
|
|
|
62
51
|
| `TIDEWAYS_BASE_URL` | ❌ | `https://app.tideways.io/apps/api` | Tideways API base URL |
|
|
63
52
|
| `TIDEWAYS_MAX_RETRIES` | ❌ | `3` | Maximum API retry attempts |
|
|
64
53
|
| `TIDEWAYS_REQUEST_TIMEOUT` | ❌ | `30000` | API request timeout (ms) |
|
|
65
|
-
| `SERVER_PORT` | ❌ | `3000` | Server port |
|
|
66
54
|
| `LOG_LEVEL` | ❌ | `info` | Log level (debug, info, warn, error) |
|
|
67
55
|
|
|
68
|
-
##
|
|
56
|
+
## AI Assistant Integration
|
|
69
57
|
|
|
70
|
-
|
|
58
|
+
**This server only works with MCP-compatible AI assistants. It uses stdio transport.**
|
|
71
59
|
|
|
72
|
-
|
|
73
|
-
# Development mode
|
|
74
|
-
npm run dev
|
|
60
|
+
#### Claude Desktop
|
|
75
61
|
|
|
76
|
-
|
|
77
|
-
npm run start
|
|
62
|
+
Add to your Claude Desktop MCP configuration file:
|
|
78
63
|
|
|
79
|
-
|
|
80
|
-
|
|
64
|
+
**Location:**
|
|
65
|
+
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
66
|
+
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
67
|
+
- Linux: `~/.config/claude/claude_desktop_config.json`
|
|
68
|
+
|
|
69
|
+
**Configuration (Recommended - using npx):**
|
|
70
|
+
```json
|
|
71
|
+
{
|
|
72
|
+
"mcpServers": {
|
|
73
|
+
"tideways": {
|
|
74
|
+
"command": "npx",
|
|
75
|
+
"args": ["tideways-mcp-server"],
|
|
76
|
+
"env": {
|
|
77
|
+
"TIDEWAYS_TOKEN": "your_token",
|
|
78
|
+
"TIDEWAYS_ORG": "your_org",
|
|
79
|
+
"TIDEWAYS_PROJECT": "your_project"
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
81
84
|
```
|
|
82
85
|
|
|
83
|
-
|
|
86
|
+
**Alternative (if installed globally):**
|
|
87
|
+
```json
|
|
88
|
+
{
|
|
89
|
+
"mcpServers": {
|
|
90
|
+
"tideways": {
|
|
91
|
+
"command": "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
|
+
```
|
|
101
|
+
|
|
102
|
+
#### Cursor IDE
|
|
84
103
|
|
|
85
|
-
|
|
104
|
+
Cursor supports MCP through its settings. Add the server configuration in Cursor's MCP settings:
|
|
86
105
|
|
|
106
|
+
1. Open Cursor Settings
|
|
107
|
+
2. Tools & Integration
|
|
108
|
+
3. Add a new server with:
|
|
87
109
|
```json
|
|
88
110
|
{
|
|
89
111
|
"mcpServers": {
|
|
90
112
|
"tideways": {
|
|
91
|
-
"command": "
|
|
92
|
-
"
|
|
113
|
+
"command": "tideways-mcp-server",
|
|
114
|
+
"env": {
|
|
115
|
+
"TIDEWAYS_TOKEN": "your_token",
|
|
116
|
+
"TIDEWAYS_ORG": "your_org",
|
|
117
|
+
"TIDEWAYS_PROJECT": "your_project"
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
#### VS Code with MCP Extension
|
|
125
|
+
|
|
126
|
+
If using VS Code with an MCP-compatible extension:
|
|
127
|
+
|
|
128
|
+
```json
|
|
129
|
+
{
|
|
130
|
+
"mcp.servers": {
|
|
131
|
+
"tideways": {
|
|
132
|
+
"command": "npx",
|
|
133
|
+
"args": ["tideways-mcp-server"],
|
|
93
134
|
"env": {
|
|
94
135
|
"TIDEWAYS_TOKEN": "your_token",
|
|
95
136
|
"TIDEWAYS_ORG": "your_org",
|
|
@@ -128,7 +169,7 @@ Once configured, you can ask your AI assistant questions like:
|
|
|
128
169
|
- "Suggest code refactoring based on performance bottlenecks"
|
|
129
170
|
- "Analyze memory usage patterns and recommend optimizations"
|
|
130
171
|
|
|
131
|
-
##
|
|
172
|
+
## Available MCP Tools
|
|
132
173
|
|
|
133
174
|
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
175
|
|
|
@@ -142,12 +183,17 @@ Retrieve aggregate performance metrics and system-wide statistics.
|
|
|
142
183
|
- `env` (optional): Filter by specific environment
|
|
143
184
|
- `s` (optional): Filter by specific service name
|
|
144
185
|
|
|
145
|
-
**
|
|
186
|
+
**Conversational Examples:**
|
|
146
187
|
```
|
|
147
|
-
|
|
148
|
-
|
|
188
|
+
"What's the current performance of my application?"
|
|
189
|
+
"Show me performance metrics for the last 6 hours"
|
|
190
|
+
"Get metrics for the API service in production"
|
|
191
|
+
"How is my web service performing in the staging environment?"
|
|
192
|
+
"Compare today's metrics with the last 24 hours"
|
|
149
193
|
```
|
|
150
194
|
|
|
195
|
+
**Returns:** Complete performance data including response times, throughput, error rates, memory usage, and database performance.
|
|
196
|
+
|
|
151
197
|
### `get_performance_summary`
|
|
152
198
|
|
|
153
199
|
Retrieve time-series performance summary data in 15-minute intervals for trend analysis.
|
|
@@ -155,12 +201,17 @@ Retrieve time-series performance summary data in 15-minute intervals for trend a
|
|
|
155
201
|
**Parameters:**
|
|
156
202
|
- `s` (optional): Service name to filter by (e.g., "web", "api", "worker"). Default: "web"
|
|
157
203
|
|
|
158
|
-
**
|
|
204
|
+
**Conversational Examples:**
|
|
159
205
|
```
|
|
160
|
-
|
|
161
|
-
|
|
206
|
+
"Show me performance trends over the last few hours"
|
|
207
|
+
"Get the performance summary for my API service"
|
|
208
|
+
"How has my web service been performing recently?"
|
|
209
|
+
"Display trends for the worker service"
|
|
210
|
+
"Show me response time patterns for today"
|
|
162
211
|
```
|
|
163
212
|
|
|
213
|
+
**Returns:** Time-series data with 15-minute intervals showing response times, request counts, error rates, and resource utilization trends.
|
|
214
|
+
|
|
164
215
|
### `get_issues`
|
|
165
216
|
|
|
166
217
|
Retrieve and analyze recent errors, exceptions, and performance issues.
|
|
@@ -170,15 +221,21 @@ Retrieve and analyze recent errors, exceptions, and performance issues.
|
|
|
170
221
|
- `status` (optional): "open", "new", "resolved", "not_error", "ignored", "all" (default: "open")
|
|
171
222
|
- `page` (optional): Page number for pagination (default: 1)
|
|
172
223
|
|
|
173
|
-
**
|
|
224
|
+
**Conversational Examples:**
|
|
174
225
|
```
|
|
175
|
-
|
|
176
|
-
|
|
226
|
+
"What errors are currently happening in my application?"
|
|
227
|
+
"Show me all open errors from the last 24 hours"
|
|
228
|
+
"Get slow SQL queries that need attention"
|
|
229
|
+
"Are there any new performance issues I should know about?"
|
|
230
|
+
"List all deprecated function calls in my code"
|
|
231
|
+
"Show me resolved errors to understand what was fixed"
|
|
177
232
|
```
|
|
178
233
|
|
|
234
|
+
**Returns:** Detailed error information including stack traces, occurrence frequency, affected endpoints, and suggested fixes for common issues.
|
|
235
|
+
|
|
179
236
|
### `get_traces`
|
|
180
237
|
|
|
181
|
-
Analyze individual trace samples for detailed bottleneck identification and performance debugging.
|
|
238
|
+
Analyze individual trace samples for detailed bottleneck identification and performance debugging. Includes advanced AI-powered bottleneck detection and optimization recommendations.
|
|
182
239
|
|
|
183
240
|
**Parameters:**
|
|
184
241
|
- `env` (optional): Environment name (e.g., "production", "staging")
|
|
@@ -193,13 +250,26 @@ Analyze individual trace samples for detailed bottleneck identification and perf
|
|
|
193
250
|
- `sort_by` (optional): "response_time", "date", "memory" (default: "response_time")
|
|
194
251
|
- `sort_order` (optional): "ASC", "DESC" (default: "DESC")
|
|
195
252
|
|
|
196
|
-
**
|
|
253
|
+
**Conversational Examples:**
|
|
197
254
|
```
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
255
|
+
"Analyze traces for the /api/products endpoint and find bottlenecks"
|
|
256
|
+
"Show me the slowest requests from the last hour with details"
|
|
257
|
+
"Find traces with callgraph data for the checkout process"
|
|
258
|
+
"What's causing slow response times in my user registration flow?"
|
|
259
|
+
"Detect N+1 query problems in my product listing page"
|
|
260
|
+
"Analyze memory usage patterns in my API endpoints"
|
|
261
|
+
"Find database bottlenecks in the /dashboard endpoint"
|
|
262
|
+
"Show me traces where response time is over 2 seconds"
|
|
201
263
|
```
|
|
202
264
|
|
|
265
|
+
**Returns:** Detailed trace data with AI-powered analysis including:
|
|
266
|
+
- Individual request traces with timing breakdown
|
|
267
|
+
- Bottleneck detection (database, CPU, memory, API calls)
|
|
268
|
+
- N+1 query detection and suggested fixes
|
|
269
|
+
- Performance optimization recommendations
|
|
270
|
+
- Call graph visualization data
|
|
271
|
+
- Resource utilization analysis
|
|
272
|
+
|
|
203
273
|
### `get_historical_data`
|
|
204
274
|
|
|
205
275
|
Retrieve historical performance data for specific dates with configurable granularity.
|
|
@@ -208,13 +278,19 @@ Retrieve historical performance data for specific dates with configurable granul
|
|
|
208
278
|
- `date` (required): Date in YYYY-MM-DD format
|
|
209
279
|
- `granularity` (optional): "day", "week", "month" (default: "day")
|
|
210
280
|
|
|
211
|
-
**
|
|
281
|
+
**Conversational Examples:**
|
|
212
282
|
```
|
|
213
|
-
|
|
214
|
-
|
|
283
|
+
"Get historical performance data for August 1st, 2025"
|
|
284
|
+
"Show me weekly performance trends for last Monday"
|
|
285
|
+
"Compare this month's performance with last month"
|
|
286
|
+
"How did my application perform on 2025-07-15?"
|
|
287
|
+
"Get daily performance data for the past week"
|
|
288
|
+
"Show me monthly trends for the last quarter"
|
|
215
289
|
```
|
|
216
290
|
|
|
217
|
-
|
|
291
|
+
**Returns:** Historical performance metrics with trend analysis, comparisons to previous periods, and insights into performance patterns over time.
|
|
292
|
+
|
|
293
|
+
## Development
|
|
218
294
|
|
|
219
295
|
### Project Structure
|
|
220
296
|
|
|
@@ -276,7 +352,7 @@ npm run lint:fix
|
|
|
276
352
|
npm run format
|
|
277
353
|
```
|
|
278
354
|
|
|
279
|
-
##
|
|
355
|
+
## Architecture
|
|
280
356
|
|
|
281
357
|
### Core Components
|
|
282
358
|
|
|
@@ -290,9 +366,9 @@ npm run format
|
|
|
290
366
|
### Data Flow
|
|
291
367
|
|
|
292
368
|
```
|
|
293
|
-
AI Assistant
|
|
294
|
-
|
|
295
|
-
|
|
369
|
+
AI Assistant ←→ MCP Protocol (stdio) ←→ TidewaysMCPServer → TidewaysClient → Tideways API
|
|
370
|
+
↓
|
|
371
|
+
Raw JSON Response → AI Assistant
|
|
296
372
|
```
|
|
297
373
|
|
|
298
374
|
### Response Format Philosophy
|
|
@@ -342,9 +418,10 @@ The server provides structured JSON logs for monitoring:
|
|
|
342
418
|
```
|
|
343
419
|
Error: Authentication failed. Please check your API token.
|
|
344
420
|
```
|
|
345
|
-
- Verify `TIDEWAYS_TOKEN` is correct and has required scopes
|
|
421
|
+
- Verify `TIDEWAYS_TOKEN` is correct and has required scopes (`metrics`, `issues`, `traces`)
|
|
346
422
|
- Check token hasn't expired
|
|
347
423
|
- Ensure organization and project names are correct
|
|
424
|
+
- Verify environment variables are properly loaded
|
|
348
425
|
|
|
349
426
|
**Rate Limit Exceeded**
|
|
350
427
|
```
|
|
@@ -352,48 +429,88 @@ Error: Rate limit exceeded. Please try again later.
|
|
|
352
429
|
```
|
|
353
430
|
- Wait for rate limit reset (shown in error message)
|
|
354
431
|
- Reduce query frequency
|
|
355
|
-
-
|
|
432
|
+
- Built-in rate limiting respects Tideways API constraints (900 requests/hour)
|
|
356
433
|
|
|
357
434
|
**Connection Issues**
|
|
358
435
|
```
|
|
359
436
|
Error: Network error: Unable to connect to Tideways API.
|
|
360
437
|
```
|
|
361
438
|
- Check internet connection
|
|
362
|
-
- Verify Tideways API is accessible
|
|
363
|
-
- Check if corporate firewall blocks API access
|
|
439
|
+
- Verify Tideways API is accessible from your network
|
|
440
|
+
- Check if corporate firewall blocks API access to `app.tideways.io`
|
|
441
|
+
- Test with curl: `curl -H "Authorization: Bearer YOUR_TOKEN" https://app.tideways.io/apps/api/`
|
|
442
|
+
|
|
443
|
+
**MCP Integration Issues**
|
|
444
|
+
```
|
|
445
|
+
Error: MCP server not responding or connection failed
|
|
446
|
+
```
|
|
447
|
+
- Restart your AI assistant (Claude Desktop, Cursor, etc.)
|
|
448
|
+
- Verify MCP configuration file syntax is correct
|
|
449
|
+
- Check that the server command path is correct
|
|
450
|
+
- Ensure environment variables are properly set in MCP config
|
|
451
|
+
- Try running the server manually first: `npx tideways-mcp-server`
|
|
452
|
+
|
|
453
|
+
**Package Installation Issues**
|
|
454
|
+
```
|
|
455
|
+
Error: Command 'tideways-mcp-server' not found
|
|
456
|
+
```
|
|
457
|
+
- Install the package: `npm install -g tideways-mcp-server`
|
|
458
|
+
- Or use npx directly: `npx tideways-mcp-server`
|
|
459
|
+
- Clear npm cache: `npm cache clean --force`
|
|
364
460
|
|
|
365
461
|
### Debug Mode
|
|
366
462
|
|
|
367
463
|
Enable debug logging for detailed troubleshooting:
|
|
368
464
|
|
|
369
465
|
```bash
|
|
370
|
-
|
|
371
|
-
|
|
466
|
+
# When running directly
|
|
467
|
+
LOG_LEVEL=debug npx tideways-mcp-server
|
|
372
468
|
|
|
373
|
-
|
|
469
|
+
# In MCP configuration, add to env:
|
|
470
|
+
{
|
|
471
|
+
"env": {
|
|
472
|
+
"LOG_LEVEL": "debug",
|
|
473
|
+
"TIDEWAYS_TOKEN": "your_token",
|
|
474
|
+
...
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
```
|
|
374
478
|
|
|
375
|
-
###
|
|
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
|
|
479
|
+
### Getting Help
|
|
381
480
|
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
- **Load Testing Integration**: Performance analysis under different load scenarios
|
|
387
|
-
- **Security Performance Analysis**: Identification of security-related performance bottlenecks
|
|
481
|
+
1. **Check the logs**: Debug mode provides detailed information about requests and responses
|
|
482
|
+
2. **Verify configuration**: Double-check all environment variables and MCP settings
|
|
483
|
+
3. **Test API access**: Use curl to verify your Tideways API credentials work
|
|
484
|
+
4. **Report issues**: [GitHub Issues](https://github.com/abuhamza/tideways-mcp-server/issues) with debug logs and configuration details
|
|
388
485
|
|
|
389
486
|
## 🔒 Security
|
|
390
487
|
|
|
391
|
-
This MCP server implements
|
|
488
|
+
This MCP server implements comprehensive security measures to protect your Tideways API credentials and ensure secure operation:
|
|
489
|
+
|
|
490
|
+
### Security Pipeline
|
|
491
|
+
- **Automated Security Scanning**: CodeQL static analysis for vulnerability detection
|
|
492
|
+
- **Dependency Monitoring**: Snyk and npm audit for dependency vulnerabilities
|
|
493
|
+
- **Secrets Scanning**: TruffleHog and GitLeaks for credential exposure prevention
|
|
494
|
+
- **Supply Chain Security**: SLSA verification and package integrity checks
|
|
495
|
+
- **Continuous Monitoring**: Daily automated security scans
|
|
392
496
|
|
|
393
497
|
### Token Security
|
|
394
498
|
- **Validation**: API tokens are validated to ensure they are set (any format accepted)
|
|
395
499
|
- **Logging Protection**: Authorization headers are automatically redacted in debug logs as `Bearer [REDACTED]`
|
|
396
500
|
- **Secure Storage**: Tokens should be stored in environment variables, never in code
|
|
501
|
+
- **Input Sanitization**: All user inputs are validated and sanitized
|
|
502
|
+
|
|
503
|
+
### CI/CD Security
|
|
504
|
+
- **Hardened GitHub Actions**: Minimal permissions for each workflow job
|
|
505
|
+
- **Secrets Management**: Secure handling of environment variables and API tokens
|
|
506
|
+
- **Supply Chain Protection**: Dependabot for automated security updates
|
|
507
|
+
- **Security Gates**: All security checks must pass before deployment
|
|
508
|
+
|
|
509
|
+
### Runtime Security
|
|
510
|
+
- **Rate Limiting**: Built-in protection against API abuse
|
|
511
|
+
- **Error Handling**: No sensitive data exposed in error messages
|
|
512
|
+
- **Network Security**: HTTPS enforcement for all API communications
|
|
513
|
+
- **Memory Safety**: No credential persistence in memory logs
|
|
397
514
|
|
|
398
515
|
### Best Practices
|
|
399
516
|
- Store your API token securely in environment variables or `.env` files
|
|
@@ -401,47 +518,45 @@ This MCP server implements several security measures to protect your Tideways AP
|
|
|
401
518
|
- Use unique, strong tokens with minimal required permissions
|
|
402
519
|
- Regularly rotate your API tokens
|
|
403
520
|
- Monitor access logs for suspicious activity
|
|
521
|
+
- Keep dependencies updated with automated security patches
|
|
522
|
+
|
|
523
|
+
### Security Monitoring
|
|
524
|
+
- **Zero Known Vulnerabilities**: Continuous npm audit reporting
|
|
525
|
+
- **Active Dependency Updates**: Weekly Dependabot security patches
|
|
526
|
+
- **Code Quality Gates**: Security scans integrated in CI/CD pipeline
|
|
527
|
+
- **Vulnerability Alerts**: Immediate notifications for security issues
|
|
404
528
|
|
|
405
529
|
### Reporting Security Issues
|
|
406
|
-
If you discover a security vulnerability, please report it responsibly through GitHub's security advisory feature.
|
|
530
|
+
If you discover a security vulnerability, please report it responsibly through GitHub's security advisory feature or contact the maintainers directly.
|
|
407
531
|
|
|
408
|
-
##
|
|
532
|
+
## Contributing
|
|
409
533
|
|
|
410
|
-
We welcome contributions!
|
|
534
|
+
We welcome contributions!
|
|
411
535
|
|
|
412
536
|
### Development Setup
|
|
413
537
|
|
|
414
538
|
1. Fork the repository
|
|
415
|
-
2. Create a feature branch: `git checkout -b
|
|
539
|
+
2. Create a feature branch: `git checkout -b your-feature`
|
|
416
540
|
3. Make changes and add tests
|
|
417
541
|
4. Run tests: `npm test`
|
|
418
542
|
5. Submit a pull request
|
|
419
543
|
|
|
420
|
-
##
|
|
544
|
+
## License
|
|
421
545
|
|
|
422
546
|
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
423
547
|
|
|
424
|
-
##
|
|
548
|
+
## Support
|
|
425
549
|
|
|
426
|
-
- GitHub Issues: [Report bugs or request features](https://github.com/abuhamza/mcp-
|
|
427
|
-
- Documentation: [Project Wiki](https://github.com/abuhamza/mcp-tideways/wiki)
|
|
550
|
+
- GitHub Issues: [Report bugs or request features](https://github.com/abuhamza/tideways-mcp-server/issues)
|
|
428
551
|
|
|
429
|
-
## 📈 Performance
|
|
430
552
|
|
|
431
|
-
|
|
432
|
-
- Memory usage: <100MB with default cache settings
|
|
433
|
-
- Supports concurrent AI assistant connections
|
|
434
|
-
- Efficient rate limiting prevents API quota exhaustion
|
|
553
|
+
## Contributing
|
|
435
554
|
|
|
436
|
-
|
|
555
|
+
Contributions are welcome! Please:
|
|
437
556
|
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
557
|
+
1. Fork the repository
|
|
558
|
+
2. Create a feature branch
|
|
559
|
+
3. Make your changes
|
|
560
|
+
4. Submit a pull request
|
|
441
561
|
|
|
442
562
|
---
|
|
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
|
|
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
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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);
|
package/dist/lib/errors.d.ts
CHANGED
|
@@ -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;
|
package/dist/lib/errors.d.ts.map
CHANGED
|
@@ -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
|
|
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"}
|
package/dist/lib/errors.js
CHANGED
|
@@ -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) {
|
package/dist/lib/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAClC,QAAQ,CAAgB;IACxB,UAAU,CAAU;IACpB,UAAU,CAAU;IAE3B,YAAY,OAAe,EAAE,QAAuB,EAAE,UAAmB,EAAE,UAAmB;QAC5F,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAClD,CAAC;CACF;AAED,MAAM,OAAO,YAAY;IACvB
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
|
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": "
|
|
3
|
+
"version": "1.0.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"
|
|
@@ -77,10 +86,10 @@
|
|
|
77
86
|
},
|
|
78
87
|
"repository": {
|
|
79
88
|
"type": "git",
|
|
80
|
-
"url": "git+https://github.com/abuhamza/mcp-
|
|
89
|
+
"url": "git+https://github.com/abuhamza/tideways-mcp-server.git"
|
|
81
90
|
},
|
|
82
91
|
"bugs": {
|
|
83
|
-
"url": "https://github.com/abuhamza/mcp-
|
|
92
|
+
"url": "https://github.com/abuhamza/tideways-mcp-server/issues"
|
|
84
93
|
},
|
|
85
|
-
"homepage": "https://github.com/abuhamza/mcp-
|
|
94
|
+
"homepage": "https://github.com/abuhamza/tideways-mcp-server#readme"
|
|
86
95
|
}
|