@frihet/mcp-server 1.1.0 → 1.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/README.md +11 -5
- package/dist/index.js +30 -1
- package/dist/index.js.map +1 -1
- package/dist/prompts/register-all.d.ts +10 -0
- package/dist/prompts/register-all.d.ts.map +1 -0
- package/dist/prompts/register-all.js +271 -0
- package/dist/prompts/register-all.js.map +1 -0
- package/dist/resources/register-all.d.ts +12 -0
- package/dist/resources/register-all.d.ts.map +1 -0
- package/dist/resources/register-all.js +345 -0
- package/dist/resources/register-all.js.map +1 -0
- package/dist/tools/clients.d.ts.map +1 -1
- package/dist/tools/clients.js +16 -6
- package/dist/tools/clients.js.map +1 -1
- package/dist/tools/expenses.d.ts.map +1 -1
- package/dist/tools/expenses.js +16 -6
- package/dist/tools/expenses.js.map +1 -1
- package/dist/tools/invoices.d.ts.map +1 -1
- package/dist/tools/invoices.js +19 -10
- package/dist/tools/invoices.js.map +1 -1
- package/dist/tools/products.d.ts.map +1 -1
- package/dist/tools/products.js +16 -6
- package/dist/tools/products.js.map +1 -1
- package/dist/tools/quotes.d.ts.map +1 -1
- package/dist/tools/quotes.js +16 -6
- package/dist/tools/quotes.js.map +1 -1
- package/dist/tools/shared.d.ts +120 -6
- package/dist/tools/shared.d.ts.map +1 -1
- package/dist/tools/shared.js +146 -5
- package/dist/tools/shared.js.map +1 -1
- package/dist/tools/webhooks.d.ts.map +1 -1
- package/dist/tools/webhooks.js +16 -6
- package/dist/tools/webhooks.js.map +1 -1
- package/package.json +5 -5
package/dist/tools/shared.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* detection uses duck-typing (checking for `statusCode`/`errorCode` properties)
|
|
7
7
|
* so it works regardless of which FrihetApiError class threw the error.
|
|
8
8
|
*/
|
|
9
|
+
import { z } from "zod/v4";
|
|
9
10
|
/* ------------------------------------------------------------------ */
|
|
10
11
|
/* Safety annotations for MCP tool registrations */
|
|
11
12
|
/* ------------------------------------------------------------------ */
|
|
@@ -14,6 +15,29 @@ export const CREATE_ANNOTATIONS = { readOnlyHint: false, destructiveHint: false,
|
|
|
14
15
|
export const UPDATE_ANNOTATIONS = { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false };
|
|
15
16
|
export const DELETE_ANNOTATIONS = { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false };
|
|
16
17
|
/* ------------------------------------------------------------------ */
|
|
18
|
+
/* Content annotations for tool responses */
|
|
19
|
+
/* ------------------------------------------------------------------ */
|
|
20
|
+
/** List operations: useful to both user and assistant for navigation, medium priority. */
|
|
21
|
+
export const LIST_CONTENT_ANNOTATIONS = {
|
|
22
|
+
audience: ["user", "assistant"],
|
|
23
|
+
priority: 0.5,
|
|
24
|
+
};
|
|
25
|
+
/** Get/read operations: useful to both, higher priority as specifically requested data. */
|
|
26
|
+
export const GET_CONTENT_ANNOTATIONS = {
|
|
27
|
+
audience: ["user", "assistant"],
|
|
28
|
+
priority: 0.7,
|
|
29
|
+
};
|
|
30
|
+
/** Mutating operations (create/update/delete): primarily for the user, highest priority. */
|
|
31
|
+
export const MUTATE_CONTENT_ANNOTATIONS = {
|
|
32
|
+
audience: ["user"],
|
|
33
|
+
priority: 1.0,
|
|
34
|
+
};
|
|
35
|
+
/** Error responses: always high priority, always for the user. */
|
|
36
|
+
export const ERROR_CONTENT_ANNOTATIONS = {
|
|
37
|
+
audience: ["user"],
|
|
38
|
+
priority: 1.0,
|
|
39
|
+
};
|
|
40
|
+
/* ------------------------------------------------------------------ */
|
|
17
41
|
/* Response size guard */
|
|
18
42
|
/* ------------------------------------------------------------------ */
|
|
19
43
|
const MAX_RESPONSE_CHARS = 80_000; // ~20,000 tokens safety margin
|
|
@@ -31,10 +55,12 @@ function isFrihetApiError(error) {
|
|
|
31
55
|
typeof error.statusCode === "number");
|
|
32
56
|
}
|
|
33
57
|
/**
|
|
34
|
-
* Maps an error to a user-friendly MCP tool response.
|
|
58
|
+
* Maps an error to a user-friendly MCP tool response with error annotations.
|
|
35
59
|
*/
|
|
36
60
|
export function handleToolError(error) {
|
|
37
61
|
if (isFrihetApiError(error)) {
|
|
62
|
+
// Log raw error details to stderr for debugging — never expose to LLM
|
|
63
|
+
console.error(`[Frihet API Error] ${error.statusCode} ${error.errorCode}: ${error.message}`);
|
|
38
64
|
const messages = {
|
|
39
65
|
400: "Bad request. Check your input parameters. / Solicitud incorrecta. Revisa los parametros.",
|
|
40
66
|
401: "Authentication failed. Check your API key. / Autenticacion fallida. Revisa tu API key.",
|
|
@@ -45,20 +71,22 @@ export function handleToolError(error) {
|
|
|
45
71
|
429: "Rate limit exceeded. Try again later. / Limite de peticiones excedido. Intenta mas tarde.",
|
|
46
72
|
500: "Internal server error. Try again later. / Error interno del servidor.",
|
|
47
73
|
};
|
|
48
|
-
const friendlyMessage = messages[error.statusCode] ?? `API error ${error.statusCode}
|
|
74
|
+
const friendlyMessage = messages[error.statusCode] ?? `API error ${error.statusCode}. Contact support if this persists.`;
|
|
49
75
|
return {
|
|
50
76
|
content: [
|
|
51
77
|
{
|
|
52
78
|
type: "text",
|
|
53
|
-
text: `Error: ${friendlyMessage}
|
|
79
|
+
text: `Error: ${friendlyMessage}`,
|
|
80
|
+
annotations: ERROR_CONTENT_ANNOTATIONS,
|
|
54
81
|
},
|
|
55
82
|
],
|
|
56
83
|
isError: true,
|
|
57
84
|
};
|
|
58
85
|
}
|
|
59
|
-
|
|
86
|
+
// Log raw error to stderr for debugging — return generic message to LLM
|
|
87
|
+
console.error("[Frihet MCP Error]", error instanceof Error ? error.stack ?? error.message : error);
|
|
60
88
|
return {
|
|
61
|
-
content: [{ type: "text", text:
|
|
89
|
+
content: [{ type: "text", text: "Error: An unexpected error occurred. Contact support if this persists.", annotations: ERROR_CONTENT_ANNOTATIONS }],
|
|
62
90
|
isError: true,
|
|
63
91
|
};
|
|
64
92
|
}
|
|
@@ -85,4 +113,117 @@ export function formatPaginatedResponse(resourceName, response) {
|
|
|
85
113
|
export function formatRecord(label, record) {
|
|
86
114
|
return truncateResponse(`${label}:\n${JSON.stringify(record, null, 2)}`);
|
|
87
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Builds an annotated content block for list/search responses.
|
|
118
|
+
*/
|
|
119
|
+
export function listContent(text) {
|
|
120
|
+
return { type: "text", text, annotations: LIST_CONTENT_ANNOTATIONS };
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Builds an annotated content block for get/read responses.
|
|
124
|
+
*/
|
|
125
|
+
export function getContent(text) {
|
|
126
|
+
return { type: "text", text, annotations: GET_CONTENT_ANNOTATIONS };
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Builds an annotated content block for create/update/delete responses.
|
|
130
|
+
*/
|
|
131
|
+
export function mutateContent(text) {
|
|
132
|
+
return { type: "text", text, annotations: MUTATE_CONTENT_ANNOTATIONS };
|
|
133
|
+
}
|
|
134
|
+
/* ------------------------------------------------------------------ */
|
|
135
|
+
/* Output schemas (MCP spec 2025-11-25: outputSchema + structuredContent) */
|
|
136
|
+
/* ------------------------------------------------------------------ */
|
|
137
|
+
/**
|
|
138
|
+
* Wraps an item schema in a paginated envelope for list/search tools.
|
|
139
|
+
*/
|
|
140
|
+
export function paginatedOutput(itemSchema) {
|
|
141
|
+
return z.object({
|
|
142
|
+
data: z.array(itemSchema),
|
|
143
|
+
total: z.number(),
|
|
144
|
+
limit: z.number(),
|
|
145
|
+
offset: z.number(),
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
/** Schema for delete operation results. */
|
|
149
|
+
export const deleteResultOutput = z.object({
|
|
150
|
+
success: z.boolean(),
|
|
151
|
+
id: z.string(),
|
|
152
|
+
});
|
|
153
|
+
/* --- Per-resource item schemas ------------------------------------ */
|
|
154
|
+
const lineItemSchema = z.object({
|
|
155
|
+
description: z.string(),
|
|
156
|
+
quantity: z.number(),
|
|
157
|
+
unitPrice: z.number(),
|
|
158
|
+
});
|
|
159
|
+
export const invoiceItemOutput = z.object({
|
|
160
|
+
id: z.string(),
|
|
161
|
+
clientName: z.string(),
|
|
162
|
+
items: z.array(lineItemSchema),
|
|
163
|
+
status: z.string().optional(),
|
|
164
|
+
dueDate: z.string().optional(),
|
|
165
|
+
notes: z.string().optional(),
|
|
166
|
+
taxRate: z.number().optional(),
|
|
167
|
+
total: z.number().optional(),
|
|
168
|
+
createdAt: z.string().optional(),
|
|
169
|
+
updatedAt: z.string().optional(),
|
|
170
|
+
}).passthrough();
|
|
171
|
+
export const expenseItemOutput = z.object({
|
|
172
|
+
id: z.string(),
|
|
173
|
+
description: z.string(),
|
|
174
|
+
amount: z.number(),
|
|
175
|
+
category: z.string().optional(),
|
|
176
|
+
date: z.string().optional(),
|
|
177
|
+
vendor: z.string().optional(),
|
|
178
|
+
taxDeductible: z.boolean().optional(),
|
|
179
|
+
createdAt: z.string().optional(),
|
|
180
|
+
updatedAt: z.string().optional(),
|
|
181
|
+
}).passthrough();
|
|
182
|
+
const addressOutputSchema = z.object({
|
|
183
|
+
street: z.string().optional(),
|
|
184
|
+
city: z.string().optional(),
|
|
185
|
+
postalCode: z.string().optional(),
|
|
186
|
+
country: z.string().optional(),
|
|
187
|
+
}).optional();
|
|
188
|
+
export const clientItemOutput = z.object({
|
|
189
|
+
id: z.string(),
|
|
190
|
+
name: z.string(),
|
|
191
|
+
email: z.string().optional(),
|
|
192
|
+
phone: z.string().optional(),
|
|
193
|
+
taxId: z.string().optional(),
|
|
194
|
+
address: addressOutputSchema,
|
|
195
|
+
createdAt: z.string().optional(),
|
|
196
|
+
updatedAt: z.string().optional(),
|
|
197
|
+
}).passthrough();
|
|
198
|
+
export const productItemOutput = z.object({
|
|
199
|
+
id: z.string(),
|
|
200
|
+
name: z.string(),
|
|
201
|
+
unitPrice: z.number(),
|
|
202
|
+
description: z.string().optional(),
|
|
203
|
+
unit: z.string().optional(),
|
|
204
|
+
taxRate: z.number().optional(),
|
|
205
|
+
sku: z.string().optional(),
|
|
206
|
+
createdAt: z.string().optional(),
|
|
207
|
+
updatedAt: z.string().optional(),
|
|
208
|
+
}).passthrough();
|
|
209
|
+
export const quoteItemOutput = z.object({
|
|
210
|
+
id: z.string(),
|
|
211
|
+
clientName: z.string(),
|
|
212
|
+
items: z.array(lineItemSchema),
|
|
213
|
+
validUntil: z.string().optional(),
|
|
214
|
+
notes: z.string().optional(),
|
|
215
|
+
status: z.string().optional(),
|
|
216
|
+
total: z.number().optional(),
|
|
217
|
+
createdAt: z.string().optional(),
|
|
218
|
+
updatedAt: z.string().optional(),
|
|
219
|
+
}).passthrough();
|
|
220
|
+
export const webhookItemOutput = z.object({
|
|
221
|
+
id: z.string(),
|
|
222
|
+
url: z.string(),
|
|
223
|
+
events: z.array(z.string()),
|
|
224
|
+
active: z.boolean().optional(),
|
|
225
|
+
secret: z.string().optional(),
|
|
226
|
+
createdAt: z.string().optional(),
|
|
227
|
+
updatedAt: z.string().optional(),
|
|
228
|
+
}).passthrough();
|
|
88
229
|
//# sourceMappingURL=shared.js.map
|
package/dist/tools/shared.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG5D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG5D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAoKnF"}
|
package/dist/tools/webhooks.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Webhook management tools for the Frihet MCP server.
|
|
3
3
|
*/
|
|
4
4
|
import { z } from "zod/v4";
|
|
5
|
-
import { handleToolError, formatPaginatedResponse, formatRecord, READ_ONLY_ANNOTATIONS, CREATE_ANNOTATIONS, UPDATE_ANNOTATIONS, DELETE_ANNOTATIONS } from "./shared.js";
|
|
5
|
+
import { handleToolError, formatPaginatedResponse, formatRecord, listContent, getContent, mutateContent, READ_ONLY_ANNOTATIONS, CREATE_ANNOTATIONS, UPDATE_ANNOTATIONS, DELETE_ANNOTATIONS, paginatedOutput, deleteResultOutput, webhookItemOutput } from "./shared.js";
|
|
6
6
|
export function registerWebhookTools(server, client) {
|
|
7
7
|
// -- list_webhooks --
|
|
8
8
|
server.registerTool("list_webhooks", {
|
|
@@ -14,11 +14,13 @@ export function registerWebhookTools(server, client) {
|
|
|
14
14
|
limit: z.number().int().min(1).max(100).optional().describe("Max results (1-100) / Resultados maximos"),
|
|
15
15
|
offset: z.number().int().min(0).optional().describe("Offset / Desplazamiento"),
|
|
16
16
|
},
|
|
17
|
+
outputSchema: paginatedOutput(webhookItemOutput),
|
|
17
18
|
}, async ({ limit, offset }) => {
|
|
18
19
|
try {
|
|
19
20
|
const result = await client.listWebhooks({ limit, offset });
|
|
20
21
|
return {
|
|
21
|
-
content: [
|
|
22
|
+
content: [listContent(formatPaginatedResponse("webhooks", result))],
|
|
23
|
+
structuredContent: result,
|
|
22
24
|
};
|
|
23
25
|
}
|
|
24
26
|
catch (error) {
|
|
@@ -34,11 +36,13 @@ export function registerWebhookTools(server, client) {
|
|
|
34
36
|
inputSchema: {
|
|
35
37
|
id: z.string().describe("Webhook ID / ID del webhook"),
|
|
36
38
|
},
|
|
39
|
+
outputSchema: webhookItemOutput,
|
|
37
40
|
}, async ({ id }) => {
|
|
38
41
|
try {
|
|
39
42
|
const result = await client.getWebhook(id);
|
|
40
43
|
return {
|
|
41
|
-
content: [
|
|
44
|
+
content: [getContent(formatRecord("Webhook", result))],
|
|
45
|
+
structuredContent: result,
|
|
42
46
|
};
|
|
43
47
|
}
|
|
44
48
|
catch (error) {
|
|
@@ -69,11 +73,13 @@ export function registerWebhookTools(server, client) {
|
|
|
69
73
|
.optional()
|
|
70
74
|
.describe("Signing secret for payload verification / Secreto para verificar las notificaciones"),
|
|
71
75
|
},
|
|
76
|
+
outputSchema: webhookItemOutput,
|
|
72
77
|
}, async (input) => {
|
|
73
78
|
try {
|
|
74
79
|
const result = await client.createWebhook(input);
|
|
75
80
|
return {
|
|
76
|
-
content: [
|
|
81
|
+
content: [mutateContent(formatRecord("Webhook created", result))],
|
|
82
|
+
structuredContent: result,
|
|
77
83
|
};
|
|
78
84
|
}
|
|
79
85
|
catch (error) {
|
|
@@ -93,11 +99,13 @@ export function registerWebhookTools(server, client) {
|
|
|
93
99
|
active: z.boolean().optional().describe("Active / Activo"),
|
|
94
100
|
secret: z.string().optional().describe("Signing secret / Secreto"),
|
|
95
101
|
},
|
|
102
|
+
outputSchema: webhookItemOutput,
|
|
96
103
|
}, async ({ id, ...data }) => {
|
|
97
104
|
try {
|
|
98
105
|
const result = await client.updateWebhook(id, data);
|
|
99
106
|
return {
|
|
100
|
-
content: [
|
|
107
|
+
content: [mutateContent(formatRecord("Webhook updated", result))],
|
|
108
|
+
structuredContent: result,
|
|
101
109
|
};
|
|
102
110
|
}
|
|
103
111
|
catch (error) {
|
|
@@ -113,11 +121,13 @@ export function registerWebhookTools(server, client) {
|
|
|
113
121
|
inputSchema: {
|
|
114
122
|
id: z.string().describe("Webhook ID / ID del webhook"),
|
|
115
123
|
},
|
|
124
|
+
outputSchema: deleteResultOutput,
|
|
116
125
|
}, async ({ id }) => {
|
|
117
126
|
try {
|
|
118
127
|
await client.deleteWebhook(id);
|
|
119
128
|
return {
|
|
120
|
-
content: [
|
|
129
|
+
content: [mutateContent(`Webhook ${id} deleted successfully. / Webhook ${id} eliminado correctamente.`)],
|
|
130
|
+
structuredContent: { success: true, id },
|
|
121
131
|
};
|
|
122
132
|
}
|
|
123
133
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,YAAY,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/tools/webhooks.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@frihet/mcp-server",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "AI-native MCP server for business management — invoices, expenses, clients, products, quotes, webhooks. 31 tools. Works with Claude, Cursor, Windsurf, Cline.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -37,12 +37,12 @@
|
|
|
37
37
|
"license": "MIT",
|
|
38
38
|
"repository": {
|
|
39
39
|
"type": "git",
|
|
40
|
-
"url": "https://github.com/
|
|
40
|
+
"url": "git+https://github.com/Frihet-io/frihet-mcp.git"
|
|
41
41
|
},
|
|
42
42
|
"mcpName": "io.github.berthelius/frihet",
|
|
43
|
-
"homepage": "https://
|
|
43
|
+
"homepage": "https://github.com/Frihet-io/frihet-mcp#readme",
|
|
44
44
|
"bugs": {
|
|
45
|
-
"url": "https://github.com/
|
|
45
|
+
"url": "https://github.com/Frihet-io/frihet-mcp/issues"
|
|
46
46
|
},
|
|
47
47
|
"engines": {
|
|
48
48
|
"node": ">=18"
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"LICENSE"
|
|
54
54
|
],
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
56
|
+
"@modelcontextprotocol/sdk": "^1.27.0"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
59
|
"zod": ">=3.25.0"
|