@thriveventurelabs/accountsos-mcp 0.1.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/README.md ADDED
@@ -0,0 +1,92 @@
1
+ # AccountsOS MCP Server
2
+
3
+ Give Claude Desktop access to your UK accounting data via the Model Context Protocol (MCP).
4
+
5
+ ## Installation
6
+
7
+ Add to your Claude Desktop configuration:
8
+
9
+ **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
10
+ **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
11
+
12
+ ```json
13
+ {
14
+ "mcpServers": {
15
+ "accountsos": {
16
+ "command": "npx",
17
+ "args": ["-y", "@thriveventurelabs/accountsos-mcp"],
18
+ "env": {
19
+ "ACCOUNTSOS_API_KEY": "your-api-key-here"
20
+ }
21
+ }
22
+ }
23
+ }
24
+ ```
25
+
26
+ Get your API key from [AccountsOS Settings](https://accounts-os.com/settings).
27
+
28
+ ## Available Tools
29
+
30
+ ### Read Operations
31
+
32
+ | Tool | Description |
33
+ |------|-------------|
34
+ | `get_transactions` | Query transactions with filters (date, category, amount, search) |
35
+ | `get_balance` | Get current account balance(s) |
36
+ | `get_deadlines` | View upcoming tax and filing deadlines |
37
+ | `get_vat_summary` | Get VAT summary for any quarter |
38
+ | `search_documents` | Search uploaded receipts and invoices |
39
+ | `list_categories` | List available transaction categories |
40
+
41
+ ### Write Operations
42
+
43
+ | Tool | Description |
44
+ |------|-------------|
45
+ | `create_transaction` | Create a new transaction (with auto-categorization) |
46
+ | `update_transaction` | Update category, notes, or reconciliation status |
47
+ | `categorize_transaction` | Get AI-suggested category for a transaction |
48
+ | `create_deadline` | Create a new tax/filing deadline reminder |
49
+
50
+ ## Available Resources
51
+
52
+ | Resource | Description |
53
+ |----------|-------------|
54
+ | `accountsos://company` | Company details and settings |
55
+ | `accountsos://transactions` | Most recent 50 transactions |
56
+ | `accountsos://documents` | Uploaded documents |
57
+ | `accountsos://deadlines` | Upcoming deadlines |
58
+
59
+ ## Example Prompts
60
+
61
+ Once connected, try asking Claude:
62
+
63
+ - "What transactions do I have from this month?"
64
+ - "When is my next VAT deadline?"
65
+ - "How much have I spent on software subscriptions?"
66
+ - "Create a transaction for £50 lunch with a client yesterday"
67
+ - "What's my current bank balance?"
68
+ - "Show me my VAT summary for Q4 2024"
69
+
70
+ ## Development
71
+
72
+ ```bash
73
+ # Install dependencies
74
+ npm install
75
+
76
+ # Build
77
+ npm run build
78
+
79
+ # Run locally (for testing)
80
+ ACCOUNTSOS_API_KEY=sk_live_xxx npm start
81
+ ```
82
+
83
+ ## Environment Variables
84
+
85
+ | Variable | Required | Description |
86
+ |----------|----------|-------------|
87
+ | `ACCOUNTSOS_API_KEY` | Yes | Your AccountsOS API key |
88
+ | `ACCOUNTSOS_BASE_URL` | No | Override API base URL (default: https://accounts-os.com) |
89
+
90
+ ## License
91
+
92
+ MIT
@@ -0,0 +1,180 @@
1
+ /**
2
+ * AccountsOS API Client
3
+ *
4
+ * Simple HTTP client for calling AccountsOS backend from the MCP server.
5
+ */
6
+ export interface AccountsOSConfig {
7
+ apiKey: string;
8
+ baseUrl?: string;
9
+ }
10
+ export interface Transaction {
11
+ id: string;
12
+ date: string;
13
+ description: string;
14
+ amount: number;
15
+ currency: string;
16
+ category: string | null;
17
+ merchant_name: string | null;
18
+ type: "income" | "expense";
19
+ vat_amount: number | null;
20
+ vat_rate: number | null;
21
+ }
22
+ export interface Balance {
23
+ total_balance: number;
24
+ currency: string;
25
+ accounts: Array<{
26
+ id: string;
27
+ name: string;
28
+ balance: number;
29
+ currency: string;
30
+ }>;
31
+ }
32
+ export interface Deadline {
33
+ id: string;
34
+ type: string;
35
+ due_date: string;
36
+ status: string;
37
+ description: string | null;
38
+ period_start: string | null;
39
+ period_end: string | null;
40
+ }
41
+ export interface VATSummary {
42
+ vat_output: number;
43
+ vat_input: number;
44
+ vat_due: number;
45
+ period: {
46
+ start: string;
47
+ end: string;
48
+ };
49
+ }
50
+ export interface Document {
51
+ id: string;
52
+ name: string;
53
+ type: string;
54
+ created_at: string;
55
+ description: string | null;
56
+ vendor_name: string | null;
57
+ amount: number | null;
58
+ }
59
+ export interface Category {
60
+ id: string;
61
+ code: string;
62
+ name: string;
63
+ type: string;
64
+ tax_deductible: boolean;
65
+ description: string | null;
66
+ }
67
+ export interface Company {
68
+ id: string;
69
+ name: string;
70
+ trading_name: string | null;
71
+ company_number: string | null;
72
+ vat_registered: boolean;
73
+ vat_number: string | null;
74
+ }
75
+ export declare class AccountsOSError extends Error {
76
+ code: string;
77
+ status?: number | undefined;
78
+ constructor(code: string, message: string, status?: number | undefined);
79
+ }
80
+ export declare class AccountsOS {
81
+ private apiKey;
82
+ private baseUrl;
83
+ constructor(config: AccountsOSConfig);
84
+ private request;
85
+ getTransactions(params?: {
86
+ from_date?: string;
87
+ to_date?: string;
88
+ category?: string;
89
+ min_amount?: number;
90
+ max_amount?: number;
91
+ search?: string;
92
+ limit?: number;
93
+ }): Promise<{
94
+ transactions: Transaction[];
95
+ count: number;
96
+ }>;
97
+ getBalance(accountId?: string): Promise<Balance>;
98
+ getDeadlines(includeCompleted?: boolean): Promise<{
99
+ deadlines: Deadline[];
100
+ count: number;
101
+ }>;
102
+ getVATSummary(quarter?: string): Promise<VATSummary>;
103
+ searchDocuments(query: string, type?: string): Promise<{
104
+ documents: Document[];
105
+ count: number;
106
+ }>;
107
+ listCategories(type?: string): Promise<{
108
+ categories: Category[];
109
+ count: number;
110
+ }>;
111
+ createTransaction(params: {
112
+ date: string;
113
+ description: string;
114
+ amount: number;
115
+ direction: "in" | "out";
116
+ category_id?: string;
117
+ counterparty?: string;
118
+ notes?: string;
119
+ }): Promise<{
120
+ transaction_id: string;
121
+ auto_categorized: boolean;
122
+ categorization: {
123
+ confidence: number;
124
+ reasoning: string;
125
+ } | null;
126
+ }>;
127
+ updateTransaction(params: {
128
+ transaction_id: string;
129
+ category_id?: string;
130
+ notes?: string;
131
+ reconciled?: boolean;
132
+ }): Promise<{
133
+ transaction_id: string;
134
+ updated_fields: string[];
135
+ }>;
136
+ categorizeTransaction(transactionId: string): Promise<{
137
+ suggested_category: string | null;
138
+ suggested_category_id: string | null;
139
+ confidence: number;
140
+ reasoning: string;
141
+ is_business_expense: boolean;
142
+ tax_deductible: boolean;
143
+ }>;
144
+ createDeadline(params: {
145
+ type: string;
146
+ due_date: string;
147
+ description?: string;
148
+ period_start?: string;
149
+ period_end?: string;
150
+ }): Promise<{
151
+ deadline_id: string;
152
+ type: string;
153
+ due_date: string;
154
+ }>;
155
+ uploadDocument(params: {
156
+ file_name: string;
157
+ file_data: string;
158
+ document_type?: "receipt" | "invoice" | "bank_statement" | "other";
159
+ }): Promise<{
160
+ document_id: string;
161
+ status: string;
162
+ extracted_data: Record<string, unknown> | null;
163
+ }>;
164
+ getCompany(): Promise<{
165
+ company: Company;
166
+ }>;
167
+ getRecentTransactions(): Promise<{
168
+ transactions: Transaction[];
169
+ count: number;
170
+ }>;
171
+ getDocuments(): Promise<{
172
+ documents: Document[];
173
+ count: number;
174
+ }>;
175
+ getDeadlinesResource(): Promise<{
176
+ deadlines: Deadline[];
177
+ count: number;
178
+ }>;
179
+ }
180
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js ADDED
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ /**
3
+ * AccountsOS API Client
4
+ *
5
+ * Simple HTTP client for calling AccountsOS backend from the MCP server.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.AccountsOS = exports.AccountsOSError = void 0;
9
+ class AccountsOSError extends Error {
10
+ code;
11
+ status;
12
+ constructor(code, message, status) {
13
+ super(message);
14
+ this.code = code;
15
+ this.status = status;
16
+ this.name = "AccountsOSError";
17
+ }
18
+ }
19
+ exports.AccountsOSError = AccountsOSError;
20
+ class AccountsOS {
21
+ apiKey;
22
+ baseUrl;
23
+ constructor(config) {
24
+ this.apiKey = config.apiKey;
25
+ this.baseUrl = config.baseUrl || "https://accounts-os.com";
26
+ }
27
+ async request(type, nameOrUri, args) {
28
+ const body = type === "tool"
29
+ ? { type: "tool", name: nameOrUri, arguments: args || {} }
30
+ : { type: "resource", uri: nameOrUri };
31
+ const response = await fetch(`${this.baseUrl}/api/mcp`, {
32
+ method: "POST",
33
+ headers: {
34
+ "Content-Type": "application/json",
35
+ Authorization: `Bearer ${this.apiKey}`,
36
+ },
37
+ body: JSON.stringify(body),
38
+ });
39
+ if (!response.ok) {
40
+ const error = await response.json().catch(() => ({}));
41
+ throw new AccountsOSError(error.error?.code || "request_failed", error.error?.message || `Request failed with status ${response.status}`, response.status);
42
+ }
43
+ const data = await response.json();
44
+ return data.result;
45
+ }
46
+ // ============================================
47
+ // Read Operations
48
+ // ============================================
49
+ async getTransactions(params) {
50
+ return this.request("tool", "get_transactions", params);
51
+ }
52
+ async getBalance(accountId) {
53
+ return this.request("tool", "get_balance", { account_id: accountId });
54
+ }
55
+ async getDeadlines(includeCompleted) {
56
+ return this.request("tool", "get_deadlines", {
57
+ include_completed: includeCompleted,
58
+ });
59
+ }
60
+ async getVATSummary(quarter) {
61
+ return this.request("tool", "get_vat_summary", { quarter });
62
+ }
63
+ async searchDocuments(query, type) {
64
+ return this.request("tool", "search_documents", { query, type });
65
+ }
66
+ async listCategories(type) {
67
+ return this.request("tool", "list_categories", { type });
68
+ }
69
+ // ============================================
70
+ // Write Operations
71
+ // ============================================
72
+ async createTransaction(params) {
73
+ return this.request("tool", "create_transaction", params);
74
+ }
75
+ async updateTransaction(params) {
76
+ return this.request("tool", "update_transaction", params);
77
+ }
78
+ async categorizeTransaction(transactionId) {
79
+ return this.request("tool", "categorize_transaction", {
80
+ transaction_id: transactionId,
81
+ });
82
+ }
83
+ async createDeadline(params) {
84
+ return this.request("tool", "create_deadline", params);
85
+ }
86
+ async uploadDocument(params) {
87
+ return this.request("tool", "upload_document", params);
88
+ }
89
+ // ============================================
90
+ // Resources
91
+ // ============================================
92
+ async getCompany() {
93
+ return this.request("resource", "accountsos://company");
94
+ }
95
+ async getRecentTransactions() {
96
+ return this.request("resource", "accountsos://transactions");
97
+ }
98
+ async getDocuments() {
99
+ return this.request("resource", "accountsos://documents");
100
+ }
101
+ async getDeadlinesResource() {
102
+ return this.request("resource", "accountsos://deadlines");
103
+ }
104
+ }
105
+ exports.AccountsOS = AccountsOS;
106
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * AccountsOS MCP Server
4
+ *
5
+ * Gives Claude and other AI assistants access to your UK accounting data via MCP.
6
+ *
7
+ * Usage:
8
+ * 1. Set ACCOUNTSOS_API_KEY environment variable
9
+ * 2. Add to Claude Desktop config:
10
+ * {
11
+ * "mcpServers": {
12
+ * "accountsos": {
13
+ * "command": "npx",
14
+ * "args": ["-y", "@thriveventurelabs/accountsos-mcp"],
15
+ * "env": { "ACCOUNTSOS_API_KEY": "sk_live_xxx" }
16
+ * }
17
+ * }
18
+ * }
19
+ */
20
+ export {};
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG"}
package/dist/index.js ADDED
@@ -0,0 +1,567 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * AccountsOS MCP Server
5
+ *
6
+ * Gives Claude and other AI assistants access to your UK accounting data via MCP.
7
+ *
8
+ * Usage:
9
+ * 1. Set ACCOUNTSOS_API_KEY environment variable
10
+ * 2. Add to Claude Desktop config:
11
+ * {
12
+ * "mcpServers": {
13
+ * "accountsos": {
14
+ * "command": "npx",
15
+ * "args": ["-y", "@thriveventurelabs/accountsos-mcp"],
16
+ * "env": { "ACCOUNTSOS_API_KEY": "sk_live_xxx" }
17
+ * }
18
+ * }
19
+ * }
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
23
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
24
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
25
+ const client_js_1 = require("./client.js");
26
+ // Get API key from environment
27
+ const apiKey = process.env.ACCOUNTSOS_API_KEY;
28
+ if (!apiKey) {
29
+ console.error("Error: ACCOUNTSOS_API_KEY environment variable is required");
30
+ console.error("Get your API key at https://accounts-os.com/settings");
31
+ process.exit(1);
32
+ }
33
+ // Initialize AccountsOS client
34
+ const client = new client_js_1.AccountsOS({
35
+ apiKey,
36
+ baseUrl: process.env.ACCOUNTSOS_BASE_URL,
37
+ });
38
+ // Create MCP server
39
+ const server = new index_js_1.Server({
40
+ name: "accountsos",
41
+ version: "0.1.0",
42
+ }, {
43
+ capabilities: {
44
+ tools: {},
45
+ resources: {},
46
+ },
47
+ });
48
+ // ============================================
49
+ // Tool Definitions
50
+ // ============================================
51
+ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
52
+ return {
53
+ tools: [
54
+ // Read Tools
55
+ {
56
+ name: "get_transactions",
57
+ description: "Get transactions with optional filters. Use this to query financial transactions, expenses, and income.",
58
+ inputSchema: {
59
+ type: "object",
60
+ properties: {
61
+ from_date: {
62
+ type: "string",
63
+ description: "Start date (YYYY-MM-DD)",
64
+ },
65
+ to_date: {
66
+ type: "string",
67
+ description: "End date (YYYY-MM-DD)",
68
+ },
69
+ category: {
70
+ type: "string",
71
+ description: "Filter by category name",
72
+ },
73
+ min_amount: {
74
+ type: "number",
75
+ description: "Minimum amount",
76
+ },
77
+ max_amount: {
78
+ type: "number",
79
+ description: "Maximum amount",
80
+ },
81
+ search: {
82
+ type: "string",
83
+ description: "Search in description",
84
+ },
85
+ limit: {
86
+ type: "number",
87
+ minimum: 1,
88
+ maximum: 100,
89
+ description: "Max results to return. Default: 50",
90
+ },
91
+ },
92
+ },
93
+ },
94
+ {
95
+ name: "get_balance",
96
+ description: "Get current account balance. Shows total balance and breakdown by account.",
97
+ inputSchema: {
98
+ type: "object",
99
+ properties: {
100
+ account_id: {
101
+ type: "string",
102
+ description: "Specific account ID (optional, shows all if not provided)",
103
+ },
104
+ },
105
+ },
106
+ },
107
+ {
108
+ name: "get_deadlines",
109
+ description: "Get upcoming tax and filing deadlines. Shows VAT returns, corporation tax, confirmation statements, etc.",
110
+ inputSchema: {
111
+ type: "object",
112
+ properties: {
113
+ include_completed: {
114
+ type: "boolean",
115
+ description: "Include completed deadlines. Default: false",
116
+ },
117
+ },
118
+ },
119
+ },
120
+ {
121
+ name: "get_vat_summary",
122
+ description: "Get VAT summary for a quarter. Shows VAT output (charged), input (reclaimable), and amount due.",
123
+ inputSchema: {
124
+ type: "object",
125
+ properties: {
126
+ quarter: {
127
+ type: "string",
128
+ description: 'Quarter (e.g., "Q1 2025"). Default: current quarter',
129
+ },
130
+ },
131
+ },
132
+ },
133
+ {
134
+ name: "search_documents",
135
+ description: "Search uploaded documents like receipts and invoices by content or vendor name.",
136
+ inputSchema: {
137
+ type: "object",
138
+ properties: {
139
+ query: {
140
+ type: "string",
141
+ description: "Search query",
142
+ },
143
+ type: {
144
+ type: "string",
145
+ enum: ["receipt", "invoice", "statement"],
146
+ description: "Filter by document type",
147
+ },
148
+ },
149
+ required: ["query"],
150
+ },
151
+ },
152
+ {
153
+ name: "list_categories",
154
+ description: "List available transaction categories for categorization. UK GAAP compliant categories.",
155
+ inputSchema: {
156
+ type: "object",
157
+ properties: {
158
+ type: {
159
+ type: "string",
160
+ enum: ["income", "expense", "asset", "liability", "equity"],
161
+ description: "Filter by category type",
162
+ },
163
+ },
164
+ },
165
+ },
166
+ // Write Tools
167
+ {
168
+ name: "create_transaction",
169
+ description: "Create a new manual transaction. Will auto-categorize if no category provided.",
170
+ inputSchema: {
171
+ type: "object",
172
+ properties: {
173
+ date: {
174
+ type: "string",
175
+ description: "Transaction date (YYYY-MM-DD)",
176
+ },
177
+ description: {
178
+ type: "string",
179
+ description: "Transaction description",
180
+ },
181
+ amount: {
182
+ type: "number",
183
+ description: "Amount (positive number)",
184
+ },
185
+ direction: {
186
+ type: "string",
187
+ enum: ["in", "out"],
188
+ description: "Money direction: in (income) or out (expense)",
189
+ },
190
+ category_id: {
191
+ type: "string",
192
+ description: "Category ID (optional - will auto-categorize if not provided)",
193
+ },
194
+ counterparty: {
195
+ type: "string",
196
+ description: "Name of the other party (client, supplier, etc.)",
197
+ },
198
+ notes: {
199
+ type: "string",
200
+ description: "Additional notes",
201
+ },
202
+ },
203
+ required: ["date", "description", "amount", "direction"],
204
+ },
205
+ },
206
+ {
207
+ name: "update_transaction",
208
+ description: "Update a transaction's category, notes, or reconciliation status.",
209
+ inputSchema: {
210
+ type: "object",
211
+ properties: {
212
+ transaction_id: {
213
+ type: "string",
214
+ description: "Transaction ID to update",
215
+ },
216
+ category_id: {
217
+ type: "string",
218
+ description: "New category ID",
219
+ },
220
+ notes: {
221
+ type: "string",
222
+ description: "Notes to add or update",
223
+ },
224
+ reconciled: {
225
+ type: "boolean",
226
+ description: "Mark as reconciled",
227
+ },
228
+ },
229
+ required: ["transaction_id"],
230
+ },
231
+ },
232
+ {
233
+ name: "categorize_transaction",
234
+ description: "Get AI-suggested category for a transaction. Returns category, confidence score, and reasoning.",
235
+ inputSchema: {
236
+ type: "object",
237
+ properties: {
238
+ transaction_id: {
239
+ type: "string",
240
+ description: "Transaction ID to categorize",
241
+ },
242
+ },
243
+ required: ["transaction_id"],
244
+ },
245
+ },
246
+ {
247
+ name: "create_deadline",
248
+ description: "Create a new tax or filing deadline reminder.",
249
+ inputSchema: {
250
+ type: "object",
251
+ properties: {
252
+ type: {
253
+ type: "string",
254
+ description: "Deadline type (e.g., vat_return, corporation_tax, confirmation_statement)",
255
+ },
256
+ due_date: {
257
+ type: "string",
258
+ description: "Due date (YYYY-MM-DD)",
259
+ },
260
+ description: {
261
+ type: "string",
262
+ description: "Description of the deadline",
263
+ },
264
+ period_start: {
265
+ type: "string",
266
+ description: "Period start date",
267
+ },
268
+ period_end: {
269
+ type: "string",
270
+ description: "Period end date",
271
+ },
272
+ },
273
+ required: ["type", "due_date"],
274
+ },
275
+ },
276
+ ],
277
+ };
278
+ });
279
+ // ============================================
280
+ // Tool Handlers
281
+ // ============================================
282
+ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
283
+ const { name, arguments: args } = request.params;
284
+ try {
285
+ switch (name) {
286
+ // Read Operations
287
+ case "get_transactions": {
288
+ const result = await client.getTransactions({
289
+ from_date: args?.from_date,
290
+ to_date: args?.to_date,
291
+ category: args?.category,
292
+ min_amount: args?.min_amount,
293
+ max_amount: args?.max_amount,
294
+ search: args?.search,
295
+ limit: args?.limit,
296
+ });
297
+ return {
298
+ content: [
299
+ {
300
+ type: "text",
301
+ text: JSON.stringify(result, null, 2),
302
+ },
303
+ ],
304
+ };
305
+ }
306
+ case "get_balance": {
307
+ const result = await client.getBalance(args?.account_id);
308
+ return {
309
+ content: [
310
+ {
311
+ type: "text",
312
+ text: JSON.stringify(result, null, 2),
313
+ },
314
+ ],
315
+ };
316
+ }
317
+ case "get_deadlines": {
318
+ const result = await client.getDeadlines(args?.include_completed);
319
+ return {
320
+ content: [
321
+ {
322
+ type: "text",
323
+ text: JSON.stringify(result, null, 2),
324
+ },
325
+ ],
326
+ };
327
+ }
328
+ case "get_vat_summary": {
329
+ const result = await client.getVATSummary(args?.quarter);
330
+ return {
331
+ content: [
332
+ {
333
+ type: "text",
334
+ text: JSON.stringify(result, null, 2),
335
+ },
336
+ ],
337
+ };
338
+ }
339
+ case "search_documents": {
340
+ const result = await client.searchDocuments(args?.query, args?.type);
341
+ return {
342
+ content: [
343
+ {
344
+ type: "text",
345
+ text: JSON.stringify(result, null, 2),
346
+ },
347
+ ],
348
+ };
349
+ }
350
+ case "list_categories": {
351
+ const result = await client.listCategories(args?.type);
352
+ return {
353
+ content: [
354
+ {
355
+ type: "text",
356
+ text: JSON.stringify(result, null, 2),
357
+ },
358
+ ],
359
+ };
360
+ }
361
+ // Write Operations
362
+ case "create_transaction": {
363
+ const result = await client.createTransaction({
364
+ date: args?.date,
365
+ description: args?.description,
366
+ amount: args?.amount,
367
+ direction: args?.direction,
368
+ category_id: args?.category_id,
369
+ counterparty: args?.counterparty,
370
+ notes: args?.notes,
371
+ });
372
+ return {
373
+ content: [
374
+ {
375
+ type: "text",
376
+ text: JSON.stringify({
377
+ success: true,
378
+ ...result,
379
+ message: result.auto_categorized
380
+ ? `Transaction created and auto-categorized with ${Math.round((result.categorization?.confidence || 0) * 100)}% confidence`
381
+ : "Transaction created successfully",
382
+ }, null, 2),
383
+ },
384
+ ],
385
+ };
386
+ }
387
+ case "update_transaction": {
388
+ const result = await client.updateTransaction({
389
+ transaction_id: args?.transaction_id,
390
+ category_id: args?.category_id,
391
+ notes: args?.notes,
392
+ reconciled: args?.reconciled,
393
+ });
394
+ return {
395
+ content: [
396
+ {
397
+ type: "text",
398
+ text: JSON.stringify({
399
+ success: true,
400
+ ...result,
401
+ message: `Transaction updated: ${result.updated_fields.join(", ")}`,
402
+ }, null, 2),
403
+ },
404
+ ],
405
+ };
406
+ }
407
+ case "categorize_transaction": {
408
+ const result = await client.categorizeTransaction(args?.transaction_id);
409
+ return {
410
+ content: [
411
+ {
412
+ type: "text",
413
+ text: JSON.stringify({
414
+ ...result,
415
+ confidence_percent: `${Math.round(result.confidence * 100)}%`,
416
+ }, null, 2),
417
+ },
418
+ ],
419
+ };
420
+ }
421
+ case "create_deadline": {
422
+ const result = await client.createDeadline({
423
+ type: args?.type,
424
+ due_date: args?.due_date,
425
+ description: args?.description,
426
+ period_start: args?.period_start,
427
+ period_end: args?.period_end,
428
+ });
429
+ return {
430
+ content: [
431
+ {
432
+ type: "text",
433
+ text: JSON.stringify({
434
+ success: true,
435
+ ...result,
436
+ message: "Deadline created successfully",
437
+ }, null, 2),
438
+ },
439
+ ],
440
+ };
441
+ }
442
+ default:
443
+ return {
444
+ content: [{ type: "text", text: `Unknown tool: ${name}` }],
445
+ isError: true,
446
+ };
447
+ }
448
+ }
449
+ catch (error) {
450
+ const message = error instanceof client_js_1.AccountsOSError
451
+ ? `${error.code}: ${error.message}`
452
+ : error instanceof Error
453
+ ? error.message
454
+ : "Unknown error";
455
+ return {
456
+ content: [{ type: "text", text: `Error: ${message}` }],
457
+ isError: true,
458
+ };
459
+ }
460
+ });
461
+ // ============================================
462
+ // Resource Definitions
463
+ // ============================================
464
+ server.setRequestHandler(types_js_1.ListResourcesRequestSchema, async () => {
465
+ return {
466
+ resources: [
467
+ {
468
+ uri: "accountsos://company",
469
+ name: "Company",
470
+ description: "Company details and settings",
471
+ mimeType: "application/json",
472
+ },
473
+ {
474
+ uri: "accountsos://transactions",
475
+ name: "Recent Transactions",
476
+ description: "Most recent 50 transactions",
477
+ mimeType: "application/json",
478
+ },
479
+ {
480
+ uri: "accountsos://documents",
481
+ name: "Documents",
482
+ description: "Uploaded receipts and invoices",
483
+ mimeType: "application/json",
484
+ },
485
+ {
486
+ uri: "accountsos://deadlines",
487
+ name: "Deadlines",
488
+ description: "Upcoming tax and filing deadlines",
489
+ mimeType: "application/json",
490
+ },
491
+ ],
492
+ };
493
+ });
494
+ server.setRequestHandler(types_js_1.ReadResourceRequestSchema, async (request) => {
495
+ const { uri } = request.params;
496
+ try {
497
+ switch (uri) {
498
+ case "accountsos://company": {
499
+ const result = await client.getCompany();
500
+ return {
501
+ contents: [
502
+ {
503
+ uri,
504
+ mimeType: "application/json",
505
+ text: JSON.stringify(result, null, 2),
506
+ },
507
+ ],
508
+ };
509
+ }
510
+ case "accountsos://transactions": {
511
+ const result = await client.getRecentTransactions();
512
+ return {
513
+ contents: [
514
+ {
515
+ uri,
516
+ mimeType: "application/json",
517
+ text: JSON.stringify(result, null, 2),
518
+ },
519
+ ],
520
+ };
521
+ }
522
+ case "accountsos://documents": {
523
+ const result = await client.getDocuments();
524
+ return {
525
+ contents: [
526
+ {
527
+ uri,
528
+ mimeType: "application/json",
529
+ text: JSON.stringify(result, null, 2),
530
+ },
531
+ ],
532
+ };
533
+ }
534
+ case "accountsos://deadlines": {
535
+ const result = await client.getDeadlinesResource();
536
+ return {
537
+ contents: [
538
+ {
539
+ uri,
540
+ mimeType: "application/json",
541
+ text: JSON.stringify(result, null, 2),
542
+ },
543
+ ],
544
+ };
545
+ }
546
+ default:
547
+ throw new Error(`Unknown resource: ${uri}`);
548
+ }
549
+ }
550
+ catch (error) {
551
+ const message = error instanceof Error ? error.message : "Unknown error";
552
+ throw new Error(`Failed to read resource: ${message}`);
553
+ }
554
+ });
555
+ // ============================================
556
+ // Start Server
557
+ // ============================================
558
+ async function main() {
559
+ const transport = new stdio_js_1.StdioServerTransport();
560
+ await server.connect(transport);
561
+ console.error("AccountsOS MCP server running");
562
+ }
563
+ main().catch((error) => {
564
+ console.error("Fatal error:", error);
565
+ process.exit(1);
566
+ });
567
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@thriveventurelabs/accountsos-mcp",
3
+ "version": "0.1.0",
4
+ "description": "MCP server for AccountsOS - Chat with your books from Claude Desktop",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "accountsos-mcp": "./dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "scripts": {
14
+ "build": "tsc",
15
+ "dev": "tsc --watch",
16
+ "start": "node dist/index.js",
17
+ "prepublishOnly": "npm run build"
18
+ },
19
+ "keywords": [
20
+ "mcp",
21
+ "model-context-protocol",
22
+ "claude",
23
+ "accounting",
24
+ "bookkeeping",
25
+ "ai",
26
+ "llm",
27
+ "anthropic",
28
+ "uk-accounting"
29
+ ],
30
+ "author": "AccountsOS",
31
+ "license": "MIT",
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "https://github.com/paulgosnell/accounts-OS"
35
+ },
36
+ "homepage": "https://accounts-os.com",
37
+ "dependencies": {
38
+ "@modelcontextprotocol/sdk": "^1.0.0"
39
+ },
40
+ "devDependencies": {
41
+ "@types/node": "^20.0.0",
42
+ "typescript": "^5.0.0"
43
+ }
44
+ }