@vespermcp/mcp-server 1.0.8 → 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 CHANGED
@@ -31,23 +31,23 @@ Vesper is a Model Context Protocol (MCP) server that helps you find, analyze, an
31
31
 
32
32
  ## 📦 Installation
33
33
 
34
- ### Option A: Install via NPX (Easiest)
35
- Run the setup wizard to automatically configure Vesper for Cursor, Claude Desktop, and VS Code:
34
+ ## 🚀 Quick Start (VS Code + Copilot)
36
35
 
37
- ```bash
38
- npx @vespermcp/mcp-server@latest --setup
39
- ```
36
+ The fastest way to install Vesper and configure it for **GitHub Copilot Chat** or **Cursor** is to run the automated setup:
40
37
 
41
- ### Option B: Install Globally
42
38
  ```bash
43
- npm install -g @vespermcp/mcp-server
44
- vesper --setup
39
+ npx -y @vespermcp/mcp-server@latest --setup
45
40
  ```
46
41
 
47
- The postinstall script will automatically:
48
- - Install Python dependencies (opencv-python, librosa, etc.)
49
- - Create data directories in `~/.vesper`
50
- - Display setup instructions
42
+ 1. Select **Visual Studio Code (Settings.json)** from the list.
43
+ 2. Restart VS Code.
44
+ 3. Open Copilot Chat and look for the **MCP Servers** section.
45
+
46
+ ## 🛠️ Configuration
47
+ Vesper supports:
48
+ - **GitHub Copilot Chat**: Automated setup via `settings.json`.
49
+ - **Cursor**: Automated setup via `mcp.json`.
50
+ - **Claude Desktop**: Automated setup via `claude_desktop_config.json`.
51
51
 
52
52
  ### Manual Python Setup (if needed)
53
53
 
@@ -24,20 +24,6 @@ export class ConfigManager {
24
24
  : path.join(home, "Library", "Application Support", "Cursor", "User", "globalStorage", "rohit-gohri.cursor-mcp", "mcp.json"),
25
25
  key: "mcpServers"
26
26
  },
27
- "vscode-cline": {
28
- name: "VS Code (Cline)",
29
- path: isWin
30
- ? path.join(appData, "Code", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json")
31
- : path.join(home, "Library", "Application Support", "Code", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json"),
32
- key: "mcpServers"
33
- },
34
- "vscode-roo-code": {
35
- name: "VS Code (Roo Code)",
36
- path: isWin
37
- ? path.join(appData, "Code", "User", "globalStorage", "RooVeterans.roo-cline", "settings", "cline_mcp_settings.json")
38
- : path.join(home, "Library", "Application Support", "Code", "User", "globalStorage", "RooVeterans.roo-cline", "settings", "cline_mcp_settings.json"),
39
- key: "mcpServers"
40
- },
41
27
  "cursor-project": {
42
28
  name: "Cursor (Project-specific)",
43
29
  path: path.join(process.cwd(), ".cursor", "mcp.json"),
@@ -45,26 +31,16 @@ export class ConfigManager {
45
31
  },
46
32
  "vscode-copilot": {
47
33
  name: "VS Code (Copilot)",
48
- path: path.join(home, ".copilot", "mcp-config.json"),
34
+ path: isWin
35
+ ? path.join(appData, "Code", "User", "globalStorage", "github.copilot-chat", "mcp.json")
36
+ : path.join(home, "Library", "Application Support", "Code", "User", "globalStorage", "github.copilot-chat", "mcp.json"),
49
37
  key: "mcpServers"
50
38
  },
51
39
  "vscode-global": {
52
40
  name: "VS Code (Standard MCP)",
53
41
  path: isWin
54
- ? path.join(appData, "Code", "User", "mcp.json")
55
- : path.join(home, "Library", "Application Support", "Code", "User", "mcp.json"),
56
- key: "mcpServers"
57
- },
58
- "vscode-project": {
59
- name: "VS Code (Project-specific)",
60
- path: path.join(process.cwd(), ".vscode", "mcp.json"),
61
- key: "mcpServers"
62
- },
63
- "vscode-insiders": {
64
- name: "VS Code Insiders",
65
- path: isWin
66
- ? path.join(appData, "Code - Insiders", "User", "mcp.json")
67
- : path.join(home, "Library", "Application Support", "Code - Insiders", "User", "mcp.json"),
42
+ ? path.join(appData, "Code", "User", "globalStorage", "mcp-servers", "mcp.json")
43
+ : path.join(home, "Library", "Application Support", "Code", "User", "globalStorage", "mcp-servers", "mcp.json"),
68
44
  key: "mcpServers"
69
45
  },
70
46
  "vscode-settings": {
@@ -73,11 +49,6 @@ export class ConfigManager {
73
49
  ? path.join(appData, "Code", "User", "settings.json")
74
50
  : path.join(home, "Library", "Application Support", "Code", "User", "settings.json"),
75
51
  key: "github.copilot.chat.mcp.servers"
76
- },
77
- "vscode-root": {
78
- name: "VS Code (Workspace Root)",
79
- path: path.join(process.cwd(), "mcp.json"),
80
- key: "mcpServers"
81
52
  }
82
53
  };
83
54
  }
@@ -89,34 +60,23 @@ export class ConfigManager {
89
60
  const home = this.getHomeDir();
90
61
  for (const [key, cp] of Object.entries(paths)) {
91
62
  const isClaude = key === "claude-desktop";
92
- const isCursor = key === "cursor";
63
+ const isCursor = key === "cursor" || key === "cursor-project";
93
64
  const isVSCode = key.startsWith("vscode");
94
65
  const isCopilot = key === "vscode-copilot";
95
- const isStandard = key === "vscode-global";
96
- const isSettings = key === "vscode-settings";
97
- const isRoot = key === "vscode-root";
98
- const hasClaudeFolder = fs.existsSync(path.join(appData, "Claude")) || (process.platform === "darwin" && fs.existsSync(path.join(home, "Library", "Application Support", "Claude")));
99
- const hasCursorFolder = fs.existsSync(path.join(appData, "Cursor")) || fs.existsSync(path.join(home, ".cursor")) || (process.platform === "darwin" && fs.existsSync(path.join(home, "Library", "Application Support", "Cursor")));
100
- const hasCodeFolder = fs.existsSync(path.join(appData, "Code")) || fs.existsSync(path.join(home, ".vscode")) || (process.platform === "darwin" && fs.existsSync(path.join(home, "Library", "Application Support", "Code")));
101
- const hasInsidersFolder = fs.existsSync(path.join(appData, "Code - Insiders"));
102
- const hasCopilotFolder = fs.existsSync(path.join(home, ".copilot"));
103
- if (process.env.VESPER_DEBUG) {
104
- console.log(`[Debug] Checking ${key}:`);
105
- console.log(` - Config Path: ${cp.path} (${fs.existsSync(cp.path) ? "EXISTS" : "MISSING"})`);
106
- }
107
- const isCurrentIDE = (isCursor && (termProgram.includes("cursor") || (termProgram === "vscode" && hasCursorFolder))) ||
66
+ const isMac = process.platform === "darwin";
67
+ const hasClaudeFolder = fs.existsSync(path.join(appData, "Claude")) || (isMac && fs.existsSync(path.join(home, "Library", "Application Support", "Claude")));
68
+ const hasCursorFolder = fs.existsSync(path.join(appData, "Cursor")) || fs.existsSync(path.join(home, ".cursor")) || (isMac && fs.existsSync(path.join(home, "Library", "Application Support", "Cursor")));
69
+ const hasCodeFolder = fs.existsSync(path.join(appData, "Code")) || fs.existsSync(path.join(home, ".vscode")) || (isMac && fs.existsSync(path.join(home, "Library", "Application Support", "Code")));
70
+ const hasCopilotFolder = hasCodeFolder || fs.existsSync(path.join(home, ".copilot"));
71
+ const isCurrentIDE = (isCursor && termProgram.includes("cursor")) ||
108
72
  (isClaude && termProgram.includes("claude")) ||
109
- (isVSCode && termProgram === "vscode" && (hasCodeFolder || hasInsidersFolder)) ||
110
- (isCopilot && hasCopilotFolder) ||
111
- (isStandard && termProgram === "vscode") ||
112
- (isSettings && termProgram === "vscode");
113
- // Also check if the config file actually exists OR the root folder exists
114
- const shouldDetectByFolder = (isClaude && hasClaudeFolder) ||
73
+ (isVSCode && termProgram === "vscode" && hasCodeFolder);
74
+ // Detection logic
75
+ if ((isClaude && hasClaudeFolder) ||
115
76
  (isCursor && hasCursorFolder) ||
116
- (isVSCode && (hasCodeFolder || hasInsidersFolder)) ||
117
- (isCopilot && hasCopilotFolder) ||
118
- (isSettings && hasCodeFolder);
119
- if (shouldDetectByFolder || fs.existsSync(cp.path) || isCurrentIDE || key === "cursor-project" || key === "vscode-project" || key === "vscode-root") {
77
+ (isVSCode && hasCodeFolder) ||
78
+ isCurrentIDE ||
79
+ fs.existsSync(cp.path)) {
120
80
  let displayName = cp.name;
121
81
  if (isCurrentIDE) {
122
82
  displayName += " (Current Terminal)";
@@ -131,8 +91,7 @@ export class ConfigManager {
131
91
  // Try to find absolute paths for maximum reliability in VS Code/Copilot
132
92
  try {
133
93
  const nodeExe = process.execPath;
134
- // ConfigManager is in build/config/config-manager.js
135
- // index.js is in build/index.js
94
+ // index.js is in build/index.js relative to ConfigManager in build/config/config-manager.js
136
95
  const vesperScript = path.resolve(__dirname, "../../index.js");
137
96
  if (fs.existsSync(vesperScript)) {
138
97
  return {
@@ -190,11 +149,12 @@ export class ConfigManager {
190
149
  // Also add alias for easy upgrading
191
150
  mcpServers["@vespermcp/mcp-server"] = serverConfig;
192
151
  current[lastKey] = mcpServers;
193
- // If we are writing to settings.json, also add "mcp.servers" for native VS Code MCP view
194
- if (configPath.key.includes("copilot")) {
152
+ // If we are writing to settings.json or a copilot-specific file, sync to native mcp.servers key too
153
+ if (configPath.key.includes("copilot") || configPath.path.includes("settings.json")) {
195
154
  if (!config["mcp.servers"])
196
155
  config["mcp.servers"] = {};
197
156
  config["mcp.servers"]["vesper"] = serverConfig;
157
+ config["mcp.servers"]["@vespermcp/mcp-server"] = serverConfig;
198
158
  }
199
159
  const content = JSON.stringify(config, null, 2);
200
160
  if (process.env.VESPER_DEBUG) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vespermcp/mcp-server",
3
- "version": "1.0.8",
3
+ "version": "1.1.0",
4
4
  "description": "AI-powered dataset discovery, quality analysis, and preparation MCP server with multimodal support (text, image, audio, video)",
5
5
  "type": "module",
6
6
  "main": "build/index.js",