@taotao7/bypass-mcp 1.7.1 → 1.9.2

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
@@ -9,6 +9,8 @@ import { registerOrderTools } from "./tools/orders.js";
9
9
  import { registerStatsTools } from "./tools/stats.js";
10
10
  import { registerPromoTools } from "./tools/promo.js";
11
11
  import { registerReferralTools } from "./tools/referral.js";
12
+ import { registerKnowledgeTools } from "./tools/knowledge.js";
13
+ import { registerUploadTools } from "./tools/upload.js";
12
14
  const apiUrl = process.env.BYPASS_API_URL;
13
15
  const apiToken = process.env.BYPASS_API_TOKEN;
14
16
  if (!apiUrl || !apiToken) {
@@ -30,6 +32,8 @@ registerOrderTools(server);
30
32
  registerStatsTools(server);
31
33
  registerPromoTools(server);
32
34
  registerReferralTools(server);
35
+ registerKnowledgeTools(server);
36
+ registerUploadTools(server);
33
37
  async function main() {
34
38
  const transport = new StdioServerTransport();
35
39
  await server.connect(transport);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAE9C,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,OAAO,CAAC,KAAK,CACX,gFAAgF,CACjF,CAAC;IACF,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;IAChF,OAAO,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;IAC/F,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;IACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAE1B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,mBAAmB;IACzB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAE9B,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACvD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAE9C,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,OAAO,CAAC,KAAK,CACX,gFAAgF,CACjF,CAAC;IACF,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;IAChF,OAAO,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;IAC/F,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;IACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAE1B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,mBAAmB;IACzB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAE5B,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACvD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -3,3 +3,7 @@ export declare function apiGet<T = unknown>(path: string): Promise<T>;
3
3
  export declare function apiPost<T = unknown>(path: string, body: unknown): Promise<T>;
4
4
  export declare function apiPatch<T = unknown>(path: string, body: unknown): Promise<T>;
5
5
  export declare function apiDelete<T = unknown>(path: string): Promise<T>;
6
+ export declare function apiPostFormData<T = unknown>(path: string, formData: FormData): Promise<T>;
7
+ export declare function apiUploadFile(fileBuffer: Buffer, fileName: string, mimeType: string): Promise<{
8
+ url: string;
9
+ }>;
@@ -34,4 +34,33 @@ export function apiPatch(path, body) {
34
34
  export function apiDelete(path) {
35
35
  return request("DELETE", path);
36
36
  }
37
+ export async function apiPostFormData(path, formData) {
38
+ const url = `${baseUrl}/v1${path}`;
39
+ const res = await fetch(url, {
40
+ method: "POST",
41
+ headers: { Authorization: `Bearer ${apiToken}` },
42
+ body: formData,
43
+ });
44
+ if (!res.ok) {
45
+ const text = await res.text();
46
+ throw new Error(`API error ${res.status}: ${text}`);
47
+ }
48
+ return res.json();
49
+ }
50
+ export async function apiUploadFile(fileBuffer, fileName, mimeType) {
51
+ const formData = new FormData();
52
+ const blob = new Blob([fileBuffer], { type: mimeType });
53
+ formData.append("file", blob, fileName);
54
+ const url = `${baseUrl}/v1/upload`;
55
+ const res = await fetch(url, {
56
+ method: "POST",
57
+ headers: { Authorization: `Bearer ${apiToken}` },
58
+ body: formData,
59
+ });
60
+ if (!res.ok) {
61
+ const text = await res.text();
62
+ throw new Error(`Upload failed ${res.status}: ${text}`);
63
+ }
64
+ return res.json();
65
+ }
37
66
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/services/api.ts"],"names":[],"mappings":"AAAA,IAAI,OAAe,CAAC;AACpB,IAAI,QAAgB,CAAC;AAErB,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,KAAa;IAChD,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAClC,QAAQ,GAAG,KAAK,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,OAAO,CACpB,MAAc,EACd,IAAY,EACZ,IAAc;IAEd,MAAM,GAAG,GAAG,GAAG,OAAO,MAAM,IAAI,EAAE,CAAC;IACnC,MAAM,OAAO,GAA2B;QACtC,aAAa,EAAE,UAAU,QAAQ,EAAE;KACpC,CAAC;IACF,IAAI,IAAI;QAAE,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;IAEvD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,MAAM;QACN,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;KAC9C,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,MAAM,CAAc,IAAY;IAC9C,OAAO,OAAO,CAAI,KAAK,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,OAAO,CAAc,IAAY,EAAE,IAAa;IAC9D,OAAO,OAAO,CAAI,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAc,IAAY,EAAE,IAAa;IAC/D,OAAO,OAAO,CAAI,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,SAAS,CAAc,IAAY;IACjD,OAAO,OAAO,CAAI,QAAQ,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/services/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerKnowledgeTools(server: McpServer): void;
@@ -0,0 +1,257 @@
1
+ import { z } from "zod";
2
+ import { readFile } from "node:fs/promises";
3
+ import { basename } from "node:path";
4
+ import { apiGet, apiPost, apiPostFormData, apiPatch, apiDelete } from "../services/api.js";
5
+ export function registerKnowledgeTools(server) {
6
+ // ─── Knowledge Bases ───────────────────────────────
7
+ server.registerTool("bypass_list_knowledge_bases", {
8
+ title: "List Knowledge Bases",
9
+ description: "List knowledge bases with optional filters (status, search). Returns paginated results with document counts.",
10
+ inputSchema: {
11
+ status: z.string().optional().describe("Filter by status (e.g. 'active', 'disabled')"),
12
+ search: z.string().optional().describe("Search in name"),
13
+ limit: z.number().int().min(1).max(100).default(20).describe("Max results"),
14
+ offset: z.number().int().min(0).default(0).describe("Pagination offset"),
15
+ },
16
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
17
+ }, async (params) => {
18
+ const qs = new URLSearchParams();
19
+ if (params.status)
20
+ qs.set("status", params.status);
21
+ if (params.search)
22
+ qs.set("search", params.search);
23
+ qs.set("limit", String(params.limit));
24
+ qs.set("offset", String(params.offset));
25
+ const data = await apiGet(`/knowledge-bases?${qs}`);
26
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
27
+ });
28
+ server.registerTool("bypass_get_knowledge_base", {
29
+ title: "Get Knowledge Base",
30
+ description: "Get a single knowledge base by ID with documents list and document count.",
31
+ inputSchema: { id: z.number().int().describe("Knowledge base ID") },
32
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
33
+ }, async (params) => {
34
+ const data = await apiGet(`/knowledge-bases/${params.id}`);
35
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
36
+ });
37
+ server.registerTool("bypass_create_knowledge_base", {
38
+ title: "Create Knowledge Base",
39
+ description: "Create a new knowledge base. Syncs with GLM provider automatically.",
40
+ inputSchema: {
41
+ name: z.string().min(1).describe("Knowledge base name"),
42
+ description: z.string().optional().describe("Knowledge base description"),
43
+ embedding_id: z.number().int().optional().describe("Embedding model ID (default: 11)"),
44
+ created_by: z.string().optional().describe("Creator user ID"),
45
+ },
46
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
47
+ }, async (params) => {
48
+ const data = await apiPost("/knowledge-bases", params);
49
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
50
+ });
51
+ server.registerTool("bypass_update_knowledge_base", {
52
+ title: "Update Knowledge Base",
53
+ description: "Update a knowledge base's name, description or status. Only provided fields are updated. Changes sync to GLM provider.",
54
+ inputSchema: {
55
+ id: z.number().int().describe("Knowledge base ID"),
56
+ name: z.string().optional().describe("New name"),
57
+ description: z.string().optional().describe("New description"),
58
+ status: z.string().optional().describe("New status (e.g. 'active', 'disabled')"),
59
+ },
60
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
61
+ }, async (params) => {
62
+ const { id, ...fields } = params;
63
+ await apiPatch(`/knowledge-bases/${id}`, fields);
64
+ return { content: [{ type: "text", text: `Knowledge base ${id} updated.` }] };
65
+ });
66
+ server.registerTool("bypass_delete_knowledge_base", {
67
+ title: "Delete Knowledge Base",
68
+ description: "Soft-delete a knowledge base by setting status to disabled.",
69
+ inputSchema: { id: z.number().int().describe("Knowledge base ID") },
70
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
71
+ }, async (params) => {
72
+ await apiDelete(`/knowledge-bases/${params.id}`);
73
+ return { content: [{ type: "text", text: `Knowledge base ${params.id} deleted (soft).` }] };
74
+ });
75
+ // ─── Documents ─────────────────────────────────────
76
+ server.registerTool("bypass_list_kb_documents", {
77
+ title: "List Knowledge Base Documents",
78
+ description: "List documents in a knowledge base with pagination.",
79
+ inputSchema: {
80
+ kb_id: z.number().int().describe("Knowledge base ID"),
81
+ limit: z.number().int().min(1).max(100).default(50).describe("Max results"),
82
+ offset: z.number().int().min(0).default(0).describe("Pagination offset"),
83
+ },
84
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
85
+ }, async (params) => {
86
+ const qs = new URLSearchParams();
87
+ qs.set("limit", String(params.limit));
88
+ qs.set("offset", String(params.offset));
89
+ const data = await apiGet(`/knowledge-bases/${params.kb_id}/documents?${qs}`);
90
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
91
+ });
92
+ server.registerTool("bypass_upload_kb_document", {
93
+ title: "Upload Knowledge Base Document",
94
+ description: "Upload a local file to a knowledge base. Accepts an absolute file path on disk. Supported formats: md, txt, pdf, doc, docx, csv, xlsx, pptx. Max 50MB.",
95
+ inputSchema: {
96
+ kb_id: z.number().int().describe("Knowledge base ID"),
97
+ file_path: z.string().min(1).describe("Absolute path to the file on disk"),
98
+ uploaded_by: z.string().optional().describe("Uploader user ID"),
99
+ },
100
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
101
+ }, async (params) => {
102
+ const buf = await readFile(params.file_path);
103
+ const fileName = basename(params.file_path);
104
+ const blob = new Blob([buf]);
105
+ const formData = new FormData();
106
+ formData.set("file", new File([blob], fileName));
107
+ if (params.uploaded_by)
108
+ formData.set("uploaded_by", params.uploaded_by);
109
+ const data = await apiPostFormData(`/knowledge-bases/${params.kb_id}/documents`, formData);
110
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
111
+ });
112
+ server.registerTool("bypass_delete_kb_document", {
113
+ title: "Delete Knowledge Base Document",
114
+ description: "Permanently delete a document from a knowledge base. Also removes from GLM provider.",
115
+ inputSchema: {
116
+ kb_id: z.number().int().describe("Knowledge base ID"),
117
+ doc_id: z.number().int().describe("Document ID"),
118
+ },
119
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
120
+ }, async (params) => {
121
+ await apiDelete(`/knowledge-bases/${params.kb_id}/documents/${params.doc_id}`);
122
+ return { content: [{ type: "text", text: `Document ${params.doc_id} deleted.` }] };
123
+ });
124
+ // ─── Permissions ───────────────────────────────────
125
+ server.registerTool("bypass_list_kb_permissions", {
126
+ title: "List Knowledge Base Permissions",
127
+ description: "List user permissions (授权) for a knowledge base. Shows which users have access.",
128
+ inputSchema: {
129
+ kb_id: z.number().int().describe("Knowledge base ID"),
130
+ search: z.string().optional().describe("Search by user name or email"),
131
+ limit: z.number().int().min(1).max(100).default(50).describe("Max results"),
132
+ offset: z.number().int().min(0).default(0).describe("Pagination offset"),
133
+ },
134
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
135
+ }, async (params) => {
136
+ const qs = new URLSearchParams();
137
+ if (params.search)
138
+ qs.set("search", params.search);
139
+ qs.set("limit", String(params.limit));
140
+ qs.set("offset", String(params.offset));
141
+ const data = await apiGet(`/knowledge-bases/${params.kb_id}/permissions?${qs}`);
142
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
143
+ });
144
+ server.registerTool("bypass_grant_kb_permission", {
145
+ title: "Grant Knowledge Base Permission",
146
+ description: "Grant a user access to a knowledge base.",
147
+ inputSchema: {
148
+ kb_id: z.number().int().describe("Knowledge base ID"),
149
+ user_id: z.string().min(1).describe("User ID (Auth0 sub) to grant access"),
150
+ granted_by: z.string().optional().describe("Admin user ID who grants the permission"),
151
+ },
152
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
153
+ }, async (params) => {
154
+ await apiPost(`/knowledge-bases/${params.kb_id}/permissions`, {
155
+ user_id: params.user_id,
156
+ granted_by: params.granted_by,
157
+ });
158
+ return { content: [{ type: "text", text: `Permission granted to user ${params.user_id} for knowledge base ${params.kb_id}.` }] };
159
+ });
160
+ server.registerTool("bypass_revoke_kb_permission", {
161
+ title: "Revoke Knowledge Base Permission",
162
+ description: "Revoke a user's access to a knowledge base. Provide either user_id or permission_id.",
163
+ inputSchema: {
164
+ kb_id: z.number().int().describe("Knowledge base ID"),
165
+ user_id: z.string().optional().describe("User ID to revoke access for"),
166
+ permission_id: z.number().int().optional().describe("Specific permission record ID to revoke"),
167
+ },
168
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
169
+ }, async (params) => {
170
+ const qs = new URLSearchParams();
171
+ if (params.user_id)
172
+ qs.set("user_id", params.user_id);
173
+ if (params.permission_id)
174
+ qs.set("permission_id", String(params.permission_id));
175
+ await apiDelete(`/knowledge-bases/${params.kb_id}/permissions?${qs}`);
176
+ return { content: [{ type: "text", text: `Permission revoked for knowledge base ${params.kb_id}.` }] };
177
+ });
178
+ // ─── AI Conversations ─────────────────────────────
179
+ server.registerTool("bypass_list_ai_conversations", {
180
+ title: "List AI Conversations",
181
+ description: "List AI chat sessions. Filter by student or knowledge base. Shows session title, user, knowledge base, and message counts.",
182
+ inputSchema: {
183
+ user_id: z.string().optional().describe("Filter by student user ID"),
184
+ kb_id: z.number().int().optional().describe("Filter by knowledge base ID"),
185
+ search: z.string().optional().describe("Search in session title"),
186
+ limit: z.number().int().min(1).max(100).default(20).describe("Max results"),
187
+ offset: z.number().int().min(0).default(0).describe("Pagination offset"),
188
+ },
189
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
190
+ }, async (params) => {
191
+ const qs = new URLSearchParams();
192
+ if (params.user_id)
193
+ qs.set("user_id", params.user_id);
194
+ if (params.kb_id)
195
+ qs.set("kb_id", String(params.kb_id));
196
+ if (params.search)
197
+ qs.set("search", params.search);
198
+ qs.set("limit", String(params.limit));
199
+ qs.set("offset", String(params.offset));
200
+ const data = await apiGet(`/ai/conversations?${qs}`);
201
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
202
+ });
203
+ server.registerTool("bypass_get_ai_conversation_messages", {
204
+ title: "Get AI Conversation Messages",
205
+ description: "Get messages for a specific AI chat session. Returns session info and message history.",
206
+ inputSchema: {
207
+ session_id: z.number().int().describe("Chat session ID"),
208
+ limit: z.number().int().min(1).max(100).default(100).describe("Max messages"),
209
+ offset: z.number().int().min(0).default(0).describe("Pagination offset"),
210
+ },
211
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
212
+ }, async (params) => {
213
+ const qs = new URLSearchParams();
214
+ qs.set("limit", String(params.limit));
215
+ qs.set("offset", String(params.offset));
216
+ const data = await apiGet(`/ai/conversations/${params.session_id}/messages?${qs}`);
217
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
218
+ });
219
+ // ─── AI Quotas ─────────────────────────────────────
220
+ server.registerTool("bypass_list_ai_quotas", {
221
+ title: "List AI Quotas",
222
+ description: "List student AI token quotas for a given month. Shows free tokens, granted tokens, and usage.",
223
+ inputSchema: {
224
+ period: z.string().optional().describe("Month period in YYYY-MM format (default: current month)"),
225
+ search: z.string().optional().describe("Search by user name or email"),
226
+ limit: z.number().int().min(1).max(100).default(20).describe("Max results"),
227
+ offset: z.number().int().min(0).default(0).describe("Pagination offset"),
228
+ },
229
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
230
+ }, async (params) => {
231
+ const qs = new URLSearchParams();
232
+ if (params.period)
233
+ qs.set("period", params.period);
234
+ if (params.search)
235
+ qs.set("search", params.search);
236
+ qs.set("limit", String(params.limit));
237
+ qs.set("offset", String(params.offset));
238
+ const data = await apiGet(`/ai/quotas?${qs}`);
239
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
240
+ });
241
+ server.registerTool("bypass_grant_ai_quota", {
242
+ title: "Grant AI Quota",
243
+ description: "Grant additional AI tokens to a user for a specific month.",
244
+ inputSchema: {
245
+ user_id: z.string().min(1).describe("User ID (Auth0 sub)"),
246
+ tokens: z.number().int().min(1).describe("Number of tokens to grant"),
247
+ granted_by: z.string().min(1).describe("Admin user ID granting the quota"),
248
+ period: z.string().optional().describe("Month period in YYYY-MM format (default: current month)"),
249
+ reason: z.string().optional().describe("Reason for granting additional tokens"),
250
+ },
251
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
252
+ }, async (params) => {
253
+ const data = await apiPost("/ai/quotas/grant", params);
254
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
255
+ });
256
+ }
257
+ //# sourceMappingURL=knowledge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../src/tools/knowledge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerUploadTools(server: McpServer): void;
@@ -0,0 +1,66 @@
1
+ import { z } from "zod";
2
+ import { apiUploadFile } from "../services/api.js";
3
+ import * as fs from "node:fs";
4
+ import * as path from "node:path";
5
+ const MIME_MAP = {
6
+ jpg: "image/jpeg",
7
+ jpeg: "image/jpeg",
8
+ png: "image/png",
9
+ webp: "image/webp",
10
+ gif: "image/gif",
11
+ svg: "image/svg+xml",
12
+ };
13
+ export function registerUploadTools(server) {
14
+ server.registerTool("bypass_upload_image", {
15
+ title: "Upload Image",
16
+ description: "Upload a local image file to the platform (R2 storage). Returns the image URL that can be used for course cover_url, outline_image, images, or article cover. Supported formats: jpg, png, webp, gif, svg. Max 5MB.",
17
+ inputSchema: {
18
+ file_path: z
19
+ .string()
20
+ .min(1)
21
+ .describe("Absolute path to the local image file"),
22
+ },
23
+ annotations: {
24
+ readOnlyHint: false,
25
+ destructiveHint: false,
26
+ idempotentHint: false,
27
+ openWorldHint: false,
28
+ },
29
+ }, async (params) => {
30
+ const filePath = params.file_path;
31
+ if (!fs.existsSync(filePath)) {
32
+ return {
33
+ content: [{ type: "text", text: `Error: File not found: ${filePath}` }],
34
+ isError: true,
35
+ };
36
+ }
37
+ const ext = path.extname(filePath).slice(1).toLowerCase();
38
+ const mimeType = MIME_MAP[ext];
39
+ if (!mimeType) {
40
+ return {
41
+ content: [{
42
+ type: "text",
43
+ text: `Error: Unsupported file type ".${ext}". Supported: ${Object.keys(MIME_MAP).join(", ")}`,
44
+ }],
45
+ isError: true,
46
+ };
47
+ }
48
+ const stat = fs.statSync(filePath);
49
+ if (stat.size > 5 * 1024 * 1024) {
50
+ return {
51
+ content: [{ type: "text", text: `Error: File too large (${(stat.size / 1024 / 1024).toFixed(1)}MB). Max 5MB.` }],
52
+ isError: true,
53
+ };
54
+ }
55
+ const fileName = path.basename(filePath);
56
+ const fileBuffer = fs.readFileSync(filePath);
57
+ const result = await apiUploadFile(fileBuffer, fileName, mimeType);
58
+ return {
59
+ content: [{
60
+ type: "text",
61
+ text: `Image uploaded successfully.\nURL: ${result.url}\n\nUse this URL for course cover_url, outline_image, images array, or article cover.`,
62
+ }],
63
+ };
64
+ });
65
+ }
66
+ //# sourceMappingURL=upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/tools/upload.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,QAAQ,GAA2B;IACvC,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,eAAe;CACrB,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,YAAY,CAAC,qBAAqB,EAAE;QACzC,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,qNAAqN;QACvN,WAAW,EAAE;YACX,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,uCAAuC,CAAC;SACrD;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACrB;KACF,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAClB,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;QAElC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,0BAA0B,QAAQ,EAAE,EAAE,CAAC;gBAChF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1D,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,kCAAkC,GAAG,iBAAiB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBAC/F,CAAC;gBACF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;YAChC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,0BAA0B,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;gBACzH,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE7C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnE,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,sCAAsC,MAAM,CAAC,GAAG,uFAAuF;iBAC9I,CAAC;SACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@taotao7/bypass-mcp",
3
- "version": "1.7.1",
4
- "description": "MCP server for bypass-saas platform management — courses, articles, students, orders",
3
+ "version": "1.9.2",
4
+ "description": "MCP server for bypass-saas platform management — courses, articles, students, orders, knowledge bases, AI chat",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "bin": {