@botuyo/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/dist/index.js CHANGED
@@ -1,80 +1,143 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * BotUyo MCP Server — Entry Point
3
+ * @botuyo/mcp — Entry Point
4
4
  *
5
- * Usage (Claude Desktop / Cursor config):
6
- * {
7
- * "mcpServers": {
8
- * "botuyo": {
9
- * "command": "node",
10
- * "args": ["/path/to/packages/mcp/dist/index.js"],
11
- * "env": {
12
- * "BOTUYO_API_KEY": "pk_live_...",
13
- * "BOTUYO_API_URL": "https://api.botuyo.com" // optional, defaults to production
14
- * }
15
- * }
16
- * }
17
- * }
5
+ * Sub-commands:
6
+ * npx @botuyo/mcp login — Login with email/password
7
+ * npx @botuyo/mcp tenants — List your tenants
8
+ * npx @botuyo/mcp switch-tenant — Switch active tenant
9
+ * npx @botuyo/mcp setup — Generate mcp.json for your editor
10
+ * npx @botuyo/mcp whoami — Show current credentials
11
+ * npx @botuyo/mcp logout — Clear stored credentials
12
+ * npx @botuyo/mcp — Start the MCP server (default)
13
+ *
14
+ * Token resolution (in priority order):
15
+ * 1. BOTUYO_TOKEN env var
16
+ * 2. ~/.botuyo/credentials.json (saved by `npx @botuyo/mcp login`)
18
17
  */
19
18
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
20
19
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
21
20
  import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
22
21
  import { BotuyoApiClient } from './client.js';
23
22
  import { ALL_TOOLS, TOOL_HANDLERS } from './tools/index.js';
24
- // ─── Config ────────────────────────────────────────────────────────────────────
25
- const API_KEY = process.env.BOTUYO_API_KEY;
23
+ import { resolveToken, readCredentials, clearCredentials, isTokenExpired } from './commands/credentials.js';
26
24
  const API_URL = process.env.BOTUYO_API_URL || 'https://api.botuyo.com';
