@zelklab/seevo-mcp-server 0.1.5 → 0.1.7
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/dist/index.js +46 -17
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
3
3
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
4
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
5
|
-
import { analyzeProject } from "./analyzer.js";
|
|
6
5
|
import { SeeveClient } from "./client.js";
|
|
7
6
|
import { AuthManager } from "./auth.js";
|
|
8
7
|
// MCP Server for Seevo
|
|
@@ -21,19 +20,38 @@ const seeveClient = new SeeveClient(authManager);
|
|
|
21
20
|
const TOOLS = [
|
|
22
21
|
{
|
|
23
22
|
name: "seevo_register_project",
|
|
24
|
-
description: "
|
|
23
|
+
description: "プロジェクト情報をSeevoに登録します。事前にseevo_set_tokenでトークンを設定する必要があります。Claude Codeがプロジェクトを解析した結果を渡してください。",
|
|
25
24
|
inputSchema: {
|
|
26
25
|
type: "object",
|
|
27
26
|
properties: {
|
|
28
|
-
|
|
27
|
+
service_name: {
|
|
29
28
|
type: "string",
|
|
30
|
-
description: "
|
|
29
|
+
description: "サービス名",
|
|
31
30
|
},
|
|
32
|
-
|
|
31
|
+
description: {
|
|
33
32
|
type: "string",
|
|
34
|
-
description: "
|
|
33
|
+
description: "サービスの説明",
|
|
34
|
+
},
|
|
35
|
+
target: {
|
|
36
|
+
type: "string",
|
|
37
|
+
description: "ターゲットユーザー",
|
|
38
|
+
},
|
|
39
|
+
features: {
|
|
40
|
+
type: "array",
|
|
41
|
+
items: { type: "string" },
|
|
42
|
+
description: "主な機能のリスト",
|
|
43
|
+
},
|
|
44
|
+
tech_stack: {
|
|
45
|
+
type: "array",
|
|
46
|
+
items: { type: "string" },
|
|
47
|
+
description: "使用している技術スタック",
|
|
48
|
+
},
|
|
49
|
+
url: {
|
|
50
|
+
type: "string",
|
|
51
|
+
description: "プロジェクトのURL(任意)",
|
|
35
52
|
},
|
|
36
53
|
},
|
|
54
|
+
required: ["service_name", "description", "target"],
|
|
37
55
|
},
|
|
38
56
|
},
|
|
39
57
|
{
|
|
@@ -69,8 +87,6 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
69
87
|
try {
|
|
70
88
|
switch (name) {
|
|
71
89
|
case "seevo_register_project": {
|
|
72
|
-
const projectPath = args?.project_path || process.cwd();
|
|
73
|
-
const projectName = args?.name;
|
|
74
90
|
// Check authentication
|
|
75
91
|
if (!authManager.isAuthenticated()) {
|
|
76
92
|
return {
|
|
@@ -82,10 +98,29 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
82
98
|
],
|
|
83
99
|
};
|
|
84
100
|
}
|
|
85
|
-
//
|
|
86
|
-
const
|
|
101
|
+
// Get project info from Claude Code
|
|
102
|
+
const projectData = {
|
|
103
|
+
service_name: args?.service_name,
|
|
104
|
+
description: args?.description,
|
|
105
|
+
target: args?.target,
|
|
106
|
+
features: args?.features || [],
|
|
107
|
+
tech_stack: args?.tech_stack || [],
|
|
108
|
+
url: args?.url || undefined,
|
|
109
|
+
};
|
|
110
|
+
// Validate required fields
|
|
111
|
+
if (!projectData.service_name || !projectData.description || !projectData.target) {
|
|
112
|
+
return {
|
|
113
|
+
content: [
|
|
114
|
+
{
|
|
115
|
+
type: "text",
|
|
116
|
+
text: "エラー: service_name, description, targetは必須です。",
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
isError: true,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
87
122
|
// Register to Seevo
|
|
88
|
-
const result = await seeveClient.registerProject(
|
|
123
|
+
const result = await seeveClient.registerProject(projectData);
|
|
89
124
|
const techStackText = result.tech_stack && result.tech_stack.length > 0
|
|
90
125
|
? `\n**技術スタック**: ${result.tech_stack.join(", ")}`
|
|
91
126
|
: "";
|
|
@@ -180,26 +215,20 @@ Seevoダッシュボードで確認できます: http://localhost:3000/dashboard
|
|
|
180
215
|
// Start server or run CLI
|
|
181
216
|
async function main() {
|
|
182
217
|
const args = process.argv.slice(2);
|
|
183
|
-
// Debug: log args
|
|
184
|
-
console.error("DEBUG: process.argv =", process.argv);
|
|
185
|
-
console.error("DEBUG: args =", args);
|
|
186
218
|
// CLI mode: handle subcommands
|
|
187
219
|
if (args.length > 0 && args[0] === 'register') {
|
|
188
|
-
console.error("DEBUG: Running register subcommand");
|
|
189
220
|
// Dynamically import and run register command
|
|
190
221
|
// register.ts executes its top-level code when imported
|
|
191
222
|
await import('./register.js');
|
|
192
223
|
return;
|
|
193
224
|
}
|
|
194
225
|
if (args.length > 0 && args[0] === 'setup') {
|
|
195
|
-
console.error("DEBUG: Running setup subcommand");
|
|
196
226
|
// Dynamically import and run setup command
|
|
197
227
|
// setup.ts executes its top-level code when imported
|
|
198
228
|
await import('./setup.js');
|
|
199
229
|
return;
|
|
200
230
|
}
|
|
201
231
|
// MCP Server mode: start stdio server
|
|
202
|
-
console.error("DEBUG: Starting MCP server mode");
|
|
203
232
|
const transport = new StdioServerTransport();
|
|
204
233
|
await server.connect(transport);
|
|
205
234
|
console.error("Seevo MCP Server running on stdio");
|