@simple-product/mcp 0.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/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +632 -0
- package/dist/index.js.map +1 -0
- package/package.json +41 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,632 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
3
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
5
|
+
import chalk from "chalk";
|
|
6
|
+
import ora from "ora";
|
|
7
|
+
import open from "open";
|
|
8
|
+
import * as fs from "fs";
|
|
9
|
+
import * as path from "path";
|
|
10
|
+
import * as os from "os";
|
|
11
|
+
import * as crypto from "crypto";
|
|
12
|
+
// ============================================
|
|
13
|
+
// Configuration
|
|
14
|
+
// ============================================
|
|
15
|
+
const PRODUCTION_URL = "https://simple-product.app";
|
|
16
|
+
const DEV_URL = "http://localhost:3000";
|
|
17
|
+
const CONFIG_DIR = path.join(os.homedir(), ".simple-product");
|
|
18
|
+
const CONFIG_FILE = path.join(CONFIG_DIR, "config.json");
|
|
19
|
+
// ============================================
|
|
20
|
+
// CLI Argument Parsing
|
|
21
|
+
// ============================================
|
|
22
|
+
const args = process.argv.slice(2);
|
|
23
|
+
const isInstall = args.includes("--install");
|
|
24
|
+
const isDev = args.includes("--dev");
|
|
25
|
+
const isHelp = args.includes("--help") || args.includes("-h");
|
|
26
|
+
if (isHelp) {
|
|
27
|
+
console.log(`
|
|
28
|
+
${chalk.bold("Simple Product MCP Server")}
|
|
29
|
+
|
|
30
|
+
Usage:
|
|
31
|
+
npx @simple-product/mcp [options]
|
|
32
|
+
|
|
33
|
+
Options:
|
|
34
|
+
--install Run the installation wizard
|
|
35
|
+
--dev Use local development server (localhost:3000)
|
|
36
|
+
--help, -h Show this help message
|
|
37
|
+
|
|
38
|
+
Examples:
|
|
39
|
+
npx @simple-product/mcp --install Install and configure for production
|
|
40
|
+
npx @simple-product/mcp --install --dev Install and configure for local dev
|
|
41
|
+
npx @simple-product/mcp Start the MCP server
|
|
42
|
+
`);
|
|
43
|
+
process.exit(0);
|
|
44
|
+
}
|
|
45
|
+
// ============================================
|
|
46
|
+
// Utility Functions
|
|
47
|
+
// ============================================
|
|
48
|
+
function ensureConfigDir() {
|
|
49
|
+
if (!fs.existsSync(CONFIG_DIR)) {
|
|
50
|
+
fs.mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function loadConfig() {
|
|
54
|
+
try {
|
|
55
|
+
if (fs.existsSync(CONFIG_FILE)) {
|
|
56
|
+
const data = fs.readFileSync(CONFIG_FILE, "utf-8");
|
|
57
|
+
return JSON.parse(data);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// Config doesn't exist or is invalid
|
|
62
|
+
}
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
function saveConfig(config) {
|
|
66
|
+
ensureConfigDir();
|
|
67
|
+
fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2), {
|
|
68
|
+
mode: 0o600,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
function generateDeviceCode() {
|
|
72
|
+
const chars = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789";
|
|
73
|
+
let code = "";
|
|
74
|
+
for (let i = 0; i < 8; i++) {
|
|
75
|
+
if (i === 4)
|
|
76
|
+
code += "-";
|
|
77
|
+
code += chars[crypto.randomInt(chars.length)];
|
|
78
|
+
}
|
|
79
|
+
return code;
|
|
80
|
+
}
|
|
81
|
+
// ============================================
|
|
82
|
+
// Welcome Banner
|
|
83
|
+
// ============================================
|
|
84
|
+
function showWelcomeBanner() {
|
|
85
|
+
console.log(chalk.magenta(`
|
|
86
|
+
╔═══════════════════════════════════════════════════════════╗
|
|
87
|
+
║ ║
|
|
88
|
+
║ ${chalk.bold("Simple Product MCP Server")} ║
|
|
89
|
+
║ ║
|
|
90
|
+
║ Access your docs, cards, boards, and customers ║
|
|
91
|
+
║ directly from your coding agent. ║
|
|
92
|
+
║ ║
|
|
93
|
+
╚═══════════════════════════════════════════════════════════╝
|
|
94
|
+
`));
|
|
95
|
+
}
|
|
96
|
+
async function detectTools() {
|
|
97
|
+
const tools = [];
|
|
98
|
+
// Claude Code (check for claude CLI)
|
|
99
|
+
try {
|
|
100
|
+
const { execSync } = await import("child_process");
|
|
101
|
+
execSync("which claude", { stdio: "ignore" });
|
|
102
|
+
tools.push({
|
|
103
|
+
name: "Claude Code",
|
|
104
|
+
detected: true,
|
|
105
|
+
configType: "claude-cli",
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
tools.push({ name: "Claude Code", detected: false });
|
|
110
|
+
}
|
|
111
|
+
// Cursor
|
|
112
|
+
const cursorConfig = path.join(os.homedir(), ".cursor", "mcp.json");
|
|
113
|
+
tools.push({
|
|
114
|
+
name: "Cursor",
|
|
115
|
+
detected: fs.existsSync(path.dirname(cursorConfig)),
|
|
116
|
+
configPath: cursorConfig,
|
|
117
|
+
configType: "json",
|
|
118
|
+
});
|
|
119
|
+
// Windsurf
|
|
120
|
+
const windsurfConfig = path.join(os.homedir(), ".codeium", "windsurf", "mcp_config.json");
|
|
121
|
+
tools.push({
|
|
122
|
+
name: "Windsurf",
|
|
123
|
+
detected: fs.existsSync(path.dirname(windsurfConfig)),
|
|
124
|
+
configPath: windsurfConfig,
|
|
125
|
+
configType: "json",
|
|
126
|
+
});
|
|
127
|
+
// VS Code (check for settings directory)
|
|
128
|
+
const vscodeConfig = path.join(os.homedir(), ".vscode", "mcp.json");
|
|
129
|
+
const vscodeDir = path.join(os.homedir(), ".vscode");
|
|
130
|
+
tools.push({
|
|
131
|
+
name: "VS Code",
|
|
132
|
+
detected: fs.existsSync(vscodeDir),
|
|
133
|
+
configPath: vscodeConfig,
|
|
134
|
+
configType: "json",
|
|
135
|
+
});
|
|
136
|
+
return tools;
|
|
137
|
+
}
|
|
138
|
+
// ============================================
|
|
139
|
+
// Tool Configuration
|
|
140
|
+
// ============================================
|
|
141
|
+
async function configureClaudeCode(baseUrl) {
|
|
142
|
+
const spinner = ora("Configuring Claude Code...").start();
|
|
143
|
+
try {
|
|
144
|
+
const { execSync } = await import("child_process");
|
|
145
|
+
// Remove existing if present
|
|
146
|
+
try {
|
|
147
|
+
execSync("claude mcp remove simple-product", { stdio: "ignore" });
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
// Ignore if not present
|
|
151
|
+
}
|
|
152
|
+
// Add the MCP server
|
|
153
|
+
const envArg = baseUrl !== PRODUCTION_URL
|
|
154
|
+
? `--env SIMPLE_PRODUCT_URL=${baseUrl}`
|
|
155
|
+
: "";
|
|
156
|
+
execSync(`claude mcp add simple-product -- npx @simple-product/mcp@latest ${envArg}`.trim(), { stdio: "ignore" });
|
|
157
|
+
spinner.succeed("Claude Code configured");
|
|
158
|
+
return true;
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
spinner.fail("Failed to configure Claude Code");
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
async function configureJsonTool(toolName, configPath, baseUrl) {
|
|
166
|
+
const spinner = ora(`Configuring ${toolName}...`).start();
|
|
167
|
+
try {
|
|
168
|
+
// Ensure directory exists
|
|
169
|
+
const dir = path.dirname(configPath);
|
|
170
|
+
if (!fs.existsSync(dir)) {
|
|
171
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
172
|
+
}
|
|
173
|
+
// Load existing config or create new
|
|
174
|
+
let config = {};
|
|
175
|
+
if (fs.existsSync(configPath)) {
|
|
176
|
+
try {
|
|
177
|
+
config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
config = {};
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Add our server
|
|
184
|
+
if (!config.mcpServers) {
|
|
185
|
+
config.mcpServers = {};
|
|
186
|
+
}
|
|
187
|
+
const mcpServers = config.mcpServers;
|
|
188
|
+
mcpServers["simple-product"] = {
|
|
189
|
+
command: "npx",
|
|
190
|
+
args: ["@simple-product/mcp@latest"],
|
|
191
|
+
env: baseUrl !== PRODUCTION_URL ? { SIMPLE_PRODUCT_URL: baseUrl } : {},
|
|
192
|
+
};
|
|
193
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
194
|
+
spinner.succeed(`${toolName} configured`);
|
|
195
|
+
return true;
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
spinner.fail(`Failed to configure ${toolName}`);
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
// ============================================
|
|
203
|
+
// Device Flow Authentication
|
|
204
|
+
// ============================================
|
|
205
|
+
async function authenticateWithDeviceFlow(baseUrl) {
|
|
206
|
+
const deviceCode = generateDeviceCode();
|
|
207
|
+
const verificationUrl = `${baseUrl}/device`;
|
|
208
|
+
console.log();
|
|
209
|
+
console.log(chalk.bold("Step 1: Authenticate"));
|
|
210
|
+
console.log();
|
|
211
|
+
console.log(` Your device code is:`);
|
|
212
|
+
console.log(chalk.bold.yellow(` ${deviceCode}`));
|
|
213
|
+
console.log();
|
|
214
|
+
console.log(` Press ${chalk.bold("Enter")} to open ${chalk.cyan(verificationUrl)}`);
|
|
215
|
+
// Wait for user to press Enter
|
|
216
|
+
await new Promise((resolve) => {
|
|
217
|
+
process.stdin.setRawMode?.(false);
|
|
218
|
+
process.stdin.resume();
|
|
219
|
+
process.stdin.once("data", () => {
|
|
220
|
+
resolve();
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
// Register the device code with the server
|
|
224
|
+
const spinner = ora("Waiting for authorization...").start();
|
|
225
|
+
try {
|
|
226
|
+
// Register device code
|
|
227
|
+
const registerResponse = await fetch(`${baseUrl}/api/auth/device/register`, {
|
|
228
|
+
method: "POST",
|
|
229
|
+
headers: { "Content-Type": "application/json" },
|
|
230
|
+
body: JSON.stringify({ deviceCode }),
|
|
231
|
+
});
|
|
232
|
+
if (!registerResponse.ok) {
|
|
233
|
+
throw new Error("Failed to register device code");
|
|
234
|
+
}
|
|
235
|
+
const { pollToken } = await registerResponse.json();
|
|
236
|
+
// Open browser
|
|
237
|
+
try {
|
|
238
|
+
await open(verificationUrl);
|
|
239
|
+
}
|
|
240
|
+
catch {
|
|
241
|
+
// Ignore if browser can't be opened
|
|
242
|
+
}
|
|
243
|
+
// Poll for authorization
|
|
244
|
+
const maxAttempts = 60; // 5 minutes with 5 second intervals
|
|
245
|
+
for (let i = 0; i < maxAttempts; i++) {
|
|
246
|
+
await new Promise((resolve) => setTimeout(resolve, 5000));
|
|
247
|
+
const pollResponse = await fetch(`${baseUrl}/api/auth/device/poll`, {
|
|
248
|
+
method: "POST",
|
|
249
|
+
headers: { "Content-Type": "application/json" },
|
|
250
|
+
body: JSON.stringify({ pollToken }),
|
|
251
|
+
});
|
|
252
|
+
if (pollResponse.ok) {
|
|
253
|
+
const result = await pollResponse.json();
|
|
254
|
+
if (result.status === "authorized" && result.accessToken) {
|
|
255
|
+
spinner.succeed("Authenticated!");
|
|
256
|
+
return {
|
|
257
|
+
baseUrl,
|
|
258
|
+
accessToken: result.accessToken,
|
|
259
|
+
refreshToken: result.refreshToken,
|
|
260
|
+
expiresAt: result.expiresAt,
|
|
261
|
+
userEmail: result.userEmail,
|
|
262
|
+
workspaceId: result.workspaceId,
|
|
263
|
+
workspaceSlug: result.workspaceSlug,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
else if (result.status === "expired") {
|
|
267
|
+
spinner.fail("Authorization expired. Please try again.");
|
|
268
|
+
return null;
|
|
269
|
+
}
|
|
270
|
+
// status === "pending" - continue polling
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
spinner.fail("Authorization timed out. Please try again.");
|
|
274
|
+
return null;
|
|
275
|
+
}
|
|
276
|
+
catch (error) {
|
|
277
|
+
spinner.fail(`Authentication failed: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
278
|
+
return null;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
// ============================================
|
|
282
|
+
// Install Flow
|
|
283
|
+
// ============================================
|
|
284
|
+
async function runInstall() {
|
|
285
|
+
showWelcomeBanner();
|
|
286
|
+
const baseUrl = isDev ? DEV_URL : PRODUCTION_URL;
|
|
287
|
+
console.log(chalk.dim(` Mode: ${isDev ? "Development (localhost:3000)" : "Production"}`));
|
|
288
|
+
console.log();
|
|
289
|
+
// Step 1: Detect tools
|
|
290
|
+
console.log(chalk.bold("Detecting installed tools..."));
|
|
291
|
+
const tools = await detectTools();
|
|
292
|
+
const detectedTools = tools.filter((t) => t.detected);
|
|
293
|
+
if (detectedTools.length === 0) {
|
|
294
|
+
console.log(chalk.yellow(" No compatible tools detected. You can still authenticate and configure manually."));
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
console.log(chalk.green(` Found ${detectedTools.length} compatible tool(s):`));
|
|
298
|
+
for (const tool of detectedTools) {
|
|
299
|
+
console.log(chalk.green(` ✓ ${tool.name}`));
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
console.log();
|
|
303
|
+
// Step 2: Authenticate
|
|
304
|
+
const config = await authenticateWithDeviceFlow(baseUrl);
|
|
305
|
+
if (!config) {
|
|
306
|
+
process.exit(1);
|
|
307
|
+
}
|
|
308
|
+
// Save config
|
|
309
|
+
saveConfig(config);
|
|
310
|
+
console.log(chalk.dim(` Config saved to ${CONFIG_FILE}`));
|
|
311
|
+
console.log();
|
|
312
|
+
// Step 3: Configure tools
|
|
313
|
+
if (detectedTools.length > 0) {
|
|
314
|
+
console.log(chalk.bold("Configuring tools..."));
|
|
315
|
+
for (const tool of detectedTools) {
|
|
316
|
+
if (tool.configType === "claude-cli") {
|
|
317
|
+
await configureClaudeCode(baseUrl);
|
|
318
|
+
}
|
|
319
|
+
else if (tool.configType === "json" && tool.configPath) {
|
|
320
|
+
await configureJsonTool(tool.name, tool.configPath, baseUrl);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
console.log();
|
|
324
|
+
}
|
|
325
|
+
// Success!
|
|
326
|
+
console.log(chalk.green.bold("✓ Setup complete!"));
|
|
327
|
+
console.log();
|
|
328
|
+
console.log(" You can now use Simple Product from your coding agent.");
|
|
329
|
+
console.log(" Try asking Claude to:");
|
|
330
|
+
console.log(chalk.cyan(" • List my boards"));
|
|
331
|
+
console.log(chalk.cyan(" • Search for documents about authentication"));
|
|
332
|
+
console.log(chalk.cyan(" • Create a card for the new feature idea"));
|
|
333
|
+
console.log();
|
|
334
|
+
if (config.userEmail) {
|
|
335
|
+
console.log(chalk.dim(` Logged in as: ${config.userEmail}`));
|
|
336
|
+
}
|
|
337
|
+
if (config.workspaceSlug) {
|
|
338
|
+
console.log(chalk.dim(` Workspace: ${config.workspaceSlug}`));
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
// ============================================
|
|
342
|
+
// MCP Server
|
|
343
|
+
// ============================================
|
|
344
|
+
async function runServer() {
|
|
345
|
+
const config = loadConfig();
|
|
346
|
+
if (!config) {
|
|
347
|
+
console.error("Not authenticated. Run with --install first:\n npx @simple-product/mcp --install");
|
|
348
|
+
process.exit(1);
|
|
349
|
+
}
|
|
350
|
+
const baseUrl = process.env.SIMPLE_PRODUCT_URL || config.baseUrl;
|
|
351
|
+
const server = new Server({
|
|
352
|
+
name: "simple-product",
|
|
353
|
+
version: "0.1.0",
|
|
354
|
+
}, {
|
|
355
|
+
capabilities: {
|
|
356
|
+
tools: {},
|
|
357
|
+
},
|
|
358
|
+
});
|
|
359
|
+
// Define tools
|
|
360
|
+
const tools = [
|
|
361
|
+
{
|
|
362
|
+
name: "list_boards",
|
|
363
|
+
description: "List all boards in the workspace",
|
|
364
|
+
inputSchema: { type: "object", properties: {} },
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
name: "get_board",
|
|
368
|
+
description: "Get details about a specific board including its stages",
|
|
369
|
+
inputSchema: {
|
|
370
|
+
type: "object",
|
|
371
|
+
properties: {
|
|
372
|
+
boardId: { type: "string", description: "The ID of the board" },
|
|
373
|
+
},
|
|
374
|
+
required: ["boardId"],
|
|
375
|
+
},
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
name: "create_board",
|
|
379
|
+
description: "Create a new board",
|
|
380
|
+
inputSchema: {
|
|
381
|
+
type: "object",
|
|
382
|
+
properties: {
|
|
383
|
+
name: { type: "string", description: "Name of the board" },
|
|
384
|
+
},
|
|
385
|
+
required: ["name"],
|
|
386
|
+
},
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
name: "list_cards",
|
|
390
|
+
description: "List all cards in the workspace, optionally filtered by board",
|
|
391
|
+
inputSchema: {
|
|
392
|
+
type: "object",
|
|
393
|
+
properties: {
|
|
394
|
+
boardId: { type: "string", description: "Optional board ID to filter by" },
|
|
395
|
+
},
|
|
396
|
+
},
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
name: "search_cards",
|
|
400
|
+
description: "Search for cards by title or description",
|
|
401
|
+
inputSchema: {
|
|
402
|
+
type: "object",
|
|
403
|
+
properties: {
|
|
404
|
+
query: { type: "string", description: "Search query" },
|
|
405
|
+
boardId: { type: "string", description: "Optional board ID to filter by" },
|
|
406
|
+
},
|
|
407
|
+
required: ["query"],
|
|
408
|
+
},
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
name: "create_card",
|
|
412
|
+
description: "Create a new card on a board",
|
|
413
|
+
inputSchema: {
|
|
414
|
+
type: "object",
|
|
415
|
+
properties: {
|
|
416
|
+
boardId: { type: "string", description: "The board ID" },
|
|
417
|
+
title: { type: "string", description: "Card title" },
|
|
418
|
+
description: { type: "string", description: "Card description" },
|
|
419
|
+
stageName: { type: "string", description: "Stage name (e.g., 'To Do', 'In Progress', 'Done')" },
|
|
420
|
+
},
|
|
421
|
+
required: ["boardId", "title"],
|
|
422
|
+
},
|
|
423
|
+
},
|
|
424
|
+
{
|
|
425
|
+
name: "update_card",
|
|
426
|
+
description: "Update a card's title or description",
|
|
427
|
+
inputSchema: {
|
|
428
|
+
type: "object",
|
|
429
|
+
properties: {
|
|
430
|
+
cardId: { type: "string", description: "The card ID" },
|
|
431
|
+
title: { type: "string", description: "New title" },
|
|
432
|
+
description: { type: "string", description: "New description" },
|
|
433
|
+
},
|
|
434
|
+
required: ["cardId"],
|
|
435
|
+
},
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
name: "move_card",
|
|
439
|
+
description: "Move a card to a different stage",
|
|
440
|
+
inputSchema: {
|
|
441
|
+
type: "object",
|
|
442
|
+
properties: {
|
|
443
|
+
cardId: { type: "string", description: "The card ID" },
|
|
444
|
+
stageName: { type: "string", description: "Target stage name" },
|
|
445
|
+
},
|
|
446
|
+
required: ["cardId", "stageName"],
|
|
447
|
+
},
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
name: "search_docs",
|
|
451
|
+
description: "Search for documents by title",
|
|
452
|
+
inputSchema: {
|
|
453
|
+
type: "object",
|
|
454
|
+
properties: {
|
|
455
|
+
query: { type: "string", description: "Search query" },
|
|
456
|
+
},
|
|
457
|
+
required: ["query"],
|
|
458
|
+
},
|
|
459
|
+
},
|
|
460
|
+
{
|
|
461
|
+
name: "get_doc",
|
|
462
|
+
description: "Get a document's full content",
|
|
463
|
+
inputSchema: {
|
|
464
|
+
type: "object",
|
|
465
|
+
properties: {
|
|
466
|
+
docId: { type: "string", description: "The document ID" },
|
|
467
|
+
},
|
|
468
|
+
required: ["docId"],
|
|
469
|
+
},
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
name: "create_doc",
|
|
473
|
+
description: "Create a new document",
|
|
474
|
+
inputSchema: {
|
|
475
|
+
type: "object",
|
|
476
|
+
properties: {
|
|
477
|
+
title: { type: "string", description: "Document title" },
|
|
478
|
+
content: { type: "string", description: "Document content (markdown)" },
|
|
479
|
+
},
|
|
480
|
+
required: ["title"],
|
|
481
|
+
},
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
name: "update_doc",
|
|
485
|
+
description: "Update a document",
|
|
486
|
+
inputSchema: {
|
|
487
|
+
type: "object",
|
|
488
|
+
properties: {
|
|
489
|
+
docId: { type: "string", description: "The document ID" },
|
|
490
|
+
title: { type: "string", description: "New title" },
|
|
491
|
+
content: { type: "string", description: "New content" },
|
|
492
|
+
},
|
|
493
|
+
required: ["docId"],
|
|
494
|
+
},
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
name: "search_people",
|
|
498
|
+
description: "Search for contacts by name or email",
|
|
499
|
+
inputSchema: {
|
|
500
|
+
type: "object",
|
|
501
|
+
properties: {
|
|
502
|
+
query: { type: "string", description: "Search query" },
|
|
503
|
+
},
|
|
504
|
+
required: ["query"],
|
|
505
|
+
},
|
|
506
|
+
},
|
|
507
|
+
{
|
|
508
|
+
name: "create_person",
|
|
509
|
+
description: "Create a new contact",
|
|
510
|
+
inputSchema: {
|
|
511
|
+
type: "object",
|
|
512
|
+
properties: {
|
|
513
|
+
name: { type: "string", description: "Person's name" },
|
|
514
|
+
email: { type: "string", description: "Email address" },
|
|
515
|
+
phone: { type: "string", description: "Phone number" },
|
|
516
|
+
},
|
|
517
|
+
required: ["name"],
|
|
518
|
+
},
|
|
519
|
+
},
|
|
520
|
+
{
|
|
521
|
+
name: "search_orgs",
|
|
522
|
+
description: "Search for organizations by name or domain",
|
|
523
|
+
inputSchema: {
|
|
524
|
+
type: "object",
|
|
525
|
+
properties: {
|
|
526
|
+
query: { type: "string", description: "Search query" },
|
|
527
|
+
},
|
|
528
|
+
required: ["query"],
|
|
529
|
+
},
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
name: "create_org",
|
|
533
|
+
description: "Create a new organization",
|
|
534
|
+
inputSchema: {
|
|
535
|
+
type: "object",
|
|
536
|
+
properties: {
|
|
537
|
+
name: { type: "string", description: "Organization name" },
|
|
538
|
+
domain: { type: "string", description: "Website domain" },
|
|
539
|
+
},
|
|
540
|
+
required: ["name"],
|
|
541
|
+
},
|
|
542
|
+
},
|
|
543
|
+
{
|
|
544
|
+
name: "search",
|
|
545
|
+
description: "Search across all entities (docs, boards, people, orgs)",
|
|
546
|
+
inputSchema: {
|
|
547
|
+
type: "object",
|
|
548
|
+
properties: {
|
|
549
|
+
query: { type: "string", description: "Search query" },
|
|
550
|
+
},
|
|
551
|
+
required: ["query"],
|
|
552
|
+
},
|
|
553
|
+
},
|
|
554
|
+
];
|
|
555
|
+
// Handle list tools
|
|
556
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
557
|
+
return { tools };
|
|
558
|
+
});
|
|
559
|
+
// Handle tool calls
|
|
560
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
561
|
+
const { name, arguments: args } = request.params;
|
|
562
|
+
try {
|
|
563
|
+
// Call the API endpoint
|
|
564
|
+
const response = await fetch(`${baseUrl}/api/mcp/execute`, {
|
|
565
|
+
method: "POST",
|
|
566
|
+
headers: {
|
|
567
|
+
"Content-Type": "application/json",
|
|
568
|
+
"Authorization": `Bearer ${config.accessToken}`,
|
|
569
|
+
},
|
|
570
|
+
body: JSON.stringify({
|
|
571
|
+
tool: name,
|
|
572
|
+
input: args,
|
|
573
|
+
workspaceId: config.workspaceId,
|
|
574
|
+
}),
|
|
575
|
+
});
|
|
576
|
+
if (!response.ok) {
|
|
577
|
+
const error = await response.text();
|
|
578
|
+
return {
|
|
579
|
+
content: [{ type: "text", text: `Error: ${error}` }],
|
|
580
|
+
isError: true,
|
|
581
|
+
};
|
|
582
|
+
}
|
|
583
|
+
const result = await response.json();
|
|
584
|
+
if (result.success) {
|
|
585
|
+
return {
|
|
586
|
+
content: [
|
|
587
|
+
{
|
|
588
|
+
type: "text",
|
|
589
|
+
text: result.message || JSON.stringify(result.data, null, 2),
|
|
590
|
+
},
|
|
591
|
+
],
|
|
592
|
+
};
|
|
593
|
+
}
|
|
594
|
+
else {
|
|
595
|
+
return {
|
|
596
|
+
content: [{ type: "text", text: `Error: ${result.error}` }],
|
|
597
|
+
isError: true,
|
|
598
|
+
};
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
catch (error) {
|
|
602
|
+
return {
|
|
603
|
+
content: [
|
|
604
|
+
{
|
|
605
|
+
type: "text",
|
|
606
|
+
text: `Error: ${error instanceof Error ? error.message : "Unknown error"}`,
|
|
607
|
+
},
|
|
608
|
+
],
|
|
609
|
+
isError: true,
|
|
610
|
+
};
|
|
611
|
+
}
|
|
612
|
+
});
|
|
613
|
+
// Start server
|
|
614
|
+
const transport = new StdioServerTransport();
|
|
615
|
+
await server.connect(transport);
|
|
616
|
+
}
|
|
617
|
+
// ============================================
|
|
618
|
+
// Main
|
|
619
|
+
// ============================================
|
|
620
|
+
if (isInstall) {
|
|
621
|
+
runInstall().catch((error) => {
|
|
622
|
+
console.error("Installation failed:", error);
|
|
623
|
+
process.exit(1);
|
|
624
|
+
});
|
|
625
|
+
}
|
|
626
|
+
else {
|
|
627
|
+
runServer().catch((error) => {
|
|
628
|
+
console.error("Server error:", error);
|
|
629
|
+
process.exit(1);
|
|
630
|
+
});
|
|
631
|
+
}
|
|
632
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@simple-product/mcp",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "MCP server for Simple Product - access docs, cards, boards, and customers from your coding agent",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"simple-product-mcp": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"type": "module",
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"dev": "tsc --watch",
|
|
13
|
+
"start": "node dist/index.js",
|
|
14
|
+
"prepublishOnly": "npm run build"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"mcp",
|
|
18
|
+
"model-context-protocol",
|
|
19
|
+
"claude",
|
|
20
|
+
"simple-product",
|
|
21
|
+
"ai-tools"
|
|
22
|
+
],
|
|
23
|
+
"author": "",
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
27
|
+
"chalk": "^5.3.0",
|
|
28
|
+
"open": "^10.1.0",
|
|
29
|
+
"ora": "^8.0.1"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@types/node": "^20.10.0",
|
|
33
|
+
"typescript": "^5.3.0"
|
|
34
|
+
},
|
|
35
|
+
"engines": {
|
|
36
|
+
"node": ">=18.0.0"
|
|
37
|
+
},
|
|
38
|
+
"files": [
|
|
39
|
+
"dist"
|
|
40
|
+
]
|
|
41
|
+
}
|