@closedloop-ai/mcp-client 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/index.js +75 -2
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ A lightweight Model Context Protocol (MCP) server that provides AI clients with
|
|
|
14
14
|
## Installation
|
|
15
15
|
|
|
16
16
|
```bash
|
|
17
|
-
npm install -g @
|
|
17
|
+
npm install -g @closedloop-ai/mcp-client
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
## Configuration
|
|
@@ -33,7 +33,7 @@ Add this configuration to your Claude Desktop app:
|
|
|
33
33
|
"mcpServers": {
|
|
34
34
|
"closedloop": {
|
|
35
35
|
"command": "npx",
|
|
36
|
-
"args": ["@
|
|
36
|
+
"args": ["@closedloop-ai/mcp-client"],
|
|
37
37
|
"env": {
|
|
38
38
|
"CLOSEDLOOP_API_KEY": "your-api-key-here",
|
|
39
39
|
"CLOSEDLOOP_SERVER_URL": "https://mcp.closedloop.sh"
|
package/index.js
CHANGED
|
@@ -18,8 +18,8 @@ if (!CLOSEDLOOP_API_KEY) {
|
|
|
18
18
|
const server = new Server(
|
|
19
19
|
{
|
|
20
20
|
name: 'closedloop-mcp-server',
|
|
21
|
-
version: '1.
|
|
22
|
-
description: 'Provides access to ClosedLoop AI product feedback data and insights.',
|
|
21
|
+
version: '1.1.0',
|
|
22
|
+
description: 'Provides access to ClosedLoop AI product feedback data and insights with advanced search capabilities.',
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
capabilities: {
|
|
@@ -73,6 +73,70 @@ const tools = [
|
|
|
73
73
|
},
|
|
74
74
|
required: ['insight_id']
|
|
75
75
|
}
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: 'search_insights',
|
|
79
|
+
description: 'Search insights using full-text search across multiple fields',
|
|
80
|
+
inputSchema: {
|
|
81
|
+
type: 'object',
|
|
82
|
+
properties: {
|
|
83
|
+
query: {
|
|
84
|
+
type: 'string',
|
|
85
|
+
description: 'Search query text (works in any language)'
|
|
86
|
+
},
|
|
87
|
+
fields: {
|
|
88
|
+
type: 'array',
|
|
89
|
+
items: {
|
|
90
|
+
type: 'string',
|
|
91
|
+
enum: ['signal_title', 'content', 'pain_point', 'workaround', 'use_case', 'feature_area', 'competitor_gap', 'willingness_to_pay']
|
|
92
|
+
},
|
|
93
|
+
description: 'Specific fields to search in (optional - searches all if not specified)'
|
|
94
|
+
},
|
|
95
|
+
date_from: {
|
|
96
|
+
type: 'string',
|
|
97
|
+
format: 'date',
|
|
98
|
+
description: 'Start date for insights (YYYY-MM-DD)'
|
|
99
|
+
},
|
|
100
|
+
date_to: {
|
|
101
|
+
type: 'string',
|
|
102
|
+
format: 'date',
|
|
103
|
+
description: 'End date for insights (YYYY-MM-DD)'
|
|
104
|
+
},
|
|
105
|
+
severity: {
|
|
106
|
+
type: 'string',
|
|
107
|
+
enum: ['critical', 'high', 'medium', 'low'],
|
|
108
|
+
description: 'Filter by severity level'
|
|
109
|
+
},
|
|
110
|
+
category: {
|
|
111
|
+
type: 'string',
|
|
112
|
+
enum: [
|
|
113
|
+
'Bug', 'Performance Issue', 'Security Issue', 'Feature Request',
|
|
114
|
+
'Improvement', 'UX/UI Issue', 'Documentation', 'Integration Issue',
|
|
115
|
+
'Missing Functionality'
|
|
116
|
+
],
|
|
117
|
+
description: 'Filter by category'
|
|
118
|
+
},
|
|
119
|
+
source: {
|
|
120
|
+
type: 'string',
|
|
121
|
+
description: 'Filter by integration source'
|
|
122
|
+
},
|
|
123
|
+
page: {
|
|
124
|
+
type: 'integer',
|
|
125
|
+
minimum: 1,
|
|
126
|
+
maximum: 1000,
|
|
127
|
+
default: 1,
|
|
128
|
+
description: 'Page number for pagination'
|
|
129
|
+
},
|
|
130
|
+
limit: {
|
|
131
|
+
type: 'integer',
|
|
132
|
+
minimum: 1,
|
|
133
|
+
maximum: 100,
|
|
134
|
+
default: 20,
|
|
135
|
+
description: 'Number of insight items per page'
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
required: ['query']
|
|
139
|
+
}
|
|
76
140
|
}
|
|
77
141
|
];
|
|
78
142
|
|
|
@@ -110,6 +174,15 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
110
174
|
});
|
|
111
175
|
break;
|
|
112
176
|
|
|
177
|
+
case 'search_insights':
|
|
178
|
+
if (!args.query) {
|
|
179
|
+
throw new Error('query is required');
|
|
180
|
+
}
|
|
181
|
+
response = await axios.post(`${CLOSEDLOOP_SERVER_URL}/search`, args, {
|
|
182
|
+
headers
|
|
183
|
+
});
|
|
184
|
+
break;
|
|
185
|
+
|
|
113
186
|
default:
|
|
114
187
|
throw new Error(`Unknown tool: ${name}`);
|
|
115
188
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@closedloop-ai/mcp-client",
|
|
3
|
-
"version": "1.0
|
|
4
|
-
"description": "ClosedLoop MCP Server for AI client integration",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "ClosedLoop MCP Server for AI client integration with advanced search capabilities",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"closedloop-mcp": "./index.js"
|
|
@@ -21,7 +21,9 @@
|
|
|
21
21
|
"ai",
|
|
22
22
|
"closedloop",
|
|
23
23
|
"feedback",
|
|
24
|
-
"analytics"
|
|
24
|
+
"analytics",
|
|
25
|
+
"search",
|
|
26
|
+
"full-text-search"
|
|
25
27
|
],
|
|
26
28
|
"author": "ClosedLoop",
|
|
27
29
|
"license": "MIT"
|