@mithung/vunet-mcp-server 2.0.6 → 2.0.8
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/BUILD_GUIDE.md +293 -0
- package/CHANGELOG.md +48 -0
- package/DATA_MODELS.md +277 -2
- package/README.md +4 -2
- package/SETUP.md +2 -2
- package/USE_CASE_RCA.md +373 -0
- package/index.js +8 -3
- package/package.json +12 -2
package/BUILD_GUIDE.md
ADDED
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
# Build and Publishing Guide
|
|
2
|
+
|
|
3
|
+
Quick reference for building and publishing the VuNet MCP Server package.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 📦 Build Scripts
|
|
8
|
+
|
|
9
|
+
### Validation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Validate JavaScript syntax
|
|
13
|
+
npm run validate
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Checks `index.js` and `cli.js` for syntax errors without executing them.
|
|
17
|
+
|
|
18
|
+
### Build
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Build and validate package
|
|
22
|
+
npm run build
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Runs validation and shows what would be included in the package (dry-run).
|
|
26
|
+
|
|
27
|
+
### Testing
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Run tests
|
|
31
|
+
npm test
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Currently returns success (no tests implemented yet).
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 🚀 Publishing Workflow
|
|
39
|
+
|
|
40
|
+
### 1. Test Publishing (Dry Run)
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npm run publish:dry
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Shows exactly what would be published to npm **without actually publishing**.
|
|
47
|
+
|
|
48
|
+
**Output:**
|
|
49
|
+
- Package contents
|
|
50
|
+
- File sizes
|
|
51
|
+
- Package metadata
|
|
52
|
+
- Total package size
|
|
53
|
+
|
|
54
|
+
### 2. Publish to npm
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
npm run publish:prod
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Publishes the package to npm with public access.
|
|
61
|
+
|
|
62
|
+
**Prerequisites:**
|
|
63
|
+
- Must be logged in to npm: `npm login`
|
|
64
|
+
- Must have access to `@mithung` scope
|
|
65
|
+
- All validation must pass
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 🔢 Version Management
|
|
70
|
+
|
|
71
|
+
### Semantic Versioning
|
|
72
|
+
|
|
73
|
+
The project follows [Semantic Versioning](https://semver.org/):
|
|
74
|
+
- **MAJOR** version: Breaking changes
|
|
75
|
+
- **MINOR** version: New features (backward compatible)
|
|
76
|
+
- **PATCH** version: Bug fixes
|
|
77
|
+
|
|
78
|
+
### Version Bump Commands
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# Patch release (2.0.7 → 2.0.8)
|
|
82
|
+
npm run version:patch
|
|
83
|
+
|
|
84
|
+
# Minor release (2.0.7 → 2.1.0)
|
|
85
|
+
npm run version:minor
|
|
86
|
+
|
|
87
|
+
# Major release (2.0.7 → 3.0.0)
|
|
88
|
+
npm run version:major
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Each command:
|
|
92
|
+
1. Updates `package.json` version
|
|
93
|
+
2. Creates a git commit: "Release v2.0.8"
|
|
94
|
+
3. Creates a git tag: `v2.0.8`
|
|
95
|
+
|
|
96
|
+
**After version bump:**
|
|
97
|
+
```bash
|
|
98
|
+
git push && git push --tags
|
|
99
|
+
npm run publish:prod
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## 📋 Pre-Publish Checklist
|
|
105
|
+
|
|
106
|
+
Before publishing a new version:
|
|
107
|
+
|
|
108
|
+
- [ ] Update [CHANGELOG.md](CHANGELOG.md) with changes
|
|
109
|
+
- [ ] Run `npm run validate` - Must pass
|
|
110
|
+
- [ ] Run `npm run build` - Review files
|
|
111
|
+
- [ ] Run `npm run publish:dry` - Verify contents
|
|
112
|
+
- [ ] Test locally: `npm link` in project directory
|
|
113
|
+
- [ ] Verify version number in [package.json](package.json)
|
|
114
|
+
- [ ] Commit all changes: `git commit -am "Release v2.0.X"`
|
|
115
|
+
- [ ] Create git tag: `npm run version:patch/minor/major`
|
|
116
|
+
- [ ] Push to GitHub: `git push && git push --tags`
|
|
117
|
+
- [ ] Publish: `npm run publish:prod`
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 📦 Package Contents
|
|
122
|
+
|
|
123
|
+
Files included in the npm package (defined in `package.json` → `files` array):
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
index.js # Main MCP server implementation
|
|
127
|
+
cli.js # CLI entry point
|
|
128
|
+
README.md # Full documentation
|
|
129
|
+
SETUP.md # Setup guide
|
|
130
|
+
QUICKSTART.md # Quick start guide
|
|
131
|
+
DATA_MODELS.md # Data models reference
|
|
132
|
+
USE_CASE_RCA.md # Root cause analysis case study
|
|
133
|
+
CHANGELOG.md # Version history
|
|
134
|
+
LICENSE # MIT License
|
|
135
|
+
config.example.json # Configuration template
|
|
136
|
+
mcp-config.example.json # MCP configuration template
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**Everything else is excluded** (tests, development files, etc.)
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## 🔐 npm Authentication
|
|
144
|
+
|
|
145
|
+
### Login to npm
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
npm login
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Enter your npm credentials.
|
|
152
|
+
|
|
153
|
+
### Verify Login
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
npm whoami
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Should display your npm username.
|
|
160
|
+
|
|
161
|
+
### Scope Access
|
|
162
|
+
|
|
163
|
+
The package is published under `@mithung` scope. Ensure you have publishing rights:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
npm access ls-collaborators @mithung/vunet-mcp-server
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 🧪 Local Testing
|
|
172
|
+
|
|
173
|
+
### Test Installation (Global)
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
# In project directory
|
|
177
|
+
npm link
|
|
178
|
+
|
|
179
|
+
# Test the CLI
|
|
180
|
+
vunet-mcp
|
|
181
|
+
@mithung/vunet-mcp-server
|
|
182
|
+
|
|
183
|
+
# Unlink when done
|
|
184
|
+
npm unlink -g @mithung/vunet-mcp-server
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Test Installation (Local)
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
# In a test directory
|
|
191
|
+
mkdir test-project
|
|
192
|
+
cd test-project
|
|
193
|
+
npm init -y
|
|
194
|
+
npm install /path/to/API_MCP
|
|
195
|
+
|
|
196
|
+
# Or link directly
|
|
197
|
+
npm link @mithung/vunet-mcp-server
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## 🐛 Troubleshooting
|
|
203
|
+
|
|
204
|
+
### "npm ERR! need auth"
|
|
205
|
+
|
|
206
|
+
You're not logged in. Run `npm login`.
|
|
207
|
+
|
|
208
|
+
### "npm ERR! 403 Forbidden"
|
|
209
|
+
|
|
210
|
+
You don't have publish rights to the `@mithung` scope. Contact the scope owner.
|
|
211
|
+
|
|
212
|
+
### "npm ERR! You do not have permission to publish"
|
|
213
|
+
|
|
214
|
+
The package may already exist with this version. Bump the version:
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
npm run version:patch
|
|
218
|
+
npm run publish:prod
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Package includes files it shouldn't
|
|
222
|
+
|
|
223
|
+
Check the `files` array in [package.json](package.json). Files listed there are included. Use `.npmignore` for exceptions.
|
|
224
|
+
|
|
225
|
+
### Validation fails
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
npm run validate
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
This will show syntax errors in `index.js` or `cli.js`.
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## 📊 Package Statistics
|
|
236
|
+
|
|
237
|
+
After publishing, view package stats:
|
|
238
|
+
|
|
239
|
+
- **npm page:** https://www.npmjs.com/package/@mithung/vunet-mcp-server
|
|
240
|
+
- **Download stats:** https://npm-stat.com/charts.html?package=@mithung/vunet-mcp-server
|
|
241
|
+
- **Bundle size:** https://bundlephobia.com/package/@mithung/vunet-mcp-server
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## 🔄 Release Workflow Example
|
|
246
|
+
|
|
247
|
+
Complete workflow for releasing v2.0.8:
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
# 1. Make your changes
|
|
251
|
+
git add .
|
|
252
|
+
git commit -m "Add new features"
|
|
253
|
+
|
|
254
|
+
# 2. Update CHANGELOG.md
|
|
255
|
+
code CHANGELOG.md
|
|
256
|
+
# Add [2.0.8] section with changes
|
|
257
|
+
|
|
258
|
+
# 3. Validate
|
|
259
|
+
npm run validate
|
|
260
|
+
|
|
261
|
+
# 4. Test build
|
|
262
|
+
npm run build
|
|
263
|
+
|
|
264
|
+
# 5. Dry-run publish
|
|
265
|
+
npm run publish:dry
|
|
266
|
+
|
|
267
|
+
# 6. Bump version (creates commit + tag)
|
|
268
|
+
npm run version:patch
|
|
269
|
+
|
|
270
|
+
# 7. Push to GitHub
|
|
271
|
+
git push && git push --tags
|
|
272
|
+
|
|
273
|
+
# 8. Publish to npm
|
|
274
|
+
npm run publish:prod
|
|
275
|
+
|
|
276
|
+
# 9. Verify
|
|
277
|
+
npm view @mithung/vunet-mcp-server version
|
|
278
|
+
# Should show 2.0.8
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## 📚 Related Documentation
|
|
284
|
+
|
|
285
|
+
- [CHANGELOG.md](CHANGELOG.md) - Version history
|
|
286
|
+
- [PUBLISHING.md](PUBLISHING.md) - Detailed publishing guide
|
|
287
|
+
- [README.md](README.md) - Package documentation
|
|
288
|
+
- [npm docs](https://docs.npmjs.com/cli/v10/commands/npm-publish) - npm publish command
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
**Last Updated:** February 16, 2026
|
|
293
|
+
**Current Version:** 2.0.7
|
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,54 @@ All notable changes to this project 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
|
+
## [2.0.8] - 2026-02-16
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- **CRITICAL FIX**: Corrected authentication endpoint to use `/api/login/` instead of `/vuSmartMaps/api/1/bu/{buId}/auth/users/login/`
|
|
12
|
+
- Fixed login request body to include `bu_id` parameter
|
|
13
|
+
- Added `Content-Type: application/json` header to login request
|
|
14
|
+
- Corrected logout endpoint to use `/api/logout/`
|
|
15
|
+
- Resolves 403 Forbidden errors during authentication
|
|
16
|
+
|
|
17
|
+
### Removed
|
|
18
|
+
- Cleaned up workspace: Removed temporary JSON files (test-login.json, trace-data.json, k8s-*.json, etc.)
|
|
19
|
+
|
|
20
|
+
## [2.0.7] - 2026-02-16
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
- **NEW**: Comprehensive RCA use case documentation (USE_CASE_RCA.md)
|
|
24
|
+
- Real-world VuBank troubleshooting walkthrough
|
|
25
|
+
- Complete root cause analysis methodology
|
|
26
|
+
- Query examples for trace analysis
|
|
27
|
+
- Kubernetes metrics correlation
|
|
28
|
+
- 25-minute RCA timeline demonstration
|
|
29
|
+
- Enhanced DATA_MODELS.md with practical examples
|
|
30
|
+
- 4 real-world use cases (RCA, Performance, Dependencies, Errors)
|
|
31
|
+
- Pro tips for effective queries
|
|
32
|
+
- Common troubleshooting scenarios
|
|
33
|
+
- Best practices for filters and time ranges
|
|
34
|
+
- Data model categories quick reference
|
|
35
|
+
- Build and publish scripts in package.json
|
|
36
|
+
- `npm run build` - Prepare package for publishing
|
|
37
|
+
- `npm run prepublish` - Pre-publish validation
|
|
38
|
+
- `npm run publish:dry` - Test publishing without actually publishing
|
|
39
|
+
- Documentation improvements across all guides
|
|
40
|
+
|
|
41
|
+
### Enhanced
|
|
42
|
+
- DATA_MODELS.md now includes:
|
|
43
|
+
- VuBank fund transfer failure case study
|
|
44
|
+
- Service dependency mapping examples
|
|
45
|
+
- Performance degradation analysis queries
|
|
46
|
+
- Error pattern detection workflows
|
|
47
|
+
- Pagination and field selection best practices
|
|
48
|
+
|
|
49
|
+
### Documentation
|
|
50
|
+
- Added USE_CASE_RCA.md with complete troubleshooting methodology
|
|
51
|
+
- Documented exact queries used for Kubernetes metrics
|
|
52
|
+
- Included trace data structure examples
|
|
53
|
+
- Added metrics timeline for RCA workflow
|
|
54
|
+
- Cross-referenced documentation files
|
|
55
|
+
|
|
8
56
|
## [2.0.6] - 2026-02-13
|
|
9
57
|
|
|
10
58
|
### Fixed
|
package/DATA_MODELS.md
CHANGED
|
@@ -188,5 +188,280 @@ vunet_list_data_models
|
|
|
188
188
|
|
|
189
189
|
---
|
|
190
190
|
|
|
191
|
-
|
|
192
|
-
|
|
191
|
+
## Real-World Use Cases
|
|
192
|
+
|
|
193
|
+
### Use Case 1: Root Cause Analysis for Application Failures
|
|
194
|
+
|
|
195
|
+
**Scenario:** VuBank fund transfer service failing with HTTP 401/500 errors
|
|
196
|
+
|
|
197
|
+
**Data Models Used:**
|
|
198
|
+
1. **Trace Map Data** - Identify service call chains and failure points
|
|
199
|
+
2. **Kubernetes Pod Metrics** - Verify infrastructure health
|
|
200
|
+
3. **Kubernetes Deployment Metrics** - Check deployment status
|
|
201
|
+
|
|
202
|
+
**Query Workflow:**
|
|
203
|
+
|
|
204
|
+
```json
|
|
205
|
+
// Step 1: Get recent traces for failing service
|
|
206
|
+
{
|
|
207
|
+
"metric_name": "Trace Map Data",
|
|
208
|
+
"relative_time": "1h",
|
|
209
|
+
"filters": {
|
|
210
|
+
"service.name": "ibmb-ib"
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// Step 2: Verify backend service health
|
|
215
|
+
{
|
|
216
|
+
"metric_name": "Kubernetes Pod Metrics",
|
|
217
|
+
"relative_time": "1h",
|
|
218
|
+
"filters": {
|
|
219
|
+
"namespace": "ibmb",
|
|
220
|
+
"pod_name": "ibmb-cbs*"
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// Step 3: Check deployment status
|
|
225
|
+
{
|
|
226
|
+
"metric_name": "Kubernetes Deployment Metrics",
|
|
227
|
+
"relative_time": "1h",
|
|
228
|
+
"filters": {
|
|
229
|
+
"deployment_name": "ibmb-cbs"
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
**Outcome:** Identified CBS service returning HTTP 404 (missing REST endpoints) while infrastructure was healthy. See [USE_CASE_RCA.md](USE_CASE_RCA.md) for complete analysis.
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
### Use Case 2: Performance Degradation Analysis
|
|
239
|
+
|
|
240
|
+
**Data Models for Performance Investigation:**
|
|
241
|
+
|
|
242
|
+
```json
|
|
243
|
+
// Query slow traces
|
|
244
|
+
{
|
|
245
|
+
"metric_name": "Trace Map Data",
|
|
246
|
+
"relative_time": "4h",
|
|
247
|
+
"filters": {
|
|
248
|
+
"span.duration": ">5000000" // >5 seconds
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
// Check database performance
|
|
253
|
+
{
|
|
254
|
+
"metric_name": "MySQL Performance",
|
|
255
|
+
"relative_time": "4h",
|
|
256
|
+
"filters": {
|
|
257
|
+
"query_time": ">1000" // >1 second
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// Verify resource utilization
|
|
262
|
+
{
|
|
263
|
+
"metric_name": "Kubernetes Pod Metrics",
|
|
264
|
+
"relative_time": "4h",
|
|
265
|
+
"include": "pod_name,cpu_usage,memory_usage,namespace"
|
|
266
|
+
}
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
### Use Case 3: Service Dependency Mapping
|
|
272
|
+
|
|
273
|
+
**Trace Analysis for Microservices:**
|
|
274
|
+
|
|
275
|
+
```json
|
|
276
|
+
{
|
|
277
|
+
"metric_name": "Trace Map Data",
|
|
278
|
+
"relative_time": "24h",
|
|
279
|
+
"filters": {
|
|
280
|
+
"service.name": "api-gateway"
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
**Insights Gained:**
|
|
286
|
+
- Identify all downstream services called
|
|
287
|
+
- Measure response times per service
|
|
288
|
+
- Detect cascading failures
|
|
289
|
+
- Map service-to-service relationships
|
|
290
|
+
- Find bottleneck services
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
### Use Case 4: Error Pattern Detection
|
|
295
|
+
|
|
296
|
+
**Query Failed Requests:**
|
|
297
|
+
|
|
298
|
+
```json
|
|
299
|
+
// Get HTTP 500 errors
|
|
300
|
+
{
|
|
301
|
+
"metric_name": "Trace Map Data",
|
|
302
|
+
"relative_time": "6h",
|
|
303
|
+
"filters": {
|
|
304
|
+
"http.status_code": "500"
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
// Get exceptions
|
|
309
|
+
{
|
|
310
|
+
"metric_name": "Exception Data",
|
|
311
|
+
"relative_time": "6h",
|
|
312
|
+
"filters": {
|
|
313
|
+
"exception.type": "NullPointerException"
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
// Check error rate by service
|
|
318
|
+
{
|
|
319
|
+
"metric_name": "Error Rate",
|
|
320
|
+
"relative_time": "6h",
|
|
321
|
+
"filters": {
|
|
322
|
+
"service_name": "payment-service"
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## Pro Tips for Effective Queries
|
|
330
|
+
|
|
331
|
+
### 1. Time Range Selection
|
|
332
|
+
|
|
333
|
+
**For Real-Time Issues:**
|
|
334
|
+
- Use `15m` or `30m` for immediate problems
|
|
335
|
+
- Quick feedback loop for troubleshooting
|
|
336
|
+
|
|
337
|
+
**For Trend Analysis:**
|
|
338
|
+
- Use `24h`, `7d`, or `30d` for patterns
|
|
339
|
+
- Identify recurring issues
|
|
340
|
+
|
|
341
|
+
**For Historical Investigation:**
|
|
342
|
+
- Use absolute timestamps with `start_time` and `end_time`
|
|
343
|
+
- Analyze specific incident windows
|
|
344
|
+
|
|
345
|
+
### 2. Filter Best Practices
|
|
346
|
+
|
|
347
|
+
**Be Specific:**
|
|
348
|
+
```json
|
|
349
|
+
// Good - specific service
|
|
350
|
+
{"service.name": "payment-service"}
|
|
351
|
+
|
|
352
|
+
// Too broad - all services
|
|
353
|
+
{}
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
**Combine Filters:**
|
|
357
|
+
```json
|
|
358
|
+
{
|
|
359
|
+
"filters": {
|
|
360
|
+
"service.name": "api-gateway",
|
|
361
|
+
"http.status_code": ">=400",
|
|
362
|
+
"span.duration": ">3000000"
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
### 3. Field Selection
|
|
368
|
+
|
|
369
|
+
**Include only needed fields:**
|
|
370
|
+
```json
|
|
371
|
+
{
|
|
372
|
+
"include": "trace_id,service.name,http.status_code,span.duration"
|
|
373
|
+
}
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
**Benefits:**
|
|
377
|
+
- Faster query execution
|
|
378
|
+
- Reduced data transfer
|
|
379
|
+
- Easier analysis
|
|
380
|
+
|
|
381
|
+
### 4. Pagination for Large Results
|
|
382
|
+
|
|
383
|
+
```json
|
|
384
|
+
{
|
|
385
|
+
"metric_name": "Trace Map Data",
|
|
386
|
+
"relative_time": "24h",
|
|
387
|
+
"limit": 100,
|
|
388
|
+
"offset": 0
|
|
389
|
+
}
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
---
|
|
393
|
+
|
|
394
|
+
## Common Troubleshooting Scenarios
|
|
395
|
+
|
|
396
|
+
### Scenario: "Why is my application slow?"
|
|
397
|
+
|
|
398
|
+
**Investigation Steps:**
|
|
399
|
+
1. Query `Trace Map Data` with `span.duration` filter
|
|
400
|
+
2. Check `MySQL Performance` or `PostgreSQL Metrics`
|
|
401
|
+
3. Verify `Kubernetes Pod Metrics` for resource constraints
|
|
402
|
+
4. Review `JVM Metrics` for garbage collection issues
|
|
403
|
+
|
|
404
|
+
### Scenario: "Service is down"
|
|
405
|
+
|
|
406
|
+
**Investigation Steps:**
|
|
407
|
+
1. Query `Kubernetes Pod Metrics` - Check pod status
|
|
408
|
+
2. Query `Kubernetes Container Metrics` - Check for crashes
|
|
409
|
+
3. Query `Trace Map Data` - Verify no successful requests
|
|
410
|
+
4. Check `Error Logs` - Review exception details
|
|
411
|
+
|
|
412
|
+
### Scenario: "Intermittent failures"
|
|
413
|
+
|
|
414
|
+
**Investigation Steps:**
|
|
415
|
+
1. Query `Trace Map Data` over longer period (6h-24h)
|
|
416
|
+
2. Look for patterns in `http.status_code` distribution
|
|
417
|
+
3. Check `Kubernetes Events` for pod restarts
|
|
418
|
+
4. Review `Network Latency` metrics
|
|
419
|
+
|
|
420
|
+
### Scenario: "Database queries are slow"
|
|
421
|
+
|
|
422
|
+
**Investigation Steps:**
|
|
423
|
+
1. Query `MySQL Slow Queries` or equivalent
|
|
424
|
+
2. Check `Database Connection Pool` utilization
|
|
425
|
+
3. Review `Trace Map Data` for database span durations
|
|
426
|
+
4. Verify `Disk I/O` metrics on database host
|
|
427
|
+
|
|
428
|
+
---
|
|
429
|
+
|
|
430
|
+
## Data Model Categories Quick Reference
|
|
431
|
+
|
|
432
|
+
### 🔍 Debugging & Troubleshooting
|
|
433
|
+
- Trace Map Data
|
|
434
|
+
- Exception Data
|
|
435
|
+
- Error Logs
|
|
436
|
+
- Application Logs
|
|
437
|
+
|
|
438
|
+
### 📊 Performance Monitoring
|
|
439
|
+
- Application Response Time
|
|
440
|
+
- MySQL Performance
|
|
441
|
+
- JVM Metrics
|
|
442
|
+
- CPU Usage
|
|
443
|
+
- Memory Usage
|
|
444
|
+
|
|
445
|
+
### 🏗️ Infrastructure Health
|
|
446
|
+
- Kubernetes Pod Metrics
|
|
447
|
+
- Kubernetes Deployment Metrics
|
|
448
|
+
- Kubernetes Node Metrics
|
|
449
|
+
- Container Metrics
|
|
450
|
+
|
|
451
|
+
### 🔒 Security & Compliance
|
|
452
|
+
- Security Events
|
|
453
|
+
- Failed Login Attempts
|
|
454
|
+
- Audit Logs
|
|
455
|
+
- SSL Certificate Expiry
|
|
456
|
+
|
|
457
|
+
### 💼 Business Metrics
|
|
458
|
+
- Transaction Success Rate
|
|
459
|
+
- User Sessions
|
|
460
|
+
- Conversion Rate
|
|
461
|
+
- Custom KPIs
|
|
462
|
+
|
|
463
|
+
---
|
|
464
|
+
|
|
465
|
+
**Last Updated:** February 16, 2026
|
|
466
|
+
**Package Version:** 2.0.7
|
|
467
|
+
**See Also:** [USE_CASE_RCA.md](USE_CASE_RCA.md) - Complete RCA walkthrough
|
package/README.md
CHANGED
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
|
|
9
9
|
Query metrics, traces, logs, and data models from your Vunet tenants using natural language through AI assistants like Claude, ChatGPT, or any MCP-compatible client.
|
|
10
10
|
|
|
11
|
+
> **Latest Version:** 2.0.8 - Fixed authentication endpoint, comprehensive RCA documentation added.
|
|
12
|
+
|
|
11
13
|
---
|
|
12
14
|
|
|
13
15
|
## 🚀 Features
|
|
@@ -490,9 +492,9 @@ vunet_list_data_models --category infrastructure
|
|
|
490
492
|
**Debug:**
|
|
491
493
|
```bash
|
|
492
494
|
# Test authentication manually
|
|
493
|
-
curl -X POST https://your-tenant.com/
|
|
495
|
+
curl -X POST https://your-tenant.com/api/login/ \
|
|
494
496
|
-H "Content-Type: application/json" \
|
|
495
|
-
-d '{"username":"your-user","password":"your-pass"}'
|
|
497
|
+
-d '{"username":"your-user","password":"your-pass","bu_id":"1"}'
|
|
496
498
|
```
|
|
497
499
|
|
|
498
500
|
#### 3. "SSL Certificate Verification Failed"
|
package/SETUP.md
CHANGED
|
@@ -265,9 +265,9 @@ $env:Path += ";C:\Program Files\nodejs\"
|
|
|
265
265
|
|
|
266
266
|
**Test manually:**
|
|
267
267
|
```bash
|
|
268
|
-
curl -X POST https://your-tenant.com/
|
|
268
|
+
curl -X POST https://your-tenant.com/api/login/ \
|
|
269
269
|
-H "Content-Type: application/json" \
|
|
270
|
-
-d '{"username":"user","password":"pass"}'
|
|
270
|
+
-d '{"username":"user","password":"pass","bu_id":"1"}'
|
|
271
271
|
```
|
|
272
272
|
|
|
273
273
|
### Issue: MCP Server Not Loading
|
package/USE_CASE_RCA.md
ADDED
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
# Root Cause Analysis (RCA) with VuNet MCP Server
|
|
2
|
+
|
|
3
|
+
This document demonstrates a real-world use case of using the VuNet MCP Server to perform comprehensive root cause analysis for application failures using the VuBank banking application as an example.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 🎯 Use Case Overview
|
|
8
|
+
|
|
9
|
+
**Scenario:** VuBank internet banking application experiencing failures
|
|
10
|
+
- **Issue:** User login failures and fund transfer failures
|
|
11
|
+
- **Tool Used:** VuNet MCP Server querying vuSmartMaps tenant
|
|
12
|
+
- **Outcome:** Identified root cause in 25 minutes using trace analysis and Kubernetes metrics
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 📊 Data Models Used
|
|
17
|
+
|
|
18
|
+
This RCA utilized the following VuNet data models:
|
|
19
|
+
|
|
20
|
+
| Data Model | Purpose | Key Findings |
|
|
21
|
+
|------------|---------|--------------|
|
|
22
|
+
| `Trace Map Data` | Analyze service-to-service call chains | Identified CBS service returning HTTP 404 |
|
|
23
|
+
| `Kubernetes Pod Metrics` | Check pod health and failures | Verified CBS pod healthy (1/1 replicas) |
|
|
24
|
+
| `Kubernetes Container Metrics` | Verify container crashes | No container failures detected |
|
|
25
|
+
| `Kubernetes Deployment Metrics` | Check deployment status | All deployments healthy |
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 🔍 Investigation Methodology
|
|
30
|
+
|
|
31
|
+
### Step 1: Query Trace Data for Failed Transactions
|
|
32
|
+
|
|
33
|
+
**Query Used:**
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"metric_name": "Trace Map Data",
|
|
37
|
+
"relative_time": "1h",
|
|
38
|
+
"filters": {
|
|
39
|
+
"service.name": "ibmb-ib"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Key Findings:**
|
|
45
|
+
- Retrieved 16 fund transfer traces
|
|
46
|
+
- Login service: 8/8 requests succeeded (HTTP 200)
|
|
47
|
+
- Fund transfer: 8/8 requests failed
|
|
48
|
+
- 62.5% returned HTTP 401 (Unauthorized)
|
|
49
|
+
- 37.5% returned HTTP 500 (Internal Server Error)
|
|
50
|
+
|
|
51
|
+
### Step 2: Analyze Service Call Chain
|
|
52
|
+
|
|
53
|
+
**Trace Analysis Results:**
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
Fund Transfer Call Chain:
|
|
57
|
+
┌─────────────┐ ┌──────────┐ ┌─────────┐
|
|
58
|
+
│ ibmb-ib │────→│ MySQL │────→│ FRM │
|
|
59
|
+
│ (Frontend) │ │ (Success)│ │(Success)│
|
|
60
|
+
└─────────────┘ └──────────┘ └─────────┘
|
|
61
|
+
│
|
|
62
|
+
├────→ IFSC Lookup Service ✓ (HTTP 200)
|
|
63
|
+
│
|
|
64
|
+
└────→ CBS Service ✗ (HTTP 404)
|
|
65
|
+
↓
|
|
66
|
+
Root Cause Found!
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**CBS Service Failures:**
|
|
70
|
+
- Total CBS calls: 25
|
|
71
|
+
- Failed with HTTP 404: 21 calls (84%)
|
|
72
|
+
- No status code: 4 calls (16%)
|
|
73
|
+
- **100% failure rate on CBS service**
|
|
74
|
+
|
|
75
|
+
### Step 3: Identify Failing Endpoints
|
|
76
|
+
|
|
77
|
+
**Failed Endpoints:**
|
|
78
|
+
```
|
|
79
|
+
http://cbs-svc:7001/cbs/api/v1.0/accounts/debit → 404 Not Found
|
|
80
|
+
http://cbs-svc:7001/cbs/api/v1.0/accounts/statement → 404 Not Found
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Error Pattern:**
|
|
84
|
+
```
|
|
85
|
+
org.springframework.web.client.HttpClientErrorException$NotFound:
|
|
86
|
+
404 Not Found: <!DOCTYPE html>... (HTML error page returned)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Step 4: Verify Infrastructure Health
|
|
90
|
+
|
|
91
|
+
**Kubernetes Pod Query:**
|
|
92
|
+
```json
|
|
93
|
+
{
|
|
94
|
+
"metric_name": "Kubernetes Pod Metrics",
|
|
95
|
+
"relative_time": "1h",
|
|
96
|
+
"filters": {
|
|
97
|
+
"namespace": "ibmb",
|
|
98
|
+
"pod_name": "ibmb-cbs*"
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Results:**
|
|
104
|
+
- CBS pod status: **Running** ✓
|
|
105
|
+
- Replicas: 1/1 (desired vs available) ✓
|
|
106
|
+
- No pod failures in last hour ✓
|
|
107
|
+
- No container restarts ✓
|
|
108
|
+
|
|
109
|
+
**Kubernetes Deployment Query:**
|
|
110
|
+
```json
|
|
111
|
+
{
|
|
112
|
+
"metric_name": "Kubernetes Deployment Metrics",
|
|
113
|
+
"relative_time": "1h",
|
|
114
|
+
"filters": {
|
|
115
|
+
"deployment_name": "ibmb-cbs"
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Results:**
|
|
121
|
+
- Deployment: ibmb-cbs
|
|
122
|
+
- Desired replicas: 1.0 ✓
|
|
123
|
+
- Available replicas: 1.0 ✓
|
|
124
|
+
- Deployment healthy ✓
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## 🎯 Root Cause Identification
|
|
129
|
+
|
|
130
|
+
### Primary Finding
|
|
131
|
+
|
|
132
|
+
**CBS Service Missing REST API Endpoints**
|
|
133
|
+
|
|
134
|
+
**Evidence Chain:**
|
|
135
|
+
1. ✅ CBS pod is running (healthy infrastructure)
|
|
136
|
+
2. ✅ CBS service accessible on port 7001
|
|
137
|
+
3. ❌ No REST endpoints registered at `/cbs/api/v1.0/*`
|
|
138
|
+
4. ❌ Returns HTML 404 error pages instead of JSON
|
|
139
|
+
5. ❌ Causes `JsonParseException` in ibmb service
|
|
140
|
+
|
|
141
|
+
### Deep Dive Investigation
|
|
142
|
+
|
|
143
|
+
**kubectl Investigation Commands:**
|
|
144
|
+
```bash
|
|
145
|
+
# Check application logs for endpoint mappings
|
|
146
|
+
kubectl logs ibmb-cbs-d66596486-96w96 -n ibmb | grep "Mapped"
|
|
147
|
+
→ Result: EMPTY (No Spring Boot endpoint mappings)
|
|
148
|
+
|
|
149
|
+
# Check Spring Boot actuator endpoints
|
|
150
|
+
kubectl exec -n ibmb ibmb-cbs-d66596486-96w96 -- curl http://localhost:7001/actuator/mappings
|
|
151
|
+
→ Result: 404 Not Found
|
|
152
|
+
|
|
153
|
+
# Identify application server
|
|
154
|
+
kubectl exec -n ibmb ibmb-cbs-d66596486-96w96 -- whoami
|
|
155
|
+
→ Result: oracle (Oracle WebLogic Server user)
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Final Conclusion
|
|
159
|
+
|
|
160
|
+
**CBS is running on Oracle WebLogic Server WITHOUT the required REST API endpoints**
|
|
161
|
+
|
|
162
|
+
The CBS service expects endpoints at:
|
|
163
|
+
- `/cbs/api/v1.0/accounts/debit`
|
|
164
|
+
- `/cbs/api/v1.0/accounts/statement`
|
|
165
|
+
|
|
166
|
+
But these endpoints **do not exist** in the current deployment.
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## 💡 Resolution Steps
|
|
171
|
+
|
|
172
|
+
### Immediate Actions Required
|
|
173
|
+
|
|
174
|
+
1. **Verify CBS Deployment**
|
|
175
|
+
```bash
|
|
176
|
+
kubectl exec -n ibmb ibmb-cbs-pod -- bash
|
|
177
|
+
ls -la /u01/oracle/user_projects/domains/base_domain/applications/
|
|
178
|
+
find /u01/oracle -name '*.war' -o -name '*.ear'
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
2. **Check Deployed Applications**
|
|
182
|
+
- Verify correct CBS application (WAR/EAR) is deployed
|
|
183
|
+
- Confirm application version includes REST API support
|
|
184
|
+
- Review WebLogic deployment logs
|
|
185
|
+
|
|
186
|
+
3. **Implement Fix (Choose One)**
|
|
187
|
+
|
|
188
|
+
**Option A: Deploy REST API Application**
|
|
189
|
+
- Deploy CBS application with REST endpoints
|
|
190
|
+
- Verify endpoints with `curl http://cbs-svc:7001/cbs/api/v1.0/health`
|
|
191
|
+
|
|
192
|
+
**Option B: SOAP-to-REST Adapter**
|
|
193
|
+
- If CBS only supports SOAP, deploy adapter service
|
|
194
|
+
- Configure ibmb to call adapter instead
|
|
195
|
+
|
|
196
|
+
**Option C: Update Integration**
|
|
197
|
+
- Modify ibmb configuration to use CBS SOAP endpoints
|
|
198
|
+
- Add SOAP client dependency to ibmb
|
|
199
|
+
|
|
200
|
+
### Verification
|
|
201
|
+
|
|
202
|
+
After fix implementation:
|
|
203
|
+
```json
|
|
204
|
+
{
|
|
205
|
+
"metric_name": "Trace Map Data",
|
|
206
|
+
"relative_time": "15m",
|
|
207
|
+
"filters": {
|
|
208
|
+
"service.name": "cbs-svc",
|
|
209
|
+
"http.status_code": "200"
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**Expected Result:** CBS calls showing HTTP 200 instead of 404
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## 📈 Metrics Timeline
|
|
219
|
+
|
|
220
|
+
| Time | Action | Tool Used | Finding |
|
|
221
|
+
|------|--------|-----------|---------|
|
|
222
|
+
| T+0m | Initial query | `Trace Map Data` | 16 traces retrieved |
|
|
223
|
+
| T+5m | Analyze failures | Manual analysis | 100% fund transfer failures |
|
|
224
|
+
| T+10m | Service breakdown | Trace analysis | CBS service 404 errors |
|
|
225
|
+
| T+15m | Infrastructure check | `Kubernetes Pod Metrics` | All pods healthy |
|
|
226
|
+
| T+20m | Deep dive | kubectl logs | CBS is WebLogic, no REST |
|
|
227
|
+
| T+25m | RCA complete | Combined analysis | Missing REST endpoints |
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## 🔑 Key Learnings
|
|
232
|
+
|
|
233
|
+
### VuNet MCP Server Capabilities
|
|
234
|
+
|
|
235
|
+
1. **Trace Analysis**
|
|
236
|
+
- End-to-end service call visibility
|
|
237
|
+
- HTTP status code tracking
|
|
238
|
+
- Error pattern identification
|
|
239
|
+
- Service dependency mapping
|
|
240
|
+
|
|
241
|
+
2. **Infrastructure Correlation**
|
|
242
|
+
- Kubernetes metrics integration
|
|
243
|
+
- Pod health verification
|
|
244
|
+
- Deployment status monitoring
|
|
245
|
+
- Container failure detection
|
|
246
|
+
|
|
247
|
+
3. **Root Cause Methodology**
|
|
248
|
+
- Start with traces (application layer)
|
|
249
|
+
- Verify infrastructure (platform layer)
|
|
250
|
+
- Deep dive logs (code layer)
|
|
251
|
+
- Correlate findings
|
|
252
|
+
|
|
253
|
+
### Best Practices
|
|
254
|
+
|
|
255
|
+
✅ **Do:**
|
|
256
|
+
- Query trace data first to identify failure patterns
|
|
257
|
+
- Use relative time ranges (1h, 24h) for recent issues
|
|
258
|
+
- Verify infrastructure health to rule out platform issues
|
|
259
|
+
- Cross-reference multiple data models for complete picture
|
|
260
|
+
- Document exact error messages and URLs
|
|
261
|
+
|
|
262
|
+
❌ **Don't:**
|
|
263
|
+
- Assume infrastructure is the problem without trace analysis
|
|
264
|
+
- Rely solely on HTTP status codes at frontend
|
|
265
|
+
- Skip service-to-service call chain analysis
|
|
266
|
+
- Ignore correlation between different metrics
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## 📊 Query Performance
|
|
271
|
+
|
|
272
|
+
| Query Type | Data Model | Time Range | Results | Query Time |
|
|
273
|
+
|------------|------------|------------|---------|------------|
|
|
274
|
+
| Trace data | Trace Map Data | 1h | 128KB JSON | ~2s |
|
|
275
|
+
| K8s pods | Kubernetes Pod Metrics | 1h | 45 entries | ~1s |
|
|
276
|
+
| K8s deployments | Kubernetes Deployment Metrics | 1h | 12 entries | ~1s |
|
|
277
|
+
| Exceptions | Exception data | 1h | 4 entries | ~1s |
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## 🛠️ Tools & Commands Reference
|
|
282
|
+
|
|
283
|
+
### VuNet MCP Server Tools
|
|
284
|
+
```javascript
|
|
285
|
+
// List available data models
|
|
286
|
+
vunet_list_data_models
|
|
287
|
+
|
|
288
|
+
// Query specific metric
|
|
289
|
+
vunet_query_metric({
|
|
290
|
+
metric_name: "Trace Map Data",
|
|
291
|
+
relative_time: "1h",
|
|
292
|
+
filters: {...}
|
|
293
|
+
})
|
|
294
|
+
|
|
295
|
+
// Check connection status
|
|
296
|
+
vunet_get_status
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### Direct API Access
|
|
300
|
+
```bash
|
|
301
|
+
# Authenticate
|
|
302
|
+
curl -k -X POST https://20.198.26.207/api/login/ \
|
|
303
|
+
-H "Content-Type: application/json" \
|
|
304
|
+
-d @test-login.json
|
|
305
|
+
|
|
306
|
+
# Query metrics
|
|
307
|
+
curl -k -X GET "https://20.198.26.207/api/metrics/Trace%20Map%20Data/?relative_time=1h" \
|
|
308
|
+
-H "Authorization: Bearer <token>"
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
## 📝 Sample Trace Data Structure
|
|
314
|
+
|
|
315
|
+
```json
|
|
316
|
+
{
|
|
317
|
+
"trace_id": "02c0eff33e61025a378b28d72dc6de13",
|
|
318
|
+
"span": {
|
|
319
|
+
"service.name": "ibmb-ib",
|
|
320
|
+
"http.method": "POST",
|
|
321
|
+
"http.url": "/api/v1.0/fund-transfer",
|
|
322
|
+
"http.status_code": 401,
|
|
323
|
+
"span.duration": 1234567,
|
|
324
|
+
"downstream": [
|
|
325
|
+
{
|
|
326
|
+
"service.name": "mysql",
|
|
327
|
+
"http.status_code": 200
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
"service.name": "ifsc-lookup",
|
|
331
|
+
"http.status_code": 200
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
"service.name": "frm-svc",
|
|
335
|
+
"http.status_code": 200
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"service.name": "cbs-svc",
|
|
339
|
+
"http.url": "http://cbs-svc:7001/cbs/api/v1.0/accounts/debit",
|
|
340
|
+
"http.status_code": 404,
|
|
341
|
+
"error": "HttpClientErrorException$NotFound"
|
|
342
|
+
}
|
|
343
|
+
]
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
## 🎓 Training Value
|
|
351
|
+
|
|
352
|
+
**This RCA demonstrates:**
|
|
353
|
+
- Multi-model correlation analysis
|
|
354
|
+
- Infrastructure vs application issue separation
|
|
355
|
+
- Systematic troubleshooting methodology
|
|
356
|
+
- VuNet platform capabilities for production debugging
|
|
357
|
+
- Value of distributed tracing in microservices
|
|
358
|
+
|
|
359
|
+
**Time Saved:** Traditional RCA could take hours/days checking logs across services. VuNet trace analysis reduced this to **25 minutes**.
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
## 📚 Related Documentation
|
|
364
|
+
|
|
365
|
+
- [DATA_MODELS.md](DATA_MODELS.md) - Complete data model reference
|
|
366
|
+
- [QUICKSTART.md](QUICKSTART.md) - Quick setup guide
|
|
367
|
+
- [README.md](README.md) - Full documentation
|
|
368
|
+
|
|
369
|
+
---
|
|
370
|
+
|
|
371
|
+
**Last Updated:** February 16, 2026
|
|
372
|
+
**Case Study:** VuBank Fund Transfer Failure RCA
|
|
373
|
+
**VuNet MCP Server Version:** 2.0.7
|
package/index.js
CHANGED
|
@@ -26,7 +26,7 @@ class VunetMCPServer {
|
|
|
26
26
|
this.server = new Server(
|
|
27
27
|
{
|
|
28
28
|
name: "vunet-mcp-server",
|
|
29
|
-
version: "2.0.
|
|
29
|
+
version: "2.0.8",
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
capabilities: {
|
|
@@ -117,9 +117,10 @@ class VunetMCPServer {
|
|
|
117
117
|
|
|
118
118
|
/**
|
|
119
119
|
* Login to Vunet tenant
|
|
120
|
+
* Uses /api/login/ endpoint with username, password, and bu_id
|
|
120
121
|
*/
|
|
121
122
|
async login() {
|
|
122
|
-
const url = `${this.normalizeTenantUrl(this.tenantUrl)}/
|
|
123
|
+
const url = `${this.normalizeTenantUrl(this.tenantUrl)}/api/login/`;
|
|
123
124
|
|
|
124
125
|
try {
|
|
125
126
|
const response = await axios.post(
|
|
@@ -127,8 +128,12 @@ class VunetMCPServer {
|
|
|
127
128
|
{
|
|
128
129
|
username: this.username,
|
|
129
130
|
password: this.password,
|
|
131
|
+
bu_id: this.buId,
|
|
130
132
|
},
|
|
131
133
|
{
|
|
134
|
+
headers: {
|
|
135
|
+
"Content-Type": "application/json",
|
|
136
|
+
},
|
|
132
137
|
httpsAgent: this.httpsAgent,
|
|
133
138
|
}
|
|
134
139
|
);
|
|
@@ -158,7 +163,7 @@ class VunetMCPServer {
|
|
|
158
163
|
async logout() {
|
|
159
164
|
if (!this.sessionToken) return;
|
|
160
165
|
|
|
161
|
-
const url = `${this.normalizeTenantUrl(this.tenantUrl)}/
|
|
166
|
+
const url = `${this.normalizeTenantUrl(this.tenantUrl)}/api/logout/`;
|
|
162
167
|
|
|
163
168
|
try {
|
|
164
169
|
await axios.post(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mithung/vunet-mcp-server",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.8",
|
|
4
4
|
"description": "Model Context Protocol (MCP) Server for Vunet vuSmartMaps - Multi-tenant observability platform integration",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -11,7 +11,15 @@
|
|
|
11
11
|
"scripts": {
|
|
12
12
|
"start": "node index.js",
|
|
13
13
|
"dev": "node --watch index.js",
|
|
14
|
-
"test": "echo \"No tests specified yet\" && exit 0"
|
|
14
|
+
"test": "echo \"No tests specified yet\" && exit 0",
|
|
15
|
+
"build": "npm run validate && npm pack --dry-run",
|
|
16
|
+
"validate": "node --check index.js && node --check cli.js",
|
|
17
|
+
"prepublishOnly": "npm run validate && npm test",
|
|
18
|
+
"publish:dry": "npm publish --dry-run",
|
|
19
|
+
"publish:prod": "npm publish --access public",
|
|
20
|
+
"version:patch": "npm version patch -m \"Release v%s\"",
|
|
21
|
+
"version:minor": "npm version minor -m \"Release v%s\"",
|
|
22
|
+
"version:major": "npm version major -m \"Release v%s\""
|
|
15
23
|
},
|
|
16
24
|
"keywords": [
|
|
17
25
|
"mcp",
|
|
@@ -56,6 +64,8 @@
|
|
|
56
64
|
"SETUP.md",
|
|
57
65
|
"QUICKSTART.md",
|
|
58
66
|
"DATA_MODELS.md",
|
|
67
|
+
"USE_CASE_RCA.md",
|
|
68
|
+
"BUILD_GUIDE.md",
|
|
59
69
|
"CHANGELOG.md",
|
|
60
70
|
"LICENSE",
|
|
61
71
|
"config.example.json",
|