27
- if (!API_KEY) {
28
- console.error('[botuyo-mcp] Error: BOTUYO_API_KEY environment variable is required');
29
- process.exit(1);
30
- }
31
- // ─── Client ────────────────────────────────────────────────────────────────────
32
- const client = new BotuyoApiClient({ apiKey: API_KEY, apiUrl: API_URL });
33
- // ─── MCP Server ────────────────────────────────────────────────────────────────
34
- const server = new Server({ name: 'botuyo-mcp', version: '0.1.0' }, { capabilities: { tools: {} } });
35
- /** List all available MCP tools */
36
- server.setRequestHandler(ListToolsRequestSchema, async () => ({
37
- tools: ALL_TOOLS
38
- }));
39
- /** Dispatch tool calls */
40
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
41
- const { name, arguments: args } = request.params;
42
- const handler = TOOL_HANDLERS[name];
43
- if (!handler) {
44
- return {
45
- content: [{ type: 'text', text: `Unknown tool: ${name}` }],
46
- isError: true
47
- };
48
- }
49
- try {
50
- const result = await handler(client, args || {});
51
- return {
52
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
53
- };
25
+ // ─── Sub-command routing ──────────────────────────────────────────────────────
26
+ const [, , cmd, ...rest] = process.argv;
27
+ async function main() {
28
+ switch (cmd) {
29
+ // ── login ──────────────────────────────────────────────────────────────
30
+ case 'login': {
31
+ const { runLogin } = await import('./commands/login.js');
32
+ await runLogin(rest);
33
+ return;
34
+ }
35
+ // ── auth (browser OAuth flow) ────────────────────────────────────────
36
+ case 'auth': {
37
+ const { runAuth } = await import('./commands/auth.js');
38
+ await runAuth(rest);
39
+ return;
40
+ }
41
+ // ── tenants ────────────────────────────────────────────────────────────
42
+ case 'tenants': {
43
+ const { runTenants } = await import('./commands/tenants.js');
44
+ await runTenants();
45
+ return;
46
+ }
47
+ // ── switch-tenant ─────────────────────────────────────────────────────
48
+ case 'switch-tenant': {
49
+ const { runSwitchTenant } = await import('./commands/switch_tenant.js');
50
+ await runSwitchTenant();
51
+ return;
52
+ }
53
+ // ── setup ──────────────────────────────────────────────────────────────
54
+ case 'setup': {
55
+ const { runSetup } = await import('./commands/setup.js');
56
+ await runSetup(rest);
57
+ return;
58
+ }
59
+ // ── whoami ─────────────────────────────────────────────────────────────
60
+ case 'whoami': {
61
+ const token = await resolveToken();
62
+ const creds = await readCredentials();
63
+ if (!token || !creds) {
64
+ console.log('No estás autenticado. Ejecutá: npx @botuyo/mcp login');
65
+ return;
66
+ }
67
+ const expired = await isTokenExpired();
68
+ console.log(`Email: ${creds.email}`);
69
+ console.log(`Tenant: ${creds.tenantName}`);
70
+ console.log(`Role: ${creds.role}`);
71
+ console.log(`Expira: ${new Date(creds.expiresAt).toLocaleDateString()}`);
72
+ console.log(`Estado: ${expired ? '❌ Expirado — ejecutá: npx @botuyo/mcp login' : '✅ Activo'}`);
73
+ return;
74
+ }
75
+ // ── logout ─────────────────────────────────────────────────────────────
76
+ case 'logout': {
77
+ await clearCredentials();
78
+ console.log('✅ Sesión cerrada.');
79
+ return;
80
+ }
81
+ // ── default: start MCP server ──────────────────────────────────────────
82
+ default: {
83
+ await startMcpServer();
84
+ }
54
85
  }
55
- catch (error) {
56
- const msg = error instanceof Error ? error.message : String(error);
57
- return {
58
- content: [{ type: 'text', text: `Error: ${msg}` }],
59
- isError: true
60
- };
86
+ }
87
+ async function startMcpServer() {
88
+ // Resolve JWT token
89
+ const token = await resolveToken();
90
+ if (!token) {
91
+ const expired = await isTokenExpired();
92
+ if (expired) {
93
+ console.error('[botuyo-mcp] Error: Tu sesión expiró.');
94
+ }
95
+ else {
96
+ console.error('[botuyo-mcp] Error: No hay credenciales guardadas.');
97
+ }
98
+ console.error('[botuyo-mcp] Ejecutá `npx @botuyo/mcp login` para autenticarte.');
99
+ process.exit(1);
61
100
  }
62
- });
63
- // ─── Start ─────────────────────────────────────────────────────────────────────
64
- async function main() {
101
+ const creds = await readCredentials();
102
+ const client = new BotuyoApiClient({ token, apiUrl: API_URL });
65
103
  // Verify credentials on startup
66
104
  try {
67
- const auth = await client.authenticate();
68
- console.error(`[botuyo-mcp] Connected to tenant "${auth.tenantName}" as ${auth.role}`);
69
- if (!auth.canWrite) {
70
- console.error('[botuyo-mcp] Your role is viewer — write operations will be rejected');
71
- }
105
+ const auth = await client.verify();
106
+ const tenantName = creds?.tenantName || auth.tenantId;
107
+ const role = creds?.role || auth.role;
108
+ console.error(`[botuyo-mcp] Conectado a "${tenantName}" como ${role}`);
72
109
  }
73
110
  catch (err) {
74
111
  const msg = err instanceof Error ? err.message : String(err);
75
112
  console.error(`[botuyo-mcp] ✗ Auth failed: ${msg}`);
113
+ console.error('[botuyo-mcp] Ejecutá `npx @botuyo/mcp login` para re-autenticarte.');
76
114
  process.exit(1);
77
115
  }
116
+ // ── MCP Server ─────────────────────────────────────────────────────────
117
+ const server = new Server({ name: 'botuyo-mcp', version: '0.3.0' }, { capabilities: { tools: {} } });
118
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: ALL_TOOLS }));
119
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
120
+ const { name, arguments: args } = request.params;
121
+ const handler = TOOL_HANDLERS[name];
122
+ if (!handler) {
123
+ return { content: [{ type: 'text', text: `Unknown tool: ${name}` }], isError: true };
124
+ }
125
+ try {
126
+ const result = await handler(client, args || {});
127
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
128
+ }
129
+ catch (error) {
130
+ const msg = error instanceof Error ? error.message : String(error);
131
+ // Detect expired token and give helpful message
132
+ if (msg.includes('401') || msg.includes('expirada') || msg.includes('expired')) {
133
+ return {
134
+ content: [{ type: 'text', text: `Sesión expirada. El usuario debe ejecutar: npx @botuyo/mcp login` }],
135
+ isError: true
136
+ };
137
+ }
138
+ return { content: [{ type: 'text', text: `Error: ${msg}` }], isError: true };
139
+ }
140
+ });
78
141
  const transport = new StdioServerTransport();
79
142
  await server.connect(transport);
80
143
  console.error('[botuyo-mcp] Server running via stdio');
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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"}
package/package.json CHANGED
@@ -1,14 +1,23 @@
1
1
  {
2
2
  "name": "@botuyo/mcp",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "BotUyo MCP Server — create and manage AI agents via Model Context Protocol",
5
- "keywords": ["mcp", "botuyo", "ai-agents", "chatbot", "model-context-protocol"],
5
+ "keywords": [
6
+ "mcp",
7
+ "botuyo",
8
+ "ai-agents",
9
+ "chatbot",
10
+ "model-context-protocol"
11
+ ],
6
12
  "type": "module",
7
13
  "main": "dist/index.js",
8
14
  "bin": {
9
15
  "botuyo-mcp": "dist/index.js"
10
16
  },
11
- "files": ["dist", "README.md"],
17
+ "files": [
18
+ "dist",
19
+ "README.md"
20
+ ],
12
21
  "scripts": {
13
22
  "build": "tsc",
14
23
  "dev": "tsc -w",