vibie-mcp 0.1.0 → 0.2.1

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Vibie
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -4,11 +4,17 @@ MCP server for [Vibie](https://vibie.io) — deploy static folders to permanent
4
4
 
5
5
  ## Install
6
6
 
7
- In your MCP client's config, add:
7
+ ### One-line auto setup (recommended)
8
8
 
9
- ### Claude Desktop
9
+ ```sh
10
+ npx vibie-mcp setup
11
+ ```
12
+
13
+ Auto-detects Claude Desktop (Windows Store + APPDATA / macOS / Linux) and Cursor (`~/.cursor/mcp.json`) configs, then adds the `vibie` entry. Restart the client and you're done.
14
+
15
+ ### Manual config
10
16
 
11
- `%APPDATA%\Claude\claude_desktop_config.json` (Windows) or `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):
17
+ If auto setup doesn't fit your client, add this to your MCP config (`claude_desktop_config.json`, `~/.cursor/mcp.json`, etc.):
12
18
 
13
19
  ```json
14
20
  {
@@ -21,11 +27,7 @@ In your MCP client's config, add:
21
27
  }
22
28
  ```
23
29
 
24
- ### Cursor
25
-
26
- Same pattern — add to your Cursor MCP config.
27
-
28
- After saving, restart your client.
30
+ After saving, fully quit and restart your client.
29
31
 
30
32
  ## First-time auth
31
33
 
package/dist/index.js CHANGED
@@ -22,9 +22,17 @@ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
22
22
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
23
23
  import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
24
24
  import { toolDefinitions, handleToolCall } from "./tools.js";
25
+ import { runSetup } from "./setup.js";
26
+ // 서브커맨드 분기. `npx vibie-mcp setup` 으로 호출 시 setup 모드.
27
+ // 그 외엔 stdio MCP server 로 동작 (Claude Desktop / Cursor 가 spawn).
28
+ const subcommand = process.argv[2];
29
+ if (subcommand === "setup") {
30
+ await runSetup();
31
+ process.exit(0);
32
+ }
25
33
  const server = new Server({
26
34
  name: "vibie",
27
- version: "0.1.0"
35
+ version: "0.2.1"
28
36
  }, {
29
37
  capabilities: { tools: {} }
30
38
  });
package/dist/setup.js ADDED
@@ -0,0 +1,134 @@
1
+ /**
2
+ * `vibie-mcp setup` — Claude Desktop / Cursor 의 MCP config 파일을 자동 탐지해서
3
+ * `vibie` 항목을 추가/갱신한다.
4
+ *
5
+ * 지원 클라이언트:
6
+ * - Claude Desktop (Win Store + APPDATA, macOS, Linux)
7
+ * - Cursor (글로벌 ~/.cursor/mcp.json)
8
+ *
9
+ * 없는 client 는 조용히 skip. 이미 vibie 항목이 있으면 갱신.
10
+ *
11
+ * 사용법: npx vibie-mcp setup
12
+ */
13
+ import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from "node:fs";
14
+ import { dirname, join } from "node:path";
15
+ import { homedir, platform } from "node:os";
16
+ const VIBIE_ENTRY = {
17
+ command: "npx",
18
+ args: ["-y", "vibie-mcp"]
19
+ };
20
+ function findClaudeDesktopConfig() {
21
+ const home = homedir();
22
+ const candidates = [];
23
+ if (platform() === "win32") {
24
+ // Microsoft Store 버전 — %LOCALAPPDATA%\Packages\Claude_xxx\LocalCache\Roaming\Claude\...
25
+ const localAppData = process.env.LOCALAPPDATA;
26
+ if (localAppData) {
27
+ const packages = join(localAppData, "Packages");
28
+ try {
29
+ if (existsSync(packages)) {
30
+ for (const entry of readdirSync(packages)) {
31
+ if (entry.startsWith("Claude_")) {
32
+ candidates.push(join(packages, entry, "LocalCache", "Roaming", "Claude", "claude_desktop_config.json"));
33
+ }
34
+ }
35
+ }
36
+ }
37
+ catch {
38
+ // ignore — best-effort scan
39
+ }
40
+ }
41
+ // 일반 인스톨러 버전 — %APPDATA%\Claude\...
42
+ if (process.env.APPDATA) {
43
+ candidates.push(join(process.env.APPDATA, "Claude", "claude_desktop_config.json"));
44
+ }
45
+ }
46
+ else if (platform() === "darwin") {
47
+ candidates.push(join(home, "Library", "Application Support", "Claude", "claude_desktop_config.json"));
48
+ }
49
+ else {
50
+ // linux 등
51
+ candidates.push(join(home, ".config", "Claude", "claude_desktop_config.json"));
52
+ }
53
+ // 이미 존재하는 첫 후보. 없으면 첫 후보 경로를 새로 만들 자리로 반환.
54
+ const existing = candidates.find((p) => existsSync(p));
55
+ return existing ?? candidates[0];
56
+ }
57
+ function discoverClients() {
58
+ const home = homedir();
59
+ const targets = [];
60
+ const claudePath = findClaudeDesktopConfig();
61
+ if (claudePath) {
62
+ targets.push({
63
+ id: "claude-desktop",
64
+ label: "Claude Desktop",
65
+ configPath: claudePath,
66
+ exists: existsSync(claudePath)
67
+ });
68
+ }
69
+ const cursorPath = join(home, ".cursor", "mcp.json");
70
+ targets.push({
71
+ id: "cursor",
72
+ label: "Cursor",
73
+ configPath: cursorPath,
74
+ exists: existsSync(cursorPath)
75
+ });
76
+ return targets;
77
+ }
78
+ function installToTarget(target) {
79
+ let config = {};
80
+ if (target.exists) {
81
+ const raw = readFileSync(target.configPath, "utf8");
82
+ if (raw.trim().length > 0) {
83
+ config = JSON.parse(raw);
84
+ }
85
+ }
86
+ else {
87
+ mkdirSync(dirname(target.configPath), { recursive: true });
88
+ }
89
+ const mcpServers = config.mcpServers && typeof config.mcpServers === "object"
90
+ ? config.mcpServers
91
+ : {};
92
+ const alreadyExists = "vibie" in mcpServers;
93
+ mcpServers.vibie = VIBIE_ENTRY;
94
+ config.mcpServers = mcpServers;
95
+ writeFileSync(target.configPath, JSON.stringify(config, null, 2) + "\n", "utf8");
96
+ return alreadyExists ? "updated" : "added";
97
+ }
98
+ export async function runSetup() {
99
+ console.log("🔵 Vibie MCP 설치를 시작합니다.\n");
100
+ const targets = discoverClients();
101
+ const installed = [];
102
+ const failed = [];
103
+ for (const target of targets) {
104
+ try {
105
+ const result = installToTarget(target);
106
+ installed.push({ label: target.label, result, path: target.configPath });
107
+ }
108
+ catch (err) {
109
+ failed.push({
110
+ label: target.label,
111
+ error: err instanceof Error ? err.message : String(err)
112
+ });
113
+ }
114
+ }
115
+ for (const item of installed) {
116
+ const verb = item.result === "updated" ? "갱신" : "추가";
117
+ console.log(`✓ ${item.label}: vibie 항목 ${verb}`);
118
+ console.log(` ${item.path}`);
119
+ }
120
+ for (const item of failed) {
121
+ console.log(`✗ ${item.label}: ${item.error}`);
122
+ }
123
+ console.log("");
124
+ if (installed.length === 0) {
125
+ console.log("설치할 수 있는 클라이언트를 찾지 못했어요. Claude Desktop 또는 Cursor 가 설치돼 있는지 확인해 주세요.");
126
+ return;
127
+ }
128
+ console.log("📌 다음 단계");
129
+ console.log(" 1. 클라이언트를 완전히 종료 후 다시 실행 (Claude Desktop 은 트레이에서 Quit 후 재시작)");
130
+ console.log(' 2. 대화창에서 "내 vibie 사이트 목록 보여줘" 같은 메시지로 시작');
131
+ console.log(" 3. 처음 호출 시 브라우저로 권한 부여 페이지가 안내됩니다 (Google 로그인)");
132
+ console.log("");
133
+ console.log("문제가 있으면: https://www.npmjs.com/package/vibie-mcp");
134
+ }
package/package.json CHANGED
@@ -1,13 +1,16 @@
1
1
  {
2
2
  "name": "vibie-mcp",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "Vibie MCP server — deploy folders to vibie.page from Claude Desktop / Cursor / any MCP client.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://vibie.io",
7
+ "mcpName": "io.github.shdomi8599/vibie-mcp",
7
8
  "repository": {
8
9
  "type": "git",
9
- "url": "https://github.com/shdomi8599/vibie.git",
10
- "directory": "packages/vibie-mcp"
10
+ "url": "git+https://github.com/shdomi8599/vibie-mcp.git"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/shdomi8599/vibie-mcp/issues"
11
14
  },
12
15
  "keywords": [
13
16
  "vibie",