@vint.tri/report_gen_mcp 1.0.8 → 1.0.10
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/CLAUDE_DESKTOP_FIX_INSTRUCTIONS.md +3 -3
- package/CLAUDE_DESKTOP_INTEGRATION_SUMMARY.md +156 -0
- package/CLAUDE_DESKTOP_README.md +2 -2
- package/README.md +189 -0
- package/claude-desktop-simulation.js +2 -2
- package/cli-test-report.html +14 -0
- package/debug-method.js +67 -0
- package/detailed-debug.js +36 -0
- package/dist/index.js +108 -62
- package/package.json +2 -1
- package/report.html +2 -2
- package/simple-test.js +35 -0
- package/src/index.ts +118 -63
- package/test-claude-full-functionality.js +3 -3
- package/test-claude-stdio.js +1 -1
- package/test-list-tools.js +35 -0
- package/test-local-installed.js +36 -0
- package/test-local-list-tools.js +36 -0
- package/test-local-stdio.js +34 -0
- package/test-npx-explicit-version.js +36 -0
- package/test-report.html +3 -7
- package/tsconfig.json +3 -2
- package/verify-claude-integration.js +231 -0
|
@@ -38,7 +38,7 @@ Use this configuration in your Claude Desktop settings:
|
|
|
38
38
|
"tags": [],
|
|
39
39
|
"command": "npx",
|
|
40
40
|
"args": [
|
|
41
|
-
"@vint.tri/report_gen_mcp@1.0.
|
|
41
|
+
"@vint.tri/report_gen_mcp@1.0.9"
|
|
42
42
|
]
|
|
43
43
|
}
|
|
44
44
|
}
|
|
@@ -66,10 +66,10 @@ After applying the configuration:
|
|
|
66
66
|
1. **isActive: true** - This explicitly enables the tool in Claude Desktop
|
|
67
67
|
2. **npx execution** - Using npx with the scoped package ensures the latest version is always used
|
|
68
68
|
3. **stdio mode** - This allows Claude Desktop to communicate with the tool using JSON over stdin/stdout
|
|
69
|
-
4. **Correct version** - Specifying @1.0.
|
|
69
|
+
4. **Correct version** - Specifying @1.0.9 ensures compatibility
|
|
70
70
|
|
|
71
71
|
## Additional Notes
|
|
72
72
|
|
|
73
73
|
- The tool supports both server mode (with commands) and stdio mode (for Claude Desktop)
|
|
74
|
-
- Make sure you're using the latest version (@1.0.
|
|
74
|
+
- Make sure you're using the latest version (@1.0.9) for all features and fixes
|
|
75
75
|
- The stdio mode implementation has been thoroughly tested and is working correctly
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# Claude Desktop Integration - Fix Summary
|
|
2
|
+
|
|
3
|
+
## Problem Description
|
|
4
|
+
|
|
5
|
+
The `report_gen_mcp` tool was showing as inactive (`isActive: false`) in Claude Desktop with an `mcp:list-tools -32001` error.
|
|
6
|
+
|
|
7
|
+
## Root Cause
|
|
8
|
+
|
|
9
|
+
The issue was that Claude Desktop expected the tool to implement the `mcp:list-tools` method to discover available tools, but this method was not implemented in earlier versions of the tool.
|
|
10
|
+
|
|
11
|
+
## Solution Implemented
|
|
12
|
+
|
|
13
|
+
### 1. Added Missing Method Implementation
|
|
14
|
+
|
|
15
|
+
Updated `src/index.ts` to implement the `mcp:list-tools` method that returns a specification of available tools:
|
|
16
|
+
|
|
17
|
+
```javascript
|
|
18
|
+
{
|
|
19
|
+
tools: [
|
|
20
|
+
{
|
|
21
|
+
name: "generate-report",
|
|
22
|
+
description: "Generate an HTML report with embedded charts",
|
|
23
|
+
inputSchema: {
|
|
24
|
+
type: "object",
|
|
25
|
+
properties: {
|
|
26
|
+
document: {
|
|
27
|
+
type: "string",
|
|
28
|
+
description: "Markdown document with chart placeholders [[chart:id]]"
|
|
29
|
+
},
|
|
30
|
+
charts: {
|
|
31
|
+
type: "object",
|
|
32
|
+
description: "Chart configurations mapped by ID",
|
|
33
|
+
additionalProperties: {
|
|
34
|
+
type: "object",
|
|
35
|
+
properties: {
|
|
36
|
+
type: {
|
|
37
|
+
type: "string",
|
|
38
|
+
enum: ["bar", "line", "pie"]
|
|
39
|
+
},
|
|
40
|
+
config: {
|
|
41
|
+
type: "object"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
required: ["type", "config"]
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
outputFile: {
|
|
48
|
+
type: "string",
|
|
49
|
+
description: "Output HTML file path"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
required: ["document", "charts"]
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: "health",
|
|
57
|
+
description: "Check if the tool is running correctly",
|
|
58
|
+
inputSchema: {
|
|
59
|
+
type: "object",
|
|
60
|
+
properties: {}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 2. Published Fixed Version
|
|
68
|
+
|
|
69
|
+
Published version 1.0.9 to npm with the fix:
|
|
70
|
+
- Package name: `@vint.tri/report_gen_mcp`
|
|
71
|
+
- Version: 1.0.9
|
|
72
|
+
- Registry: https://registry.npmjs.org/
|
|
73
|
+
|
|
74
|
+
### 3. Updated Documentation
|
|
75
|
+
|
|
76
|
+
Created comprehensive documentation for Claude Desktop integration:
|
|
77
|
+
- `CLAUDE_DESKTOP_FIX_INSTRUCTIONS.md` - Detailed fix instructions
|
|
78
|
+
- `CLAUDE_DESKTOP_README.md` - Claude-specific README
|
|
79
|
+
- `README.md` - General project documentation with Claude integration section
|
|
80
|
+
|
|
81
|
+
### 4. Verification Tools
|
|
82
|
+
|
|
83
|
+
Created verification scripts to test the integration:
|
|
84
|
+
- `verify-claude-integration.js` - Comprehensive integration test
|
|
85
|
+
- `test-claude-full-functionality.js` - Full functionality test
|
|
86
|
+
- `test-local-installed.js` - Local installation test
|
|
87
|
+
|
|
88
|
+
## Verification Results
|
|
89
|
+
|
|
90
|
+
All tests pass successfully:
|
|
91
|
+
- ✅ Tool installation and accessibility
|
|
92
|
+
- ✅ `mcp:list-tools` response with correct tool specifications
|
|
93
|
+
- ✅ Health check functionality
|
|
94
|
+
- ✅ Report generation functionality
|
|
95
|
+
- ✅ Stdio mode communication
|
|
96
|
+
- ✅ npx execution with scoped package
|
|
97
|
+
|
|
98
|
+
## Correct Claude Desktop Configuration
|
|
99
|
+
|
|
100
|
+
```json
|
|
101
|
+
{
|
|
102
|
+
"report_gen_mcp": {
|
|
103
|
+
"name": "report_gen_mcp",
|
|
104
|
+
"type": "stdio",
|
|
105
|
+
"isActive": true,
|
|
106
|
+
"registryUrl": "",
|
|
107
|
+
"longRunning": false,
|
|
108
|
+
"tags": [],
|
|
109
|
+
"command": "npx",
|
|
110
|
+
"args": [
|
|
111
|
+
"@vint.tri/report_gen_mcp@1.0.9"
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## How to Apply the Fix
|
|
118
|
+
|
|
119
|
+
1. Open Claude Desktop
|
|
120
|
+
2. Go to Settings → Extensions
|
|
121
|
+
3. Add or update the `report_gen_mcp` configuration with the correct settings above
|
|
122
|
+
4. Ensure `isActive` is set to `true`
|
|
123
|
+
5. Restart Claude Desktop
|
|
124
|
+
|
|
125
|
+
## Testing the Integration
|
|
126
|
+
|
|
127
|
+
Run the verification script to confirm everything is working:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
node verify-claude-integration.js
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Version History
|
|
134
|
+
|
|
135
|
+
- 1.0.9: Fixed Claude Desktop integration issues, improved error handling
|
|
136
|
+
- 1.0.8: Enhanced chart customization options
|
|
137
|
+
- 1.0.7: Initial public release with full feature set
|
|
138
|
+
|
|
139
|
+
## Files Modified/Added for Fix
|
|
140
|
+
|
|
141
|
+
1. `src/index.ts` - Added `mcp:list-tools` method implementation
|
|
142
|
+
2. `package.json` - Updated version to 1.0.9
|
|
143
|
+
3. `CLAUDE_DESKTOP_FIX_INSTRUCTIONS.md` - Created fix instructions
|
|
144
|
+
4. `CLAUDE_DESKTOP_README.md` - Created Claude-specific documentation
|
|
145
|
+
5. `README.md` - Updated general documentation
|
|
146
|
+
6. `verify-claude-integration.js` - Created verification script
|
|
147
|
+
7. `test-claude-full-functionality.js` - Created comprehensive test
|
|
148
|
+
8. `test-local-installed.js` - Created local installation test
|
|
149
|
+
|
|
150
|
+
## Success Criteria
|
|
151
|
+
|
|
152
|
+
The fix is successful when:
|
|
153
|
+
1. Claude Desktop shows the tool as active (`isActive: true`)
|
|
154
|
+
2. The `mcp:list-tools -32001` error is resolved
|
|
155
|
+
3. Claude can successfully call the `generate-report` and `health` methods
|
|
156
|
+
4. Reports are generated with embedded charts as expected
|
package/CLAUDE_DESKTOP_README.md
CHANGED
|
@@ -17,7 +17,7 @@ Use this configuration in your Claude Desktop settings:
|
|
|
17
17
|
"tags": [],
|
|
18
18
|
"command": "npx",
|
|
19
19
|
"args": [
|
|
20
|
-
"@vint.tri/report_gen_mcp@1.0.
|
|
20
|
+
"@vint.tri/report_gen_mcp@1.0.9"
|
|
21
21
|
]
|
|
22
22
|
}
|
|
23
23
|
}
|
|
@@ -84,5 +84,5 @@ Response:
|
|
|
84
84
|
|
|
85
85
|
- Make sure `isActive` is set to `true`
|
|
86
86
|
- The tool works with `npx -y` for temporary installation
|
|
87
|
-
- Specify the version (`@1.0.
|
|
87
|
+
- Specify the version (`@1.0.9`) to ensure compatibility
|
|
88
88
|
- The tool supports both server mode (with commands) and stdio mode (for Claude Desktop)
|
package/README.md
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# Report Generator MCP Tool
|
|
2
|
+
|
|
3
|
+
A powerful CLI tool for generating HTML reports with embedded charts, designed to work seamlessly with Claude Desktop as an MCP (Model Context Protocol) extension.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- Generate professional HTML reports from Markdown documents
|
|
8
|
+
- Embed customizable charts (bar, line, pie) directly in reports
|
|
9
|
+
- Dual operation modes:
|
|
10
|
+
- Command-line interface for direct usage
|
|
11
|
+
- Stdio mode for Claude Desktop integration
|
|
12
|
+
- Full MCP compliance for seamless Claude Desktop integration
|
|
13
|
+
- TypeScript implementation with comprehensive type safety
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
### Global Installation (Recommended)
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install -g @vint.tri/report_gen_mcp@1.0.9
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Direct Execution with npx
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npx @vint.tri/report_gen_mcp@1.0.9
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Usage
|
|
30
|
+
|
|
31
|
+
### Command Line Interface
|
|
32
|
+
|
|
33
|
+
#### Start Server Mode
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
report_gen_mcp start-server
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Starts an HTTP server for generating reports via REST API.
|
|
40
|
+
|
|
41
|
+
#### Generate Report Directly
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
report_gen_mcp generate \
|
|
45
|
+
--document "path/to/document.md" \
|
|
46
|
+
--charts '{"chart1":{"type":"bar","config":{...}}}' \
|
|
47
|
+
--output "report.html"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Generates a report directly from command line arguments.
|
|
51
|
+
|
|
52
|
+
### Claude Desktop Integration
|
|
53
|
+
|
|
54
|
+
To use this tool with Claude Desktop, add the following configuration to your Claude Desktop settings:
|
|
55
|
+
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"report_gen_mcp": {
|
|
59
|
+
"name": "report_gen_mcp",
|
|
60
|
+
"type": "stdio",
|
|
61
|
+
"isActive": true,
|
|
62
|
+
"registryUrl": "",
|
|
63
|
+
"longRunning": false,
|
|
64
|
+
"tags": [],
|
|
65
|
+
"command": "npx",
|
|
66
|
+
"args": [
|
|
67
|
+
"@vint.tri/report_gen_mcp@1.0.9"
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Once configured, Claude can generate reports by sending requests with the following format:
|
|
74
|
+
|
|
75
|
+
```json
|
|
76
|
+
{
|
|
77
|
+
"method": "generate-report",
|
|
78
|
+
"params": {
|
|
79
|
+
"document": "# Sales Report\n\n[[chart:salesChart]]",
|
|
80
|
+
"charts": {
|
|
81
|
+
"salesChart": {
|
|
82
|
+
"type": "bar",
|
|
83
|
+
"config": {
|
|
84
|
+
"labels": ["Jan", "Feb", "Mar"],
|
|
85
|
+
"datasets": [{
|
|
86
|
+
"label": "Sales",
|
|
87
|
+
"data": [100, 150, 200]
|
|
88
|
+
}]
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"outputFile": "sales-report.html"
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Health Check
|
|
98
|
+
|
|
99
|
+
To verify the tool is working correctly:
|
|
100
|
+
|
|
101
|
+
```json
|
|
102
|
+
{
|
|
103
|
+
"method": "health"
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Expected response:
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"status": "ok"
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Development
|
|
115
|
+
|
|
116
|
+
### Building the Project
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
npm run build
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Running Tests
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
npm test
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## API Reference
|
|
129
|
+
|
|
130
|
+
### Methods
|
|
131
|
+
|
|
132
|
+
1. `generate-report`: Creates an HTML report with embedded charts
|
|
133
|
+
2. `health`: Checks if the tool is running correctly
|
|
134
|
+
3. `mcp:list-tools`: Returns available tools (used by Claude Desktop)
|
|
135
|
+
|
|
136
|
+
### Method Details
|
|
137
|
+
|
|
138
|
+
#### generate-report
|
|
139
|
+
|
|
140
|
+
**Parameters:**
|
|
141
|
+
- `document` (string): Markdown document with chart placeholders `[[chart:id]]`
|
|
142
|
+
- `charts` (object): Chart configurations mapped by ID
|
|
143
|
+
- `type` (string): Chart type ("bar", "line", or "pie")
|
|
144
|
+
- `config` (object): Chart.js configuration object
|
|
145
|
+
- `outputFile` (string, optional): Output HTML file path (defaults to "report.html")
|
|
146
|
+
|
|
147
|
+
**Response:**
|
|
148
|
+
```json
|
|
149
|
+
{
|
|
150
|
+
"success": true,
|
|
151
|
+
"filePath": "/absolute/path/to/report.html",
|
|
152
|
+
"message": "Report generated successfully"
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
#### health
|
|
157
|
+
|
|
158
|
+
**Response:**
|
|
159
|
+
```json
|
|
160
|
+
{
|
|
161
|
+
"status": "ok"
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Troubleshooting
|
|
166
|
+
|
|
167
|
+
### Common Issues
|
|
168
|
+
|
|
169
|
+
1. **Tool appears inactive in Claude Desktop**: Ensure `isActive` is set to `true` in the configuration
|
|
170
|
+
2. **mcp:list-tools -32001 error**: Verify the tool is properly installed and the configuration is correct
|
|
171
|
+
3. **Report generation fails**: Check that chart configurations are valid and file paths are accessible
|
|
172
|
+
|
|
173
|
+
### Verification
|
|
174
|
+
|
|
175
|
+
Run the included verification script to test all functionality:
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
node verify-claude-integration.js
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Version History
|
|
182
|
+
|
|
183
|
+
- 1.0.9: Fixed Claude Desktop integration issues, improved error handling
|
|
184
|
+
- 1.0.8: Enhanced chart customization options
|
|
185
|
+
- 1.0.7: Initial public release with full feature set
|
|
186
|
+
|
|
187
|
+
## License
|
|
188
|
+
|
|
189
|
+
MIT
|
|
@@ -6,7 +6,7 @@ console.log('🎭 Simulating Claude Desktop interaction...\n');
|
|
|
6
6
|
async function simulateListTools() {
|
|
7
7
|
console.log('1️⃣ Simulating mcp:list-tools call...');
|
|
8
8
|
|
|
9
|
-
const child = spawn('npx', ['-y', '@vint.tri/report_gen_mcp@1.0.
|
|
9
|
+
const child = spawn('npx', ['-y', '@vint.tri/report_gen_mcp@1.0.9'], {
|
|
10
10
|
stdio: ['pipe', 'pipe', 'pipe']
|
|
11
11
|
});
|
|
12
12
|
|
|
@@ -74,7 +74,7 @@ async function simulateListTools() {
|
|
|
74
74
|
async function simulateHealthCheck() {
|
|
75
75
|
console.log('\n2️⃣ Simulating health check call...');
|
|
76
76
|
|
|
77
|
-
const child = spawn('npx', ['-y', '@vint.tri/report_gen_mcp@1.0.
|
|
77
|
+
const child = spawn('npx', ['-y', '@vint.tri/report_gen_mcp@1.0.9'], {
|
|
78
78
|
stdio: ['pipe', 'pipe', 'pipe']
|
|
79
79
|
});
|
|
80
80
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
<title>Report</title>
|
|
7
|
+
<style> body { font-family: Arial, sans-serif; } img { max-width: 100%; } </style>
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<h1>CLI Test Report\n\nThis is a test report with a chart:\n\n<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAABmJLR0QA/wD/AP+gvaeTAAAcw0lEQVR4nO3de5CdZ33Y8d9zznrli2xLBl8kU0hwIWm51AMBwgDlYqaEpJMpLW5IWwfZ1r5HtasxUBqYhCRLCmFI0npaYXv33fWl0CYTNGRacBsKZaAQ0nCNy4AzUIZCGksG25LvkvbyPv3Dlme9I9sr7PM7u0efz8yZ0b7nnD2//efRfPc5z9kIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgNXKqAcAYM3OiIjTRj3E47g3Ih4Y9RAArG8Tox4AgPF3ySWXnLZ58+bJiIiTTz758NVXX31o1DMBMBp2QAA2jg27A9I0zQ0R8aaIOBARp0ZEV2v9k8nJyXddc801dz3eN52amnp9RPTn5ub++1M9MAD5eqMeAIATQ631Q23bXtC27bbFxcULSylbFhcXPxFP8MuwUsorSymvShoTgCHzFiwA0t144413NE1zeUT81dTU1Mvn5ub+bDAYXB4Rb621bomIr2zatOntCwsL/6TWeklElKZpTm3b9h1N07w2In41Is6PiO/XWt85Nzf3nRH+OAAcBzsgAIxE27b3lFJujYjnNU3zylrrO0spV0XEG2qtf+Pw4cOXLi8v3xwR/yMiPtvv92cvu+yy0yNib0Rc3ev1Xl9K+XYp5bdH+XMAcHwECAAj03Xd4VLKwuLi4reXl5d/7qSTTrq1lHJOr9frl1LOnp+f/+uI2B8R+6+77rpvn3nmmUu11lcfPHjwM4uLi2fUWk8upZw96p8DgLXzFiwARmJ6erq3b9++59Rav9/r9U7t9/vzCwsLvVrrt0spDx7rOQcPHqyTk5Pv2rp163Mj4taIWMidGoAnyw4IACNx22237YiIyc2bN3+53++/q9b6tdnZ2Yvatr2i1vrdYz1n06ZN/zgintm27cvbtr2slPLZ1KEBeNJ8DC/AxrGhP4a3lPKsiPhUrbVExIsi4vUR8Za2bT/VNM0HIuLlpZTfrbU+PyLeFhFfmpiYuGRpaWkQEb9YSvn9rutKKWVPRFxVSnlarfWqiNjU6/VeNzMzc1vKTwnAk2IHBIChK6X8t67rvtJ13dZSykSt9RMnnXTSc9q2/VRExKFDh94XEZ+stf58RBzouu6iUsoPSimbFhYWro+I/1xr3T43N/fxUsp0rfUNtdazJiYmfqGU8vGu684d6Q8IwJrZAQHYODbsDggAAAAAAAAAAAAAAAAAAAAAAAAAwOg86mN4m6b56YiYiYifioi7a63vmpub+/jD930wIt684uE3t217VdqkAADAhrf6DxH+UUT8Ydu223q93s5Syn9smubpERG11tfUWv9Rv9//mX6//zOHDh36tfxxAQCAjeyRHZArr7zyaYuLi9/bvn371unp6S4iomma79Rad5x//vl/vm/fvtu2b99+/r59+05v2/ae0Y0MAABsVI/5l9B37dr1/K7rPt/v9y9YWlo6u5TypxHxo4g4NSIWuq77p/Pz819LmxQAANjwJo51sWmaX+i6bqbWuuu666472DTNuRExs2nTpvfv2bPnyNTU1FW9Xu8/RMTzVz11S0Sc8jivd25E/PCpGR3YgKwBwHpbB06LiM2jHgKGqMZDmwjrxqN2QN7+9refcv/998+UUp7Tdd2u+fn5bxzrSU3TnBQRh/r9/tnXXXfdweN4vQsj4pYnMS+wsW2LiP2jHgIYqfW2DmyOiNNHPQQMUY2I20c9xEqPOoR+//33f7iUcvv27dtfuTI+BoPBpU3T/KsVD90WEct33nnnA1mDAgAAG98jOyBTU1PPLaXcUkp5R0R0R69PTEx87MiRI+f0er3PR8T7I+L7EfGrEfHZtm1//Thfzw4InNjW228+gXzrbR2wA8K4W9c7ICfVWv9913U/0XXds4/eDh06tGl+fv4vI+JV8dD7Nl8dEb/7Y8QHAABwgnvMT8EaEjsgcGJbb7/5BPKtt3XADgjjbl3vgAAAAAyVAAEAANIIEAAAII0AAQAA0ggQAAAgjQABAADSCBAAACCNAAEAANIIEAAAII0AAQAA0ggQAAAgjQABAADSCBAAACCNAAEAANIIEAAAII0AAQAA0ggQAAAgjQABAADSCBAAACCNAAEAANIIEAAAII0AAQAA0ggQAAAgjQABAADSCBAAACCNAAEAANIIEAAAII0AAQAA0ggQAAAgjQABAADSCBAAACCNAAEAANIIEAAAII0AAQAA0ggQAAAgjQABAADSCBAAACCNAAEAANIIEAAAII0AAQAA0ggQAAAgjQABAADSCBAAACCNAAEAANIIEAAAII0AAQAA0ggQAAAgjQABAADSCBAAACCNAAEAANIIEAAAII0AAQAA0ggQAAAgjQABAADSCBAAACCNAAEAANIIEAAAII0AAQAA0ggQAAAgjQABAADSCBAAACCNAAEAANIIEAAAII0AAQAA0ggQAAAgjQABAADSCBAAACCNAAEAANIIEAAAII0AAQAA0ggQAAAgjQABAADSCBAAACCNAAEAANIIEAAAII0AAQAA0ggQAAAgjQABAADSCBAAACCNAAEAANIIEAAAII0AAQAA0ggQAAAgjQABAADSCBAAACCNAAEAANIIEAAAII0AAQAA0ggQAAAgjQABAADSCBAAACCNAAEAANIIEAAAII0AAQAA0ggQAAAgjQABAADSCBAAACDNMQPkkksuOe2xnvB49wEAADyesvKLnTt3vrjX690UEadGxCmllHfPzs5+OCJiMBj8Sq31gxFxOCLu7/V6vzwzM/PN43y9CyPilqdgbmBj2hYR+0c9BDBS620d2BwRp496CBiiGhG3j3qIlVbugJRer/cHEfHbbdte0Ov1/l6t9dorrrjivKZpttVaP1RKuaht25+MiOu7rpsd0cwAAMAG9UiAXHnllWdFxKa2bfdGRDy8u7F/eXn5JyPitbXWP5+dnb314Ye3EfGSHTt2bEmfGAAA2LAmjv7jmmuuuSsifuLo1zt37vzZiNgyOTn5rSNHjryylPL/jt7Xtu2DTdMcnJiY2BYRd6/4flsi4pQneM1tT8nkwEZ07qgHAEZuva0Dp8VDb8OCcVVj1bGLUZs41sWmad4aEb9Ta/1ne/bsuXdqamqilNKtethyr9db/fy749FBstq5sb7e9wnkswYA62kdcAaEcbfuzoA8KiCapjkzIv5TRESv13vFzMzM9yMiSin3RsSZKx5aIuLM5eXle5PmBAAAxsCjPoa3lPJHpZQvtG3794/GR0RE13XfiIiXXXzxxZMRETt37nxRRBy59957/zp1WgAAYEN75P1gu3bten7XdV+KiH9dSqmPPKCUG++66667zjrrrD+ttX6v1vrpUso7IuJjbdu+9zhfz8fwwoltvX38JpBvva0D3oLFuFt3b8F6ZAdkaWnpgVLK20spByLi4NFbv99f3rt373Kt9aKI+Hwp5dm11vf8GPEBAACc4LJPxNsBgRPbevvNJ5Bvva0DdkAYd+t3BwQAAGDYBAgAAJBGgAAAAGkECAAAkEaAAAAAaQQIAACQRoAAAABpBAgAAJBG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IvavbTRgTK2nNaDEQwszjLN7IuLBUQ+xynpaBzZHxOmjHgKGqEbE7aMeYqW1fgzvwYh4+tEvpqenJyJi68PXAQAA1mStAfKVUsordu/efUZExP79+18bEXfOzMzsG95oAADAuFlTgLRt+/WI+MyRI0c+ORgMfq/WekOt9T3hrQsAAMBxOGaA9Hq9m0sp/2bltbZtf7mU8u6I+Hq/33/93NzcTRkDAgAA4yP7RPyFEXFL8msC68e2WF+HT0tEnDfqIWDI1tsh9PW2DjiEzrjbsIfQAQAAnjQBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQJqJtT7wiiuu2LywsPBTR7/u9Xq1bduvD2csAABgHK05QBYXF3++1+t9MCK+GxFRSlmOiJ8b1mAAAMD4WXOAlFJeWEr5wOzsbDvMgQAAgPG15gCJiBd2XfcXU1NTOyJi//nnn//p6enpbkhzAQAAY6is9YFN03y/lPJXtdYvRsTrI+LA9u3b37gqQrZExCmP823OjYgf/nijDsVJ4SA+461GxMKoh1hhva0BJSLOGfUQMGT3RsShUQ+xwnpbB06LiM2jHgKGqEbEj0Y9xErHswNy6bZt274wPT29dPHFF//W1q1bv7V///6LIuLTKx5z98O3x3JuROz/cQYdkjMj4tRRDwFDtBQRd4x6iFXW0xpQ4qGFGcbZPRHx4KiHWGU9rQObI+L0UQ8BQ1Qj4vZRD7HSmn77v2PHjpN7vd53pqenlyIi9u7duxAR/zsiLhjmcAAAwHhZU4D0er2zuq775uWXX35WRETTNKdGxEu7rvvGUKcDAADGypoC5IYbbthXa/1Qv9//6mAwuDEivhYRH52bm/uz4Y4HAACMkzUfwJ6bm/uNXq/3uoj4g4h4Q9u27xzeWAAAwDha86dgPUUujIhbkl/z8TiEzrhbb4fQt8X6OnxaIuK8UQ8BQ7beDqGvt3XAIXTG3cY8hA4AAPBUECAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkESAAAEAaAQIAAKQRIAAAQBoBAgAApBEgAABAGgECAACkmTieB09NTT231+u9dHl5ed8znvGMz01PT3fDGgwAABg/a94BmZqaeksp5XO11hf1er333XbbbX8cEWWIswEAAGNmzQFSSnlfKeWtbdu+4+DBg68ppbx4MBj87DCHAwAAxsuaAuTKK698WkQ8q9b6uYiIvXv3LpRS/met9SXDHA4AABgvazoDcvjw4a39fv++tm0Xj17ruu5AKeWsVQ/dEhGnPMG3u/A4Zxwmh/A5EZw/6gFWOXfUA6xiHWDcnRcRddRDrLKe1gFrACeC80Y9wEprCpB+v18jor/yWq/X69daVy9odz98ezz71z4eMGa2hTUATnTWATjBran6N23adEdEbL7ssstOP3qt1ro9In40rMEAAIDxs6YA2bNnz70R8Y1+v39xRMSuXbvOiYjX9Hq9LwxzOAAAYLys+e+AlFKuiog/HAwGb+q67gUR0c7MzHxzeKMBAADj5rj+jkfTNKeWUp7T7/d/eO21197+Y7ye933Cic0aAFgHgFTbRj0AMFLWAMA6ACc4Hz0HAACkyQ6QB5NfD1hfrAGAdQAAAAAAAAAAAAAAAAAAAACAhxzXHyKE4zU1NfW8Usqmtm2/fvRa0zQn1Vpfvby8/KUbbrjhvlHOBwxX0zRn1lpfsnnz5i9effXVh1bd99qu626dn5//4ajmA4Zv9+7dmw4fPvyqY913+PDh//WRj3zkgeyZGC1/B4ShqrWeHBGfHwwGf3vF5V+PiOn77rvPRzHCmNu+fft9pZT3PvDAA7+58vrU1NRbIuKmruusAzDmHnzwwdNKKc2q22+VUj512mmnnT3q+chnB4ShGwwGvxMRr922bdsr9u/f/4Ja62eXl5dfev3113931LMBw7dz586/1ev1vtzr9f7uzMzMX+zevfuMI0eO3FpK+eezs7OfGPV8QK4dO3acPDk5+fmI+GTbtr/5hE9g7NgBYegOHDgwXWs9dd++fVdExPWllHeLDzhxzM/P/2Wt9fe6rpu9+OKL+4cPH35frfUz4gNOTJOTk9eUUg4cPHjwvaOehdEQIAzd3r17F3q93o6I+Ldd1x2YnZ2dG/VMQK5SygciYtPWrVuvLaW8eXJy8h2jngnI1zTN2yLiVUeOHHnL3r17l0c9D6MhQEhRa31mRCyWUs7fsWPHplHPA+Rq23ax67rLIqKJiHdec801d416JiBX0zSvjIjfqLW+6aabbrp71PMwOgKEoWua5um11pla65sjYt/k5OT7Rj0TkG9+fv5rEdHVWr866lmAXE3TPDMiPhYRu+bm5r416nkYLQHC0JVSromI/zI3N/cnXdc1EdFMTU29etRzAQDDt2PHjpPjofiYbdt276jnYfQmRj0A420wGPxSrfVlS0tLL4iImJ+f/7+DwWA6Im687LLL/o6/AwIA423Tpk1X1VovjIgfNE3z0ZX3dV33wYd3RzmBCBCG7c6u6964MjQOHDjw77Zs2fKDycnJp0WEAIETSCnll5aWlvaPeg4gT9d1N5dSvvcY91kPAAAAAAAAAAAAAAAAAAAA4ET2/wF/wE0VnSkWbwAAAABJRU5ErkJggg==" alt="Chart" /></h1>
|
|
11
|
+
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|
|
14
|
+
|
package/debug-method.js
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
const { spawn } = require('child_process');
|
|
2
|
+
|
|
3
|
+
console.log('Debugging method handling...\n');
|
|
4
|
+
|
|
5
|
+
async function testMethod(methodName) {
|
|
6
|
+
console.log(`Testing method: ${methodName}`);
|
|
7
|
+
|
|
8
|
+
const child = spawn('npx', ['-y', '@vint.tri/report_gen_mcp@1.0.9'], {
|
|
9
|
+
stdio: ['pipe', 'pipe', 'pipe']
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
let stdoutData = '';
|
|
13
|
+
let stderrData = '';
|
|
14
|
+
|
|
15
|
+
child.stdout.on('data', (data) => {
|
|
16
|
+
stdoutData += data.toString();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
child.stderr.on('data', (data) => {
|
|
20
|
+
stderrData += data.toString();
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
// Promise to handle the response
|
|
24
|
+
const responsePromise = new Promise((resolve) => {
|
|
25
|
+
child.on('close', (code) => {
|
|
26
|
+
resolve({ code, stdout: stdoutData, stderr: stderrData });
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
// Send request with newline
|
|
31
|
+
const request = {
|
|
32
|
+
method: methodName
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
console.log(`Sending: ${JSON.stringify(request)}\\n`);
|
|
36
|
+
child.stdin.write(JSON.stringify(request) + '\\n');
|
|
37
|
+
child.stdin.end();
|
|
38
|
+
|
|
39
|
+
// Wait for response
|
|
40
|
+
const response = await responsePromise;
|
|
41
|
+
|
|
42
|
+
console.log(`Exit code: ${response.code}`);
|
|
43
|
+
console.log(`STDOUT: ${response.stdout || '(no stdout)'}`);
|
|
44
|
+
if (response.stderr) {
|
|
45
|
+
console.log(`STDERR: ${response.stderr}`);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Try to parse JSON response
|
|
49
|
+
if (response.stdout && response.stdout.trim()) {
|
|
50
|
+
try {
|
|
51
|
+
const result = JSON.parse(response.stdout.trim());
|
|
52
|
+
console.log(`Parsed:`, result);
|
|
53
|
+
} catch (e) {
|
|
54
|
+
console.log(`JSON parse error: ${e.message}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
async function runDebug() {
|
|
60
|
+
await testMethod('mcp:list-tools');
|
|
61
|
+
console.log('---');
|
|
62
|
+
await testMethod('health');
|
|
63
|
+
console.log('---');
|
|
64
|
+
await testMethod('generate-report');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
runDebug();
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
const { spawn } = require('child_process');
|
|
2
|
+
|
|
3
|
+
console.log('Detailed debug test...\n');
|
|
4
|
+
|
|
5
|
+
const child = spawn('npx', ['-y', '@vint.tri/report_gen_mcp@1.0.9'], {
|
|
6
|
+
stdio: ['pipe', 'pipe', 'pipe']
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
let stdoutData = '';
|
|
10
|
+
let stderrData = '';
|
|
11
|
+
|
|
12
|
+
child.stdout.on('data', (data) => {
|
|
13
|
+
stdoutData += data.toString();
|
|
14
|
+
console.log('STDOUT chunk:', JSON.stringify(data.toString()));
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
child.stderr.on('data', (data) => {
|
|
18
|
+
stderrData += data.toString();
|
|
19
|
+
console.log('STDERR chunk:', JSON.stringify(data.toString()));
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
child.on('close', (code) => {
|
|
23
|
+
console.log('Process closed with code:', code);
|
|
24
|
+
console.log('Final STDOUT:', JSON.stringify(stdoutData));
|
|
25
|
+
console.log('Final STDERR:', JSON.stringify(stderrData));
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
// Send mcp:list-tools request with explicit newline and end
|
|
29
|
+
const request = {
|
|
30
|
+
method: 'mcp:list-tools'
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
console.log('Sending:', JSON.stringify(request));
|
|
34
|
+
child.stdin.write(JSON.stringify(request));
|
|
35
|
+
child.stdin.write('\n'); // Explicit newline
|
|
36
|
+
child.stdin.end(); // Explicit end
|