@m00nsolutions/mcp-server 1.0.1 → 1.2.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/README.md +115 -35
- package/dist/api-client.d.ts +30 -0
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +28 -0
- package/dist/api-client.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +53 -5
- package/dist/server.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -6,9 +6,14 @@ MCP (Model Context Protocol) server for M00n Report. Enables AI assistants like
|
|
|
6
6
|
|
|
7
7
|
- 📊 **Query test trends** - Pass rates, failing tests, flaky tests over time
|
|
8
8
|
- 📈 **Get launch statistics** - Test run summaries with filtering
|
|
9
|
-
- 📁 **
|
|
9
|
+
- 📁 **Manage test cases** - Create, update, delete, and organize test cases
|
|
10
|
+
- 🗂️ **Organize with folders** - Full folder/suite hierarchy management
|
|
11
|
+
- 📋 **Test collections** - Manage manual test runs and executions
|
|
12
|
+
- 🚀 **Release management** - Track releases with linked test runs
|
|
10
13
|
- 🔒 **Secure** - Uses your MCP key with your permissions
|
|
11
14
|
- 🏢 **Self-hosted ready** - Works with self-hosted M00n Report instances
|
|
15
|
+
- 🏷️ **Tool annotations** - MCP 2025 spec compliant with safety hints
|
|
16
|
+
- 📖 **Resources** - Read-only data access for summaries and reports (NEW!)
|
|
12
17
|
|
|
13
18
|
## Quick Start
|
|
14
19
|
|
|
@@ -57,41 +62,116 @@ Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_
|
|
|
57
62
|
}
|
|
58
63
|
```
|
|
59
64
|
|
|
60
|
-
## Available
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
**
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
65
|
+
## Available Resources (8)
|
|
66
|
+
|
|
67
|
+
Resources provide **read-only data** that AI clients can access directly without tool calls. They're perfect for summaries, reports, and structured data.
|
|
68
|
+
|
|
69
|
+
| Resource URI | Name | Format | Description |
|
|
70
|
+
|--------------|------|--------|-------------|
|
|
71
|
+
| `m00n://projects` | All Projects | JSON | List of all accessible projects with counts |
|
|
72
|
+
| `m00n://projects/{projectId}/summary` | Project Health | JSON | Pass rates, flaky count, latest run info |
|
|
73
|
+
| `m00n://projects/{projectId}/flaky-tests` | Flaky Tests | Markdown | Flaky tests report with patterns |
|
|
74
|
+
| `m00n://projects/{projectId}/failing-tests` | Failing Tests | Markdown | Currently failing tests from latest run |
|
|
75
|
+
| `m00n://projects/{projectId}/folder-tree` | Folder Tree | JSON | Hierarchical folder/suite structure |
|
|
76
|
+
| `m00n://launches/{launchId}/report` | Launch Report | Markdown | Full test run report with failures |
|
|
77
|
+
| `m00n://cases/{caseId}/content` | Test Case | Markdown | Test case with steps and metadata |
|
|
78
|
+
| `m00n://releases/{releaseId}/summary` | Release Summary | JSON | Release health with test run stats |
|
|
79
|
+
|
|
80
|
+
**Example prompts using resources:**
|
|
81
|
+
- "Show me the project health summary"
|
|
82
|
+
- "What's in the flaky tests report for project X?"
|
|
83
|
+
- "Get the full launch report for the latest run"
|
|
84
|
+
- "Show me the test case TC-001 content"
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Available Tools (40+)
|
|
89
|
+
|
|
90
|
+
All tools include **MCP 2025 annotations** to help AI clients understand tool safety characteristics.
|
|
91
|
+
|
|
92
|
+
### Analytics Tools (Read-Only)
|
|
93
|
+
| Tool | Description |
|
|
94
|
+
|------|-------------|
|
|
95
|
+
| `list_projects` | List all accessible projects |
|
|
96
|
+
| `get_launches_trends` | Get pass rate, flaky, failing test trends |
|
|
97
|
+
| `get_launches_statistics` | Get test run summaries with filtering |
|
|
98
|
+
| `get_launch_tests` | Get all tests from a specific run |
|
|
99
|
+
| `get_test_history` | Get execution history for a test |
|
|
100
|
+
| `search_tests` | Search tests by title or file path |
|
|
101
|
+
|
|
102
|
+
### Test Case Management
|
|
103
|
+
| Tool | Annotations | Description |
|
|
104
|
+
|------|-------------|-------------|
|
|
105
|
+
| `list_test_cases` | 🔒 read-only | List test cases with filtering |
|
|
106
|
+
| `get_test_case` | 🔒 read-only | Get full test case details |
|
|
107
|
+
| `create_test_case` | ✏️ create | Create a new test case |
|
|
108
|
+
| `update_test_case` | ✏️ update | Update an existing test case |
|
|
109
|
+
| `delete_test_case` | ⚠️ destructive | Archive a test case |
|
|
110
|
+
| `move_test_case` | ✏️ update | Move to different folder |
|
|
111
|
+
| `link_autotest_to_case` | 🔗 link | Link automated test to case |
|
|
112
|
+
|
|
113
|
+
### Folder Management
|
|
114
|
+
| Tool | Annotations | Description |
|
|
115
|
+
|------|-------------|-------------|
|
|
116
|
+
| `list_folders` | 🔒 read-only | List all folders/suites |
|
|
117
|
+
| `get_folder` | 🔒 read-only | Get folder details |
|
|
118
|
+
| `create_folder` | ✏️ create | Create folder or suite |
|
|
119
|
+
| `update_folder` | ✏️ update | Rename or move folder |
|
|
120
|
+
| `delete_folder` | ⚠️ destructive | Archive folder and contents |
|
|
121
|
+
| `get_folder_statistics` | 🔒 read-only | Get folder statistics |
|
|
122
|
+
|
|
123
|
+
### Test Collections (Manual Runs)
|
|
124
|
+
| Tool | Annotations | Description |
|
|
125
|
+
|------|-------------|-------------|
|
|
126
|
+
| `list_test_collections` | 🔒 read-only | List manual test runs |
|
|
127
|
+
| `get_test_collection` | 🔒 read-only | Get collection with execution status |
|
|
128
|
+
| `create_test_collection` | ✏️ create | Create a manual test run |
|
|
129
|
+
| `update_test_collection` | ✏️ update | Update collection metadata |
|
|
130
|
+
| `add_cases_to_collection` | 🔗 link | Add cases to collection |
|
|
131
|
+
| `remove_cases_from_collection` | ⚠️ remove | Remove cases from collection |
|
|
132
|
+
| `delete_test_collection` | ⚠️ destructive | Archive collection |
|
|
133
|
+
|
|
134
|
+
### Release Management
|
|
135
|
+
| Tool | Annotations | Description |
|
|
136
|
+
|------|-------------|-------------|
|
|
137
|
+
| `list_releases` | 🔒 read-only | List releases with stats |
|
|
138
|
+
| `get_release` | 🔒 read-only | Get release with test runs |
|
|
139
|
+
| `create_release` | ✏️ create | Create a new release |
|
|
140
|
+
| `update_release` | ✏️ update | Update release metadata |
|
|
141
|
+
| `delete_release` | ⚠️ destructive | Archive release |
|
|
142
|
+
| `link_runs_to_release` | 🔗 link | Link manual runs to release |
|
|
143
|
+
| `link_launches_to_release` | 🔗 link | Link automated runs to release |
|
|
144
|
+
| `unlink_run_from_release` | ⚠️ remove | Remove run from release |
|
|
145
|
+
| `unlink_launch_from_release` | ⚠️ remove | Remove launch from release |
|
|
146
|
+
|
|
147
|
+
## Tool Annotations
|
|
148
|
+
|
|
149
|
+
All tools include MCP 2025 spec-compliant annotations that help AI assistants understand tool behavior:
|
|
150
|
+
|
|
151
|
+
| Annotation | Meaning |
|
|
152
|
+
|------------|---------|
|
|
153
|
+
| `readOnlyHint: true` | 🔒 Tool only reads data, no side effects |
|
|
154
|
+
| `destructiveHint: true` | ⚠️ Tool may delete or archive data |
|
|
155
|
+
| `idempotentHint: true` | 🔄 Safe to call repeatedly with same args |
|
|
156
|
+
| `openWorldHint: false` | 📦 Tool operates only on known entities |
|
|
157
|
+
|
|
158
|
+
**Example annotation:**
|
|
159
|
+
```json
|
|
160
|
+
{
|
|
161
|
+
"name": "delete_test_case",
|
|
162
|
+
"annotations": {
|
|
163
|
+
"readOnlyHint": false,
|
|
164
|
+
"destructiveHint": true,
|
|
165
|
+
"idempotentHint": true,
|
|
166
|
+
"openWorldHint": false
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
```
|
|
93
170
|
|
|
94
|
-
|
|
171
|
+
AI assistants use these hints to:
|
|
172
|
+
- Warn users before executing destructive operations
|
|
173
|
+
- Batch read-only operations without confirmation
|
|
174
|
+
- Safely retry idempotent operations on failure
|
|
95
175
|
|
|
96
176
|
## Environment Variables
|
|
97
177
|
|
package/dist/api-client.d.ts
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
import { Config } from './config.js';
|
|
2
|
+
export interface ToolAnnotations {
|
|
3
|
+
/** When true, the tool does not modify any state */
|
|
4
|
+
readOnlyHint?: boolean;
|
|
5
|
+
/** When true, the tool may perform destructive updates */
|
|
6
|
+
destructiveHint?: boolean;
|
|
7
|
+
/** When true, calling repeatedly with same args has no additional effect */
|
|
8
|
+
idempotentHint?: boolean;
|
|
9
|
+
/** When true, tool interacts with external entities beyond its direct args */
|
|
10
|
+
openWorldHint?: boolean;
|
|
11
|
+
}
|
|
2
12
|
export interface Tool {
|
|
3
13
|
name: string;
|
|
4
14
|
description: string;
|
|
@@ -7,6 +17,7 @@ export interface Tool {
|
|
|
7
17
|
properties: Record<string, unknown>;
|
|
8
18
|
required?: string[];
|
|
9
19
|
};
|
|
20
|
+
annotations?: ToolAnnotations;
|
|
10
21
|
}
|
|
11
22
|
export interface HealthResponse {
|
|
12
23
|
status: string;
|
|
@@ -16,6 +27,17 @@ export interface HealthResponse {
|
|
|
16
27
|
export interface ToolCallResult {
|
|
17
28
|
[key: string]: any;
|
|
18
29
|
}
|
|
30
|
+
export interface ResourceTemplate {
|
|
31
|
+
uriTemplate: string;
|
|
32
|
+
name: string;
|
|
33
|
+
description: string;
|
|
34
|
+
mimeType: string;
|
|
35
|
+
}
|
|
36
|
+
export interface ResourceContent {
|
|
37
|
+
uri: string;
|
|
38
|
+
mimeType: string;
|
|
39
|
+
text: string;
|
|
40
|
+
}
|
|
19
41
|
export interface ApiError {
|
|
20
42
|
error: string;
|
|
21
43
|
message: string;
|
|
@@ -40,6 +62,14 @@ export declare class M00nApiClient {
|
|
|
40
62
|
* Execute a tool with given arguments
|
|
41
63
|
*/
|
|
42
64
|
callTool(name: string, args: Record<string, unknown>): Promise<ToolCallResult>;
|
|
65
|
+
/**
|
|
66
|
+
* Fetch available resource templates from API
|
|
67
|
+
*/
|
|
68
|
+
fetchResourceTemplates(): Promise<ResourceTemplate[]>;
|
|
69
|
+
/**
|
|
70
|
+
* Read a resource by URI
|
|
71
|
+
*/
|
|
72
|
+
readResource(uri: string): Promise<ResourceContent[]>;
|
|
43
73
|
/**
|
|
44
74
|
* Handle API errors with meaningful messages
|
|
45
75
|
*/
|
package/dist/api-client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAS,MAAM,aAAa,CAAC;AAI5C,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAS,MAAM,aAAa,CAAC;AAI5C,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0DAA0D;IAC1D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAGD,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAGD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD,MAAM,WAAW,cAAc;IAE7B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAGD,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAoB1B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC;IAU5C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAUnC;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAapF;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAU3D;;OAEG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAY3D;;OAEG;IACH,OAAO,CAAC,WAAW;CA2EpB"}
|
package/dist/api-client.js
CHANGED
|
@@ -75,6 +75,34 @@ export class M00nApiClient {
|
|
|
75
75
|
throw this.handleError(error, `tool call: ${name}`);
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Fetch available resource templates from API
|
|
80
|
+
*/
|
|
81
|
+
async fetchResourceTemplates() {
|
|
82
|
+
try {
|
|
83
|
+
debug(`Fetching resources from ${this.config.apiUrl}/api/mcp/resources`, this.config);
|
|
84
|
+
const response = await this.client.get('/api/mcp/resources');
|
|
85
|
+
return response.data.resourceTemplates;
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
throw this.handleError(error, 'fetch resources');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Read a resource by URI
|
|
93
|
+
*/
|
|
94
|
+
async readResource(uri) {
|
|
95
|
+
try {
|
|
96
|
+
debug(`Reading resource: ${uri}`, this.config);
|
|
97
|
+
const response = await this.client.get('/api/mcp/resources/read', {
|
|
98
|
+
params: { uri }
|
|
99
|
+
});
|
|
100
|
+
return response.data.contents;
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
throw this.handleError(error, `read resource: ${uri}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
78
106
|
/**
|
|
79
107
|
* Handle API errors with meaningful messages
|
|
80
108
|
*/
|
package/dist/api-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,WAAW;AACX,wCAAwC;AACxC,4CAA4C;AAC5C,+BAA+B;AAC/B,iCAAiC;AAEjC,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAU,KAAK,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,WAAW;AACX,wCAAwC;AACxC,4CAA4C;AAC5C,+BAA+B;AAC/B,iCAAiC;AAEjC,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAU,KAAK,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AA6DvC;;GAEG;AACH,MAAM,OAAO,aAAa;IAChB,MAAM,CAAgB;IACtB,MAAM,CAAS;IAEvB,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,2CAA2C;QAC3C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,MAAM,CAAC,MAAM;YACtB,OAAO,EAAE,MAAM,CAAC,SAAS;YACzB,OAAO,EAAE;gBACP,WAAW,EAAE,MAAM,CAAC,MAAM;gBAC1B,cAAc,EAAE,kBAAkB;gBAClC,YAAY,EAAE,mBAAmB,OAAO,EAAE;aAC3C;YACD,uEAAuE;YACvE,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC;gBAC1B,kBAAkB,EAAE,CAAC,MAAM,CAAC,WAAW;gBACvC,SAAS,EAAE,IAAI;aAChB,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,KAAK,CAAC,sBAAsB,IAAI,CAAC,MAAM,CAAC,MAAM,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAiB,aAAa,CAAC,CAAC;YACtE,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC;YACH,KAAK,CAAC,uBAAuB,IAAI,CAAC,MAAM,CAAC,MAAM,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAmC,gBAAgB,CAAC,CAAC;YAC3F,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,IAA6B;QACxD,IAAI,CAAC;YACH,KAAK,CAAC,iBAAiB,IAAI,eAAe,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAiB,qBAAqB,EAAE;gBAC7E,IAAI;gBACJ,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,sBAAsB;QAC1B,IAAI,CAAC;YACH,KAAK,CAAC,2BAA2B,IAAI,CAAC,MAAM,CAAC,MAAM,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACtF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAA2D,oBAAoB,CAAC,CAAC;YACvH,OAAO,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,IAAI,CAAC;YACH,KAAK,CAAC,qBAAqB,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAkC,yBAAyB,EAAE;gBACjG,MAAM,EAAE,EAAE,GAAG,EAAE;aAChB,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,kBAAkB,GAAG,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,KAAc,EAAE,OAAe;QACjD,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,KAA6B,CAAC;YAEjD,8BAA8B;YAC9B,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACzB,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBACvC,OAAO,IAAI,KAAK,CACd,wCAAwC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI;wBAC9D,6DAA6D,CAC9D,CAAC;gBACJ,CAAC;gBACD,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBACpC,OAAO,IAAI,KAAK,CACd,wCAAwC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI;wBAC9D,kCAAkC,CACnC,CAAC;gBACJ,CAAC;gBACD,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBAC1E,OAAO,IAAI,KAAK,CACd,wCAAwC;wBACxC,+DAA+D,CAChE,CAAC;gBACJ,CAAC;gBACD,IAAI,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC7F,OAAO,IAAI,KAAK,CACd,uCAAuC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI;wBAC7D,0DAA0D,CAC3D,CAAC;gBACJ,CAAC;gBACD,OAAO,IAAI,KAAK,CAAC,wBAAwB,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7E,CAAC;YAED,sBAAsB;YACtB,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;YAEtC,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,GAAG;oBACN,OAAO,IAAI,KAAK,CACd,qDAAqD;wBACrD,wEAAwE,CACzE,CAAC;gBACJ,KAAK,GAAG;oBACN,OAAO,IAAI,KAAK,CACd,kBAAkB,IAAI,EAAE,OAAO,IAAI,gDAAgD,EAAE,CACtF,CAAC;gBACJ,KAAK,GAAG;oBACN,OAAO,IAAI,KAAK,CACd,2BAA2B,OAAO,IAAI;wBACtC,6DAA6D,CAC9D,CAAC;gBACJ,KAAK,GAAG;oBACN,OAAO,IAAI,KAAK,CACd,+DAA+D,CAChE,CAAC;gBACJ,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG;oBACN,OAAO,IAAI,KAAK,CACd,iCAAiC,MAAM,MAAM,IAAI,EAAE,OAAO,IAAI,yBAAyB,EAAE,CAC1F,CAAC;gBACJ;oBACE,OAAO,IAAI,KAAK,CACd,cAAc,MAAM,YAAY,OAAO,KAAK,IAAI,EAAE,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,CAClF,CAAC;YACN,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,KAAK,CAAC,wBAAwB,OAAO,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;CACF"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,MAAM,EAAc,MAAM,aAAa,CAAC;AAGjD;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8KhE"}
|
package/dist/server.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
// server.ts - MCP Server setup and tool registration
|
|
1
|
+
// server.ts - MCP Server setup and tool/resource registration
|
|
2
2
|
//
|
|
3
3
|
// This module:
|
|
4
|
-
// 1. Fetches available tools from M00n Report API
|
|
4
|
+
// 1. Fetches available tools and resources from M00n Report API
|
|
5
5
|
// 2. Registers them with the MCP SDK
|
|
6
|
-
// 3. Handles tool invocations by proxying to the API
|
|
6
|
+
// 3. Handles tool invocations and resource reads by proxying to the API
|
|
7
7
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
8
8
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
9
|
-
import { CallToolRequestSchema, ListToolsRequestSchema, ErrorCode, McpError, } from '@modelcontextprotocol/sdk/types.js';
|
|
9
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, ListResourceTemplatesRequestSchema, ReadResourceRequestSchema, ErrorCode, McpError, } from '@modelcontextprotocol/sdk/types.js';
|
|
10
10
|
import { M00nApiClient } from './api-client.js';
|
|
11
11
|
import { log, debug } from './config.js';
|
|
12
12
|
import { VERSION, PACKAGE_NAME } from './version.js';
|
|
@@ -42,13 +42,25 @@ export async function createServer(config) {
|
|
|
42
42
|
if (tools.length === 0) {
|
|
43
43
|
throw new Error('No tools available from M00n Report API. Please check your API key permissions.');
|
|
44
44
|
}
|
|
45
|
-
// Step
|
|
45
|
+
// Step 2b: Fetch available resources
|
|
46
|
+
log('Fetching available resources...', config);
|
|
47
|
+
let resourceTemplates = [];
|
|
48
|
+
try {
|
|
49
|
+
resourceTemplates = await apiClient.fetchResourceTemplates();
|
|
50
|
+
log(`Loaded ${resourceTemplates.length} resource templates`, config);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
// Resources are optional - don't fail if not available
|
|
54
|
+
log('Resources not available (API may not support them yet)', config);
|
|
55
|
+
}
|
|
56
|
+
// Step 3: Create MCP server with tools and resources capabilities
|
|
46
57
|
const server = new Server({
|
|
47
58
|
name: PACKAGE_NAME,
|
|
48
59
|
version: VERSION,
|
|
49
60
|
}, {
|
|
50
61
|
capabilities: {
|
|
51
62
|
tools: {},
|
|
63
|
+
resources: resourceTemplates.length > 0 ? {} : undefined,
|
|
52
64
|
},
|
|
53
65
|
});
|
|
54
66
|
// Register list_tools handler
|
|
@@ -59,6 +71,8 @@ export async function createServer(config) {
|
|
|
59
71
|
name: tool.name,
|
|
60
72
|
description: tool.description,
|
|
61
73
|
inputSchema: tool.inputSchema,
|
|
74
|
+
// Include annotations if present (MCP 2025 spec)
|
|
75
|
+
...(tool.annotations && { annotations: tool.annotations }),
|
|
62
76
|
})),
|
|
63
77
|
};
|
|
64
78
|
});
|
|
@@ -98,6 +112,40 @@ export async function createServer(config) {
|
|
|
98
112
|
};
|
|
99
113
|
}
|
|
100
114
|
});
|
|
115
|
+
// Register list_resource_templates handler (if resources available)
|
|
116
|
+
if (resourceTemplates.length > 0) {
|
|
117
|
+
server.setRequestHandler(ListResourceTemplatesRequestSchema, async () => {
|
|
118
|
+
debug('Handling list_resource_templates request', config);
|
|
119
|
+
return {
|
|
120
|
+
resourceTemplates: resourceTemplates.map((rt) => ({
|
|
121
|
+
uriTemplate: rt.uriTemplate,
|
|
122
|
+
name: rt.name,
|
|
123
|
+
description: rt.description,
|
|
124
|
+
mimeType: rt.mimeType,
|
|
125
|
+
})),
|
|
126
|
+
};
|
|
127
|
+
});
|
|
128
|
+
// Register read_resource handler
|
|
129
|
+
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
130
|
+
const { uri } = request.params;
|
|
131
|
+
debug(`Handling read_resource request: ${uri}`, config);
|
|
132
|
+
try {
|
|
133
|
+
const contents = await apiClient.readResource(uri);
|
|
134
|
+
return {
|
|
135
|
+
contents: contents.map((c) => ({
|
|
136
|
+
uri: c.uri,
|
|
137
|
+
mimeType: c.mimeType,
|
|
138
|
+
text: c.text,
|
|
139
|
+
})),
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
144
|
+
throw new McpError(ErrorCode.InternalError, `Failed to read resource: ${message}`);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
log(`Resources enabled: ${resourceTemplates.map((r) => r.name).join(', ')}`, config);
|
|
148
|
+
}
|
|
101
149
|
// Step 4: Connect via stdio transport
|
|
102
150
|
const transport = new StdioServerTransport();
|
|
103
151
|
// Handle server errors
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@m00nsolutions/mcp-server",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "MCP server for M00n Report - enables AI assistants like Claude and Cursor to query test analytics",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/cli.js",
|
|
7
7
|
"types": "dist/cli.d.ts",
|
|
8
8
|
"bin": {
|
|
9
|
-
"m00n-mcp": "
|
|
9
|
+
"m00n-mcp": "bin/m00n-mcp.js"
|
|
10
10
|
},
|
|
11
11
|
"files": [
|
|
12
12
|
"dist",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"license": "MIT",
|
|
38
38
|
"repository": {
|
|
39
39
|
"type": "git",
|
|
40
|
-
"url": "https://github.com/m00nsolutions/m00nreport.git",
|
|
40
|
+
"url": "git+https://github.com/m00nsolutions/m00nreport.git",
|
|
41
41
|
"directory": "packages/m00n-mcp-server"
|
|
42
42
|
},
|
|
43
43
|
"homepage": "https://m00n.report",
|