@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 +92 -0
- package/dist/client.d.ts +180 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +106 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +567 -0
- package/dist/index.js.map +1 -0
- package/package.json +44 -0
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
|
package/dist/client.d.ts
ADDED
|
@@ -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":";AAAA;;;;GAIG;;;AA4EH,MAAa,eAAgB,SAAQ,KAAK;IAE/B;IAEA;IAHT,YACS,IAAY,EACnB,OAAe,EACR,MAAe;QAEtB,KAAK,CAAC,OAAO,CAAC,CAAC;QAJR,SAAI,GAAJ,IAAI,CAAQ;QAEZ,WAAM,GAAN,MAAM,CAAS;QAGtB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AATD,0CASC;AAED,MAAa,UAAU;IACb,MAAM,CAAS;IACf,OAAO,CAAS;IAExB,YAAY,MAAwB;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,yBAAyB,CAAC;IAC7D,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,IAAyB,EACzB,SAAiB,EACjB,IAA8B;QAE9B,MAAM,IAAI,GACR,IAAI,KAAK,MAAM;YACb,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE;YAC1D,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;QAE3C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,UAAU,EAAE;YACtD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;aACvC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtD,MAAM,IAAI,eAAe,CACvB,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,gBAAgB,EACrC,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,8BAA8B,QAAQ,CAAC,MAAM,EAAE,EACvE,QAAQ,CAAC,MAAM,CAChB,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,MAAW,CAAC;IAC1B,CAAC;IAED,+CAA+C;IAC/C,kBAAkB;IAClB,+CAA+C;IAE/C,KAAK,CAAC,eAAe,CAAC,MAQrB;QACC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAkB;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,gBAA0B;QAE1B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,EAAE;YAC3C,iBAAiB,EAAE,gBAAgB;SACpC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAgB;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,KAAa,EACb,IAAa;QAEb,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,IAAa;QAEb,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,+CAA+C;IAC/C,mBAAmB;IACnB,+CAA+C;IAE/C,KAAK,CAAC,iBAAiB,CAAC,MAQvB;QAKC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,MAKvB;QAIC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,aAAqB;QAQ/C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,wBAAwB,EAAE;YACpD,cAAc,EAAE,aAAa;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAMpB;QAKC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAIpB;QAKC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,+CAA+C;IAC/C,YAAY;IACZ,+CAA+C;IAE/C,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,qBAAqB;QAIzB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,oBAAoB;QAIxB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;IAC5D,CAAC;CACF;AAtLD,gCAsLC"}
|
package/dist/index.d.ts
ADDED
|
@@ -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
|
+
}
|