brief-mcp 1.1.0 → 1.3.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/dist/index.js +31 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -63,6 +63,10 @@ class SupabaseClient {
|
|
|
63
63
|
const response = await axios.post(`${EDGE_FUNCTIONS_URL}/delete-document`, { document_id: documentId }, { headers: this.headers });
|
|
64
64
|
return response.data;
|
|
65
65
|
}
|
|
66
|
+
async listOrganizations() {
|
|
67
|
+
const response = await axios.get(`${EDGE_FUNCTIONS_URL}/list-organizations`, { headers: this.headers });
|
|
68
|
+
return response.data;
|
|
69
|
+
}
|
|
66
70
|
}
|
|
67
71
|
// ============================================================================
|
|
68
72
|
// MCP Server
|
|
@@ -83,7 +87,7 @@ async function startMCPServer() {
|
|
|
83
87
|
tools: [
|
|
84
88
|
{
|
|
85
89
|
name: 'search-context',
|
|
86
|
-
description: 'Search your organization\'s knowledge base and get AI-powered answers.
|
|
90
|
+
description: 'Search your organization\'s knowledge base and get AI-powered answers. 8 models available: Mistral Small/Nemo, Llama 70B, Qwen 72B/Coder, DeepSeek V3, GLM, GPT-4o Mini.',
|
|
87
91
|
inputSchema: {
|
|
88
92
|
type: 'object',
|
|
89
93
|
properties: {
|
|
@@ -139,6 +143,14 @@ async function startMCPServer() {
|
|
|
139
143
|
},
|
|
140
144
|
required: ['id']
|
|
141
145
|
}
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
name: 'list-organizations',
|
|
149
|
+
description: 'List all organizations you belong to, including your role and API key for each',
|
|
150
|
+
inputSchema: {
|
|
151
|
+
type: 'object',
|
|
152
|
+
properties: {}
|
|
153
|
+
}
|
|
142
154
|
}
|
|
143
155
|
]
|
|
144
156
|
}));
|
|
@@ -216,6 +228,24 @@ async function startMCPServer() {
|
|
|
216
228
|
}]
|
|
217
229
|
};
|
|
218
230
|
}
|
|
231
|
+
case 'list-organizations': {
|
|
232
|
+
const result = await supabase.listOrganizations();
|
|
233
|
+
if (result.organizations.length === 0) {
|
|
234
|
+
return {
|
|
235
|
+
content: [{ type: 'text', text: 'You are not a member of any organization.' }]
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
let text = `**${result.total_count} organization(s):**\n\n`;
|
|
239
|
+
result.organizations.forEach((org, i) => {
|
|
240
|
+
const defaultMark = org.is_default ? ' ⭐ (default)' : '';
|
|
241
|
+
text += `${i + 1}. **${org.name}**${defaultMark}\n`;
|
|
242
|
+
text += ` Slug: \`${org.slug}\` | Role: ${org.role} | Members: ${org.member_count}\n`;
|
|
243
|
+
text += ` API Key: \`${org.api_key}\`\n\n`;
|
|
244
|
+
});
|
|
245
|
+
return {
|
|
246
|
+
content: [{ type: 'text', text }]
|
|
247
|
+
};
|
|
248
|
+
}
|
|
219
249
|
default:
|
|
220
250
|
throw new Error(`Unknown tool: ${name}`);
|
|
221
251
|
}
|