@filiksyos/mcptoskill 0.2.9 → 0.3.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/README.md CHANGED
@@ -68,6 +68,12 @@ npx @filiksyos/mcptoskill "https://mcp.supabase.com/mcp?project_ref=YOUR_REF" --
68
68
  npx @filiksyos/mcptoskill "https://mcp.exa.ai/mcp?exaApiKey=YOUR_KEY"
69
69
  ```
70
70
 
71
+ 7. Render MCP (API key auth) — create an API key from [Render Dashboard → Account Settings → API Keys](https://dashboard.render.com/settings#api-keys):
72
+
73
+ ```
74
+ npx @filiksyos/mcptoskill https://mcp.render.com/mcp --header "Authorization: Bearer YOUR_RENDER_API_KEY"
75
+ ```
76
+
71
77
  **VPS / headless** — Run the CLI on a remote machine. When prompted, open the auth URL on your laptop, complete OAuth, then copy the redirect URL from the address bar and paste it into the SSH terminal. No server needs to listen on localhost.
72
78
 
73
79
  **What gets generated** — two files are created:
package/dist/index.js CHANGED
@@ -1,38 +1,27 @@
1
1
  #!/usr/bin/env node
2
2
  import { mkdir, writeFile, chmod, readFile, copyFile } from "node:fs/promises";
3
- import { join, resolve } from "node:path";
3
+ import { join } from "node:path";
4
4
  import { homedir } from "node:os";
5
5
  import { existsSync } from "node:fs";
6
6
  import { connectAndDiscover } from "./client.js";
7
7
  import { generate } from "./generator.js";
8
8
  import { getProviderByMcpUrl } from "./providers.js";
9
9
  import { runLocalOAuth } from "./oauth.js";
10
+ import { promptAuth, promptTarget, promptApiKey } from "./prompts.js";
10
11
  const OPENCLAW_DIR = join(homedir(), ".openclaw");
11
12
  const OPENCLAW_SKILLS_DIR = join(OPENCLAW_DIR, "skills");
12
13
  const OPENCLAW_CONFIG = join(OPENCLAW_DIR, "openclaw.json");
13
- const MCPTOSKILL_TOKENS_DIR = join(OPENCLAW_DIR, "mcptoskill", "tokens");
14
+ const OPENCLAW_TOKENS_DIR = join(OPENCLAW_DIR, "mcptoskill", "tokens");
14
15
  const HERMES_SKILLS_DIR = join(homedir(), ".hermes", "skills", "mcptoskill");
16
+ const HERMES_TOKENS_DIR = join(homedir(), ".hermes", "mcptoskill", "tokens");
15
17
  function parseArgs(argv) {
16
18
  const args = argv.slice(2);
17
19
  const url = args.find((a) => !a.startsWith("--"));
18
20
  const nameFlag = args.find((a) => a.startsWith("--name="));
19
21
  const outFlag = args.find((a) => a.startsWith("--out="));
20
- const targetFlag = args.find((a) => a.startsWith("--target="));
21
22
  const skillKeyFlag = args.find((a) => a.startsWith("--skill-key="));
22
23
  const skillKeyIdx = args.findIndex((a) => a === "--skill-key");
23
24
  const headers = {};
24
- const targetRaw = targetFlag?.split("=")[1] ?? "openclaw";
25
- let target;
26
- if (targetRaw === "hermes") {
27
- target = "hermes";
28
- }
29
- else if (targetRaw === "openclaw") {
30
- target = "openclaw";
31
- }
32
- else {
33
- console.error(`Invalid --target: "${targetRaw}". Use openclaw or hermes.`);
34
- process.exit(1);
35
- }
36
25
  for (let i = 0; i < args.length; i++) {
37
26
  if (args[i] === "--header" && args[i + 1]) {
38
27
  const headerStr = args[++i];
@@ -50,17 +39,15 @@ function parseArgs(argv) {
50
39
  }
51
40
  }
52
41
  if (!url) {
53
- console.error("Usage: mcptoskill <mcp-server-url> [--target=openclaw|hermes] [--name=<skill-name>] [--out=<output-dir>] [--header \"Key: Value\"] [--skill-key=<key>]");
42
+ console.error("Usage: mcptoskill <mcp-server-url> [--name=<skill-name>] [--out=<output-dir>] [--header \"Key: Value\"] [--skill-key=<key>]");
54
43
  console.error("");
55
44
  console.error("Examples:");
56
45
  console.error(" mcptoskill https://mcp.context7.com/mcp");
57
- console.error(" mcptoskill https://mcp.context7.com/mcp --target=hermes");
58
- console.error(" mcptoskill https://mcp.notion.com/mcp # local OAuth, follow prompts");
46
+ console.error(" mcptoskill https://mcp.notion.com/mcp # prompts for auth & target");
59
47
  console.error(" mcptoskill https://mcp.context7.com/mcp --name=context7 --out=./skills");
60
48
  console.error(" mcptoskill https://mcp.supabase.com/mcp?project_ref=XXX --header \"Authorization: Bearer sbp_xxx\"");
61
49
  console.error("");
62
- console.error("OAuth (Notion, PostHog, Supabase): run without --header; CLI will prompt for local OAuth.");
63
- console.error("Also installs local ./scripts/<skill-name>.sh for integrations.");
50
+ console.error("Run without --header for interactive prompts: auth (OAuth/API key/none) and target (OpenClaw/Hermes/Both).");
64
51
  process.exit(1);
65
52
  }
66
53
  // Support both --skill-key=value and --skill-key value (from website copy)
@@ -68,14 +55,12 @@ function parseArgs(argv) {
68
55
  (skillKeyIdx >= 0 && args[skillKeyIdx + 1] && !args[skillKeyIdx + 1].startsWith("--")
69
56
  ? args[skillKeyIdx + 1]
70
57
  : undefined);
71
- const defaultOutDir = target === "hermes" ? HERMES_SKILLS_DIR : OPENCLAW_SKILLS_DIR;
72
58
  return {
73
59
  url,
74
60
  name: nameFlag?.split("=")[1],
75
- outDir: outFlag?.split("=")[1] ?? defaultOutDir,
61
+ outDir: outFlag?.split("=")[1],
76
62
  headers,
77
63
  skillKey,
78
- target,
79
64
  };
80
65
  }
81
66
  async function updateOpenClawConfig(skillName) {
@@ -105,9 +90,10 @@ async function updateOpenClawConfig(skillName) {
105
90
  config.skills = skills;
106
91
  await writeFile(OPENCLAW_CONFIG, JSON.stringify(config, null, 2) + "\n", "utf8");
107
92
  }
108
- async function saveTokenFile(skillName, data) {
109
- await mkdir(MCPTOSKILL_TOKENS_DIR, { recursive: true });
110
- const tokenFilePath = join(MCPTOSKILL_TOKENS_DIR, `${skillName}.json`);
93
+ async function saveTokenFile(skillName, data, target) {
94
+ const tokensDir = target === "hermes" ? HERMES_TOKENS_DIR : OPENCLAW_TOKENS_DIR;
95
+ await mkdir(tokensDir, { recursive: true });
96
+ const tokenFilePath = join(tokensDir, `${skillName}.json`);
111
97
  const now = Math.floor(Date.now() / 1000);
112
98
  const tokenData = {
113
99
  access_token: data.access_token,
@@ -128,10 +114,23 @@ async function saveTokenFile(skillName, data) {
128
114
  await chmod(tokenFilePath, 0o600);
129
115
  return tokenFilePath;
130
116
  }
117
+ function getTargets(choice) {
118
+ if (choice === "both")
119
+ return ["openclaw", "hermes"];
120
+ return [choice];
121
+ }
122
+ function getTokenPathForScript(skillName, target) {
123
+ return target === "hermes"
124
+ ? `$HOME/.hermes/mcptoskill/tokens/${skillName}.json`
125
+ : `$HOME/.openclaw/mcptoskill/tokens/${skillName}.json`;
126
+ }
131
127
  async function main() {
132
- const { url, name, outDir, headers, skillKey, target } = parseArgs(process.argv);
133
- let oauthTokenInfo;
134
- let tokenFilePath;
128
+ const { url, name, outDir: customOutDir, headers, skillKey } = parseArgs(process.argv);
129
+ const provider = getProviderByMcpUrl(url);
130
+ const hasOAuthProvider = !!provider;
131
+ const hasHeader = Object.keys(headers).length > 0;
132
+ let authChoice = "no_auth";
133
+ let oauthData;
135
134
  if (skillKey) {
136
135
  console.warn("--skill-key is deprecated. Use local OAuth instead (no flag needed).");
137
136
  const controller = new AbortController();
@@ -147,18 +146,7 @@ async function main() {
147
146
  const data = (await res.json());
148
147
  headers["Authorization"] = `Bearer ${data.access_token}`;
149
148
  if (data.refresh_token) {
150
- oauthTokenInfo = {
151
- access_token: data.access_token,
152
- refresh_token: data.refresh_token,
153
- expires_in: data.expires_in,
154
- token_endpoint: data.token_endpoint ?? "",
155
- client_id: data.client_id ?? "",
156
- mcp_oauth: data.mcp_oauth ?? false,
157
- token_encoding: data.token_encoding ?? "none",
158
- resource_url: data.resource_url ?? null,
159
- provider: data.provider,
160
- mcp_url: data.mcp_url,
161
- };
149
+ oauthData = data;
162
150
  }
163
151
  }
164
152
  catch {
@@ -169,43 +157,28 @@ async function main() {
169
157
  clearTimeout(timeout);
170
158
  }
171
159
  }
172
- let skillNameOverride;
173
- if (!skillKey && Object.keys(headers).length === 0) {
174
- const provider = getProviderByMcpUrl(url);
175
- if (target === "hermes" && provider) {
176
- console.error(`Hermes target does not support OAuth for ${provider.name}. Use --header "Authorization: Bearer YOUR_TOKEN" with a token, or --target=openclaw for OAuth.`);
177
- process.exit(1);
178
- }
179
- if (provider) {
160
+ else {
161
+ authChoice = await promptAuth(hasOAuthProvider, hasHeader);
162
+ if (authChoice === "oauth" && provider) {
180
163
  const oauthSkillName = name ?? `${provider.id}-mcp`;
181
- const oauthData = await runLocalOAuth(provider.id, oauthSkillName, url);
164
+ oauthData = await runLocalOAuth(provider.id, oauthSkillName, url);
182
165
  headers["Authorization"] = `Bearer ${oauthData.access_token}`;
183
- tokenFilePath = await saveTokenFile(oauthSkillName, oauthData);
184
- skillNameOverride = oauthSkillName;
185
- oauthTokenInfo = {
186
- access_token: oauthData.access_token,
187
- refresh_token: oauthData.refresh_token ?? "",
188
- expires_in: oauthData.expires_in,
189
- token_endpoint: oauthData.token_endpoint ?? "",
190
- client_id: oauthData.client_id ?? "",
191
- mcp_oauth: oauthData.mcp_oauth,
192
- token_encoding: oauthData.token_encoding,
193
- resource_url: oauthData.resource_url,
194
- provider: oauthData.provider,
195
- mcp_url: oauthData.mcp_url,
196
- tokenFilePath,
197
- ...(oauthData.client_secret && { client_secret: oauthData.client_secret }),
198
- };
199
- console.log(`✓ Token saved: ${tokenFilePath}`);
166
+ }
167
+ else if (authChoice === "api_key") {
168
+ if (!headers["Authorization"]) {
169
+ const token = await promptApiKey();
170
+ headers["Authorization"] = `Bearer ${token}`;
171
+ }
200
172
  }
201
173
  }
174
+ const targetChoice = await promptTarget();
175
+ const targets = getTargets(targetChoice);
202
176
  console.log(`Connecting to ${url} ...`);
203
177
  const result = await connectAndDiscover(url, headers);
204
178
  console.log(`Found: ${result.serverInfo.name} v${result.serverInfo.version} — ${result.tools.length} tool(s)`);
205
179
  for (const t of result.tools) {
206
180
  console.log(` • ${t.name}: ${t.description.slice(0, 80)}${t.description.length > 80 ? "…" : ""}`);
207
181
  }
208
- // Prefer explicit --name; fallback to known-URL mapping (many hosted MCPs return generic names like "MCP TypeScript Server on Vercel")
209
182
  const knownNames = {
210
183
  "mcp.exa.ai": "exa",
211
184
  "exa.ai": "exa",
@@ -219,71 +192,105 @@ async function main() {
219
192
  }
220
193
  })();
221
194
  const slug = result.serverInfo.name.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
195
+ const skillNameOverride = oauthData && provider ? (name ?? `${provider.id}-mcp`) : undefined;
222
196
  const skillName = skillNameOverride ?? name ?? (knownNames[host] ?? (host.endsWith(".exa.ai") ? "exa" : slug));
223
- if (oauthTokenInfo && !tokenFilePath) {
224
- tokenFilePath = await saveTokenFile(skillName, {
225
- ...oauthTokenInfo,
226
- workspace_name: null,
227
- });
228
- console.log(`✓ Token saved: ${tokenFilePath}`);
197
+ if (customOutDir) {
198
+ const target = targets[0];
199
+ const outDir = customOutDir;
200
+ const tokenFilePath = oauthData
201
+ ? await saveTokenFile(skillName, {
202
+ ...oauthData,
203
+ workspace_name: oauthData.workspace_name ?? null,
204
+ }, target)
205
+ : undefined;
206
+ const oauthTokenInfo = oauthData
207
+ ? {
208
+ access_token: oauthData.access_token,
209
+ refresh_token: oauthData.refresh_token ?? "",
210
+ expires_in: oauthData.expires_in,
211
+ token_endpoint: oauthData.token_endpoint ?? "",
212
+ client_id: oauthData.client_id ?? "",
213
+ mcp_oauth: oauthData.mcp_oauth ?? false,
214
+ token_encoding: oauthData.token_encoding ?? "none",
215
+ resource_url: oauthData.resource_url ?? null,
216
+ provider: oauthData.provider,
217
+ mcp_url: oauthData.mcp_url,
218
+ tokenFilePath: getTokenPathForScript(skillName, target),
219
+ ...(oauthData.client_secret && { client_secret: oauthData.client_secret }),
220
+ }
221
+ : undefined;
222
+ const { skillName: finalSkillName, skillMd, shellScript } = generate(result, skillName, oauthTokenInfo, target);
223
+ const skillDir = join(outDir, finalSkillName);
224
+ const scriptsDir = join(skillDir, "scripts");
225
+ await mkdir(scriptsDir, { recursive: true });
226
+ await writeFile(join(skillDir, "SKILL.md"), skillMd, "utf8");
227
+ const scriptPath = join(scriptsDir, `${finalSkillName}.sh`);
228
+ await writeFile(scriptPath, shellScript, "utf8");
229
+ await chmod(scriptPath, 0o755);
230
+ if (tokenFilePath)
231
+ console.log(`✓ Token saved: ${tokenFilePath}`);
232
+ console.log(`✓ Generated: ${skillDir}/`);
233
+ return;
234
+ }
235
+ for (const target of targets) {
236
+ const outDir = target === "hermes" ? HERMES_SKILLS_DIR : OPENCLAW_SKILLS_DIR;
237
+ const tokenFilePath = oauthData
238
+ ? await saveTokenFile(skillName, {
239
+ ...oauthData,
240
+ workspace_name: oauthData.workspace_name ?? null,
241
+ }, target)
242
+ : undefined;
243
+ const oauthTokenInfo = oauthData
244
+ ? {
245
+ access_token: oauthData.access_token,
246
+ refresh_token: oauthData.refresh_token ?? "",
247
+ expires_in: oauthData.expires_in,
248
+ token_endpoint: oauthData.token_endpoint ?? "",
249
+ client_id: oauthData.client_id ?? "",
250
+ mcp_oauth: oauthData.mcp_oauth ?? false,
251
+ token_encoding: oauthData.token_encoding ?? "none",
252
+ resource_url: oauthData.resource_url ?? null,
253
+ provider: oauthData.provider,
254
+ mcp_url: oauthData.mcp_url,
255
+ tokenFilePath: getTokenPathForScript(skillName, target),
256
+ ...(oauthData.client_secret && { client_secret: oauthData.client_secret }),
257
+ }
258
+ : undefined;
259
+ const { skillName: finalSkillName, skillMd, shellScript } = generate(result, skillName, oauthTokenInfo, target);
260
+ const skillDir = join(outDir, finalSkillName);
261
+ const scriptsDir = join(skillDir, "scripts");
262
+ await mkdir(scriptsDir, { recursive: true });
263
+ await writeFile(join(skillDir, "SKILL.md"), skillMd, "utf8");
264
+ const scriptPath = join(scriptsDir, `${finalSkillName}.sh`);
265
+ await writeFile(scriptPath, shellScript, "utf8");
266
+ await chmod(scriptPath, 0o755);
267
+ if (tokenFilePath)
268
+ console.log(`✓ Token saved: ${tokenFilePath}`);
269
+ console.log(`✓ Skill installed: ${finalSkillName} (${target})`);
270
+ console.log(` ${skillDir}/`);
271
+ if (target === "openclaw") {
272
+ await updateOpenClawConfig(finalSkillName);
273
+ }
229
274
  }
230
- const { skillName: finalSkillName, skillMd, shellScript } = generate(result, skillName, oauthTokenInfo ? { ...oauthTokenInfo, tokenFilePath: tokenFilePath } : undefined, target);
231
- const skillDir = join(outDir, finalSkillName);
232
- const scriptsDir = join(skillDir, "scripts");
233
- await mkdir(scriptsDir, { recursive: true });
234
- const skillMdPath = join(skillDir, "SKILL.md");
235
- const scriptPath = join(scriptsDir, `${finalSkillName}.sh`);
236
- await writeFile(skillMdPath, skillMd, "utf8");
237
- await writeFile(scriptPath, shellScript, "utf8");
238
- await chmod(scriptPath, 0o755);
239
275
  const localScriptsDir = join(process.cwd(), "scripts");
240
276
  await mkdir(localScriptsDir, { recursive: true });
277
+ const lastTarget = targets[targets.length - 1];
278
+ const lastOutDir = lastTarget === "hermes" ? HERMES_SKILLS_DIR : OPENCLAW_SKILLS_DIR;
279
+ const finalSkillName = skillNameOverride ?? skillName;
241
280
  const localScriptPath = join(localScriptsDir, `${finalSkillName}.sh`);
242
- await copyFile(scriptPath, localScriptPath);
281
+ await copyFile(join(lastOutDir, finalSkillName, "scripts", `${finalSkillName}.sh`), localScriptPath);
243
282
  await chmod(localScriptPath, 0o755);
244
283
  console.log(`✓ Copied to local workspace: ${localScriptPath}`);
245
- const isOpenClawInstall = resolve(outDir) === resolve(OPENCLAW_SKILLS_DIR);
246
- const isHermesInstall = resolve(outDir) === resolve(HERMES_SKILLS_DIR);
247
- if (isOpenClawInstall) {
248
- await updateOpenClawConfig(finalSkillName);
249
- console.log("");
250
- console.log(`✓ Skill installed: ${finalSkillName}`);
251
- console.log(` ${skillDir}/`);
252
- if (oauthTokenInfo) {
253
- console.log(` Token auto-refresh enabled (${oauthTokenInfo.provider})`);
254
- }
255
- console.log("");
256
- console.log("Restart OpenClaw (or wait for auto-reload), then try:");
257
- console.log(` "use ${result.serverInfo.name} to ${result.tools[0]?.name?.replace(/-/g, " ") ?? "run a tool"}"`);
258
- }
259
- else if (isHermesInstall) {
260
- console.log("");
261
- console.log(`✓ Skill installed: ${finalSkillName}`);
262
- console.log(` ${skillDir}/`);
263
- if (oauthTokenInfo) {
264
- console.log(` Token auto-refresh enabled (${oauthTokenInfo.provider})`);
265
- }
266
- console.log("");
267
- console.log("Restart Hermes (or wait for skills watcher), then try:");
268
- console.log(` "/${finalSkillName}" or "use ${result.serverInfo.name} to ${result.tools[0]?.name?.replace(/-/g, " ") ?? "run a tool"}"`);
269
- }
270
- else {
271
- console.log("");
272
- console.log(`Generated skill: ${finalSkillName}`);
273
- console.log(` ${skillMdPath}`);
274
- console.log(` ${scriptPath}`);
275
- if (oauthTokenInfo) {
276
- console.log(` Token auto-refresh enabled (${oauthTokenInfo.provider})`);
277
- }
278
- const installDir = target === "hermes" ? HERMES_SKILLS_DIR : OPENCLAW_SKILLS_DIR;
279
- const targetName = target === "hermes" ? "Hermes" : "OpenClaw";
280
- console.log("");
281
- console.log(`To install in ${targetName}:`);
282
- console.log(` cp -r ${skillDir} ${installDir}/`);
284
+ const targetNames = targets.map((t) => (t === "hermes" ? "Hermes" : "OpenClaw")).join(" & ");
285
+ console.log("");
286
+ if (oauthData) {
287
+ console.log(` Token auto-refresh enabled (${oauthData.provider})`);
283
288
  }
289
+ console.log(`Restart ${targetNames} (or wait for auto-reload), then try:`);
290
+ console.log(` "use ${result.serverInfo.name} to ${result.tools[0]?.name?.replace(/-/g, " ") ?? "run a tool"}"`);
284
291
  console.log("");
285
292
  console.log("Test the script directly:");
286
- console.log(` ${scriptPath} ${result.tools[0]?.name ?? "tool-name"} '{}'`);
293
+ console.log(` ${localScriptPath} ${result.tools[0]?.name ?? "tool-name"} '{}'`);
287
294
  }
288
295
  main().catch((err) => {
289
296
  console.error("Error:", err.message);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type TargetChoice = "openclaw" | "hermes" | "both";
2
+ export type AuthChoice = "oauth" | "api_key" | "no_auth";
3
+ export declare function promptAuth(hasOAuthProvider: boolean, hasHeader: boolean): Promise<AuthChoice>;
4
+ export declare function promptTarget(): Promise<TargetChoice>;
5
+ export declare function promptApiKey(): Promise<string>;
6
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAYzD,wBAAsB,UAAU,CAC9B,gBAAgB,EAAE,OAAO,EACzB,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,UAAU,CAAC,CAuBrB;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,CAa1D;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAMpD"}
@@ -0,0 +1,56 @@
1
+ import { createInterface } from "node:readline";
2
+ function question(prompt) {
3
+ return new Promise((resolve) => {
4
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
5
+ rl.question(prompt, (answer) => {
6
+ rl.close();
7
+ resolve(answer.trim());
8
+ });
9
+ });
10
+ }
11
+ export async function promptAuth(hasOAuthProvider, hasHeader) {
12
+ if (hasHeader)
13
+ return "api_key";
14
+ if (!process.stdin.isTTY) {
15
+ if (hasOAuthProvider) {
16
+ throw new Error("Non-interactive mode: OAuth requires a TTY. Use --header for API key.");
17
+ }
18
+ return "no_auth";
19
+ }
20
+ const options = hasOAuthProvider
21
+ ? "? Auth: (1) OAuth (2) API key (3) No auth\n> "
22
+ : "? Auth: (2) API key (3) No auth (OAuth only for Notion, PostHog, Supabase)\n> ";
23
+ const answer = await question(options);
24
+ const n = answer === "" ? "1" : answer;
25
+ if (hasOAuthProvider && (n === "1" || n.toLowerCase() === "oauth"))
26
+ return "oauth";
27
+ if (n === "2" || n.toLowerCase() === "api" || n.toLowerCase() === "apikey")
28
+ return "api_key";
29
+ if (n === "3" || n.toLowerCase() === "no" || n.toLowerCase() === "none")
30
+ return "no_auth";
31
+ if (hasOAuthProvider)
32
+ return "oauth";
33
+ return "no_auth";
34
+ }
35
+ export async function promptTarget() {
36
+ if (!process.stdin.isTTY) {
37
+ return "openclaw";
38
+ }
39
+ const answer = await question("? Install to: (1) OpenClaw (2) Hermes (3) Both\n> ");
40
+ const n = answer === "" ? "1" : answer;
41
+ if (n === "1" || n.toLowerCase() === "openclaw")
42
+ return "openclaw";
43
+ if (n === "2" || n.toLowerCase() === "hermes")
44
+ return "hermes";
45
+ if (n === "3" || n.toLowerCase() === "both")
46
+ return "both";
47
+ return "openclaw";
48
+ }
49
+ export async function promptApiKey() {
50
+ const token = await question("? Paste your Bearer token:\n> ");
51
+ if (!token) {
52
+ throw new Error("No token provided.");
53
+ }
54
+ return token;
55
+ }
56
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAMhD,SAAS,QAAQ,CAAC,MAAc;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7E,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;YAC7B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,gBAAyB,EACzB,SAAkB;IAElB,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAEhC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;QAC3F,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,gBAAgB;QAC9B,CAAC,CAAC,iDAAiD;QACnD,CAAC,CAAC,iFAAiF,CAAC;IAEtF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,CAAC,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAEvC,IAAI,gBAAgB,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACnF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC7F,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IAE1F,IAAI,gBAAgB;QAAE,OAAO,OAAO,CAAC;IACrC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,sDAAsD,CAAC,CAAC;IACtF,MAAM,CAAC,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAEvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IACnE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC/D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAE3D,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,gCAAgC,CAAC,CAAC;IAC/D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@filiksyos/mcptoskill",
3
- "version": "0.2.9",
4
- "description": "Turn any MCP server into an OpenClaw skill",
3
+ "version": "0.3.1",
4
+ "description": "Turn any MCP server into an OpenClaw or Hermes skill",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "mcptoskill": "dist/index.js"