@visualprd/mcp-server 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 +396 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +27 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +243 -0
- package/dist/index.js.map +1 -0
- package/dist/intelligence/context-optimizer.d.ts +93 -0
- package/dist/intelligence/context-optimizer.d.ts.map +1 -0
- package/dist/intelligence/context-optimizer.js +481 -0
- package/dist/intelligence/context-optimizer.js.map +1 -0
- package/dist/intelligence/error-analyzer.d.ts +49 -0
- package/dist/intelligence/error-analyzer.d.ts.map +1 -0
- package/dist/intelligence/error-analyzer.js +765 -0
- package/dist/intelligence/error-analyzer.js.map +1 -0
- package/dist/intelligence/gap-filler.d.ts +56 -0
- package/dist/intelligence/gap-filler.d.ts.map +1 -0
- package/dist/intelligence/gap-filler.js +410 -0
- package/dist/intelligence/gap-filler.js.map +1 -0
- package/dist/intelligence/guidance-generator.d.ts +43 -0
- package/dist/intelligence/guidance-generator.d.ts.map +1 -0
- package/dist/intelligence/guidance-generator.js +314 -0
- package/dist/intelligence/guidance-generator.js.map +1 -0
- package/dist/intelligence/index.d.ts +132 -0
- package/dist/intelligence/index.d.ts.map +1 -0
- package/dist/intelligence/index.js +683 -0
- package/dist/intelligence/index.js.map +1 -0
- package/dist/server-http.d.ts +9 -0
- package/dist/server-http.d.ts.map +1 -0
- package/dist/server-http.js +141 -0
- package/dist/server-http.js.map +1 -0
- package/dist/services/api-key-service.d.ts +68 -0
- package/dist/services/api-key-service.d.ts.map +1 -0
- package/dist/services/api-key-service.js +298 -0
- package/dist/services/api-key-service.js.map +1 -0
- package/dist/services/llm-client.d.ts +66 -0
- package/dist/services/llm-client.d.ts.map +1 -0
- package/dist/services/llm-client.js +141 -0
- package/dist/services/llm-client.js.map +1 -0
- package/dist/services/model-registry.d.ts +135 -0
- package/dist/services/model-registry.d.ts.map +1 -0
- package/dist/services/model-registry.js +276 -0
- package/dist/services/model-registry.js.map +1 -0
- package/dist/services/visualprd-client.d.ts +191 -0
- package/dist/services/visualprd-client.d.ts.map +1 -0
- package/dist/services/visualprd-client.js +805 -0
- package/dist/services/visualprd-client.js.map +1 -0
- package/dist/tools/index.d.ts +803 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +570 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types/index.d.ts +497 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +48 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* VisualPRD MCP Server
|
|
5
|
+
*
|
|
6
|
+
* Intelligent Model Context Protocol server for autonomous build orchestration
|
|
7
|
+
* between VisualPRD and AI coding agents (Cursor, Claude, etc.)
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.VisualPRDMCPServer = void 0;
|
|
11
|
+
const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
|
|
12
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
13
|
+
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
14
|
+
const visualprd_client_js_1 = require("./services/visualprd-client.js");
|
|
15
|
+
const index_js_2 = require("./intelligence/index.js");
|
|
16
|
+
const index_js_3 = require("./tools/index.js");
|
|
17
|
+
class VisualPRDMCPServer {
|
|
18
|
+
server;
|
|
19
|
+
client;
|
|
20
|
+
intelligence;
|
|
21
|
+
toolHandlers;
|
|
22
|
+
config;
|
|
23
|
+
constructor(config) {
|
|
24
|
+
this.config = config;
|
|
25
|
+
// Initialize services
|
|
26
|
+
this.client = new visualprd_client_js_1.VisualPRDClient(config);
|
|
27
|
+
this.intelligence = new index_js_2.IntelligenceLayer(this.client, config);
|
|
28
|
+
this.toolHandlers = new index_js_3.ToolHandlers(this.intelligence);
|
|
29
|
+
// Initialize MCP server
|
|
30
|
+
this.server = new index_js_1.Server({
|
|
31
|
+
name: 'visualprd-mcp',
|
|
32
|
+
version: '1.0.0',
|
|
33
|
+
}, {
|
|
34
|
+
capabilities: {
|
|
35
|
+
tools: {},
|
|
36
|
+
resources: {},
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
this.setupHandlers();
|
|
40
|
+
}
|
|
41
|
+
setupHandlers() {
|
|
42
|
+
// List available tools
|
|
43
|
+
this.server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
|
|
44
|
+
return {
|
|
45
|
+
tools: index_js_3.ToolDefinitions,
|
|
46
|
+
};
|
|
47
|
+
});
|
|
48
|
+
// Handle tool calls
|
|
49
|
+
this.server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
50
|
+
const { name, arguments: args } = request.params;
|
|
51
|
+
try {
|
|
52
|
+
console.error(`[MCP] Tool call: ${name}`);
|
|
53
|
+
const startTime = Date.now();
|
|
54
|
+
const result = await this.toolHandlers.handleToolCall(name, args || {});
|
|
55
|
+
const duration = Date.now() - startTime;
|
|
56
|
+
console.error(`[MCP] Tool ${name} completed in ${duration}ms`);
|
|
57
|
+
return {
|
|
58
|
+
content: [
|
|
59
|
+
{
|
|
60
|
+
type: 'text',
|
|
61
|
+
text: JSON.stringify(result, null, 2),
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.error(`[MCP] Tool ${name} error:`, error);
|
|
68
|
+
return {
|
|
69
|
+
content: [
|
|
70
|
+
{
|
|
71
|
+
type: 'text',
|
|
72
|
+
text: JSON.stringify({
|
|
73
|
+
error: true,
|
|
74
|
+
message: error.message || 'Unknown error',
|
|
75
|
+
tool: name,
|
|
76
|
+
}),
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
isError: true,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
// List available resources (project data)
|
|
84
|
+
this.server.setRequestHandler(types_js_1.ListResourcesRequestSchema, async () => {
|
|
85
|
+
return {
|
|
86
|
+
resources: [
|
|
87
|
+
{
|
|
88
|
+
uri: `visualprd://project/${this.config.projectId}`,
|
|
89
|
+
name: 'Project Data',
|
|
90
|
+
description: 'Full project data including pages, schemas, endpoints',
|
|
91
|
+
mimeType: 'application/json',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
uri: `visualprd://project/${this.config.projectId}/build-prompts`,
|
|
95
|
+
name: 'Build Prompts',
|
|
96
|
+
description: 'All build prompts with completion status',
|
|
97
|
+
mimeType: 'application/json',
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
uri: `visualprd://project/${this.config.projectId}/design-system`,
|
|
101
|
+
name: 'Design System',
|
|
102
|
+
description: 'Design system specifications',
|
|
103
|
+
mimeType: 'application/json',
|
|
104
|
+
},
|
|
105
|
+
],
|
|
106
|
+
};
|
|
107
|
+
});
|
|
108
|
+
// Read resources
|
|
109
|
+
this.server.setRequestHandler(types_js_1.ReadResourceRequestSchema, async (request) => {
|
|
110
|
+
const { uri } = request.params;
|
|
111
|
+
try {
|
|
112
|
+
const projectData = await this.client.loadProjectData();
|
|
113
|
+
if (uri.endsWith('/build-prompts')) {
|
|
114
|
+
return {
|
|
115
|
+
contents: [
|
|
116
|
+
{
|
|
117
|
+
uri,
|
|
118
|
+
mimeType: 'application/json',
|
|
119
|
+
text: JSON.stringify(projectData.buildPrompts, null, 2),
|
|
120
|
+
},
|
|
121
|
+
],
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
if (uri.endsWith('/design-system')) {
|
|
125
|
+
return {
|
|
126
|
+
contents: [
|
|
127
|
+
{
|
|
128
|
+
uri,
|
|
129
|
+
mimeType: 'application/json',
|
|
130
|
+
text: JSON.stringify(projectData.designSystem || {}, null, 2),
|
|
131
|
+
},
|
|
132
|
+
],
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
// Default: return full project data
|
|
136
|
+
return {
|
|
137
|
+
contents: [
|
|
138
|
+
{
|
|
139
|
+
uri,
|
|
140
|
+
mimeType: 'application/json',
|
|
141
|
+
text: JSON.stringify(projectData, null, 2),
|
|
142
|
+
},
|
|
143
|
+
],
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
throw new Error(`Failed to read resource: ${error.message}`);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
async start() {
|
|
152
|
+
console.error('[MCP] Starting VisualPRD MCP Server...');
|
|
153
|
+
console.error(`[MCP] Project ID: ${this.config.projectId}`);
|
|
154
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
155
|
+
await this.server.connect(transport);
|
|
156
|
+
console.error('[MCP] Server connected and ready');
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
exports.VisualPRDMCPServer = VisualPRDMCPServer;
|
|
160
|
+
// ============================================================================
|
|
161
|
+
// CLI ENTRY POINT
|
|
162
|
+
// ============================================================================
|
|
163
|
+
async function main() {
|
|
164
|
+
// Parse command line arguments
|
|
165
|
+
const args = process.argv.slice(2);
|
|
166
|
+
const config = {};
|
|
167
|
+
for (let i = 0; i < args.length; i++) {
|
|
168
|
+
const arg = args[i];
|
|
169
|
+
const nextArg = args[i + 1];
|
|
170
|
+
if (arg === '--project' || arg === '-p') {
|
|
171
|
+
config.projectId = nextArg;
|
|
172
|
+
i++;
|
|
173
|
+
}
|
|
174
|
+
else if (arg === '--api-key' || arg === '-k') {
|
|
175
|
+
config.apiKey = nextArg;
|
|
176
|
+
i++;
|
|
177
|
+
}
|
|
178
|
+
else if (arg === '--api-url' || arg === '-u') {
|
|
179
|
+
config.apiUrl = nextArg;
|
|
180
|
+
i++;
|
|
181
|
+
}
|
|
182
|
+
else if (arg === '--help' || arg === '-h') {
|
|
183
|
+
printHelp();
|
|
184
|
+
process.exit(0);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// Also check environment variables
|
|
188
|
+
config.projectId = config.projectId || process.env.VISUALPRD_PROJECT_ID;
|
|
189
|
+
config.apiKey = config.apiKey || process.env.VISUALPRD_API_KEY;
|
|
190
|
+
config.apiUrl = config.apiUrl || process.env.VISUALPRD_API_URL || 'https://api.visualprd.com';
|
|
191
|
+
// Validate required config
|
|
192
|
+
if (!config.projectId) {
|
|
193
|
+
console.error('Error: Project ID is required');
|
|
194
|
+
console.error('Use --project <id> or set VISUALPRD_PROJECT_ID environment variable');
|
|
195
|
+
printHelp();
|
|
196
|
+
process.exit(1);
|
|
197
|
+
}
|
|
198
|
+
// Start the server
|
|
199
|
+
const server = new VisualPRDMCPServer(config);
|
|
200
|
+
try {
|
|
201
|
+
await server.start();
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
console.error('Failed to start MCP server:', error);
|
|
205
|
+
process.exit(1);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
function printHelp() {
|
|
209
|
+
console.log(`
|
|
210
|
+
VisualPRD MCP Server - Intelligent Build Orchestration
|
|
211
|
+
|
|
212
|
+
Usage:
|
|
213
|
+
visualprd-mcp [options]
|
|
214
|
+
|
|
215
|
+
Options:
|
|
216
|
+
-p, --project <id> Project ID (required)
|
|
217
|
+
-k, --api-key <key> API key for authentication
|
|
218
|
+
-u, --api-url <url> API base URL (default: https://api.visualprd.com)
|
|
219
|
+
-h, --help Show this help message
|
|
220
|
+
|
|
221
|
+
Environment Variables:
|
|
222
|
+
VISUALPRD_PROJECT_ID Project ID
|
|
223
|
+
VISUALPRD_API_KEY API key
|
|
224
|
+
VISUALPRD_API_URL API base URL
|
|
225
|
+
|
|
226
|
+
Firebase credentials (for direct Firestore access):
|
|
227
|
+
FIREBASE_PROJECT_ID Firebase project ID
|
|
228
|
+
FIREBASE_PRIVATE_KEY Firebase service account private key
|
|
229
|
+
FIREBASE_CLIENT_EMAIL Firebase service account email
|
|
230
|
+
|
|
231
|
+
Example:
|
|
232
|
+
visualprd-mcp --project abc123xyz --api-key vprd_sk_xxx
|
|
233
|
+
|
|
234
|
+
Or with environment variables:
|
|
235
|
+
VISUALPRD_PROJECT_ID=abc123xyz visualprd-mcp
|
|
236
|
+
`);
|
|
237
|
+
}
|
|
238
|
+
// Run the server
|
|
239
|
+
main().catch((error) => {
|
|
240
|
+
console.error('Fatal error:', error);
|
|
241
|
+
process.exit(1);
|
|
242
|
+
});
|
|
243
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Optimizer
|
|
3
|
+
*
|
|
4
|
+
* Intelligently decides what context to provide to the AI agent
|
|
5
|
+
* based on the current task. Goal: Minimize tokens while maximizing usefulness.
|
|
6
|
+
*/
|
|
7
|
+
import { BuildPrompt, ProjectData, PageEntity, SchemaEntity, EndpointEntity, TechStackEntity, DesignSystem } from '../types/index.js';
|
|
8
|
+
export interface OptimizedContext {
|
|
9
|
+
pages: PageEntity[];
|
|
10
|
+
schemas: SchemaEntity[];
|
|
11
|
+
endpoints: EndpointEntity[];
|
|
12
|
+
techStack: TechStackEntity[];
|
|
13
|
+
designSystem?: DesignSystem;
|
|
14
|
+
completedDependencies?: BuildPrompt[];
|
|
15
|
+
estimatedTokens: number;
|
|
16
|
+
}
|
|
17
|
+
export interface ContextRules {
|
|
18
|
+
includeDesignSystem: boolean;
|
|
19
|
+
includeFullSchemas: boolean;
|
|
20
|
+
includeFullEndpoints: boolean;
|
|
21
|
+
includeTechStack: boolean;
|
|
22
|
+
includeDependencies: boolean;
|
|
23
|
+
maxEntitiesPerType: number;
|
|
24
|
+
compressLargeEntities: boolean;
|
|
25
|
+
}
|
|
26
|
+
export declare class ContextOptimizer {
|
|
27
|
+
private readonly MAX_CONTEXT_TOKENS;
|
|
28
|
+
private readonly AVERAGE_CHARS_PER_TOKEN;
|
|
29
|
+
/**
|
|
30
|
+
* Optimize context for a specific build prompt
|
|
31
|
+
*/
|
|
32
|
+
optimizeContext(prompt: BuildPrompt, projectData: ProjectData): Promise<OptimizedContext>;
|
|
33
|
+
/**
|
|
34
|
+
* Determine context rules based on prompt characteristics
|
|
35
|
+
*/
|
|
36
|
+
private determineContextRules;
|
|
37
|
+
/**
|
|
38
|
+
* Include directly referenced entities from prompt
|
|
39
|
+
*/
|
|
40
|
+
private includeReferencedEntities;
|
|
41
|
+
/**
|
|
42
|
+
* Include related schemas based on relationships
|
|
43
|
+
*/
|
|
44
|
+
private includeRelatedSchemas;
|
|
45
|
+
/**
|
|
46
|
+
* Include related endpoints based on referenced schemas
|
|
47
|
+
*/
|
|
48
|
+
private includeRelatedEndpoints;
|
|
49
|
+
/**
|
|
50
|
+
* Include relevant tech stack items
|
|
51
|
+
*/
|
|
52
|
+
private includeRelevantTechStack;
|
|
53
|
+
/**
|
|
54
|
+
* Get completed dependency prompts
|
|
55
|
+
*/
|
|
56
|
+
private getCompletedDependencies;
|
|
57
|
+
/**
|
|
58
|
+
* Compress context if it exceeds token limit
|
|
59
|
+
*/
|
|
60
|
+
private compressIfNeeded;
|
|
61
|
+
/**
|
|
62
|
+
* Truncate long descriptions
|
|
63
|
+
*/
|
|
64
|
+
private truncateEntityDescriptions;
|
|
65
|
+
/**
|
|
66
|
+
* Limit number of entities per type
|
|
67
|
+
*/
|
|
68
|
+
private limitEntitiesPerType;
|
|
69
|
+
/**
|
|
70
|
+
* Remove non-essential fields from entities
|
|
71
|
+
*/
|
|
72
|
+
private removeNonEssentialFields;
|
|
73
|
+
/**
|
|
74
|
+
* Create summaries of entities
|
|
75
|
+
*/
|
|
76
|
+
private summarizeEntities;
|
|
77
|
+
/**
|
|
78
|
+
* Estimate token count for context
|
|
79
|
+
*/
|
|
80
|
+
private estimateTokens;
|
|
81
|
+
private isUIPrompt;
|
|
82
|
+
private isDatabasePrompt;
|
|
83
|
+
private isIntegrationPrompt;
|
|
84
|
+
private isSetupPrompt;
|
|
85
|
+
private normalize;
|
|
86
|
+
private truncate;
|
|
87
|
+
private extractKeywords;
|
|
88
|
+
private findPage;
|
|
89
|
+
private findSchema;
|
|
90
|
+
private findEndpoint;
|
|
91
|
+
private findTechStack;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=context-optimizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-optimizer.d.ts","sourceRoot":"","sources":["../../src/intelligence/context-optimizer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,WAAW,EACX,WAAW,EACX,UAAU,EACV,YAAY,EACZ,cAAc,EACd,eAAe,EACf,YAAY,EAEb,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,qBAAqB,CAAC,EAAE,WAAW,EAAE,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAK;IAE7C;;OAEG;IACG,eAAe,CACnB,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,gBAAgB,CAAC;IAqD5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoE7B;;OAEG;YACW,yBAAyB;IA2CvC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA4B/B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAmChC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAahC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA4BxB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAyBlC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAoChC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4BzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,eAAe;IAmCvB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,aAAa;CAStB"}
|