@promptpartner/bexio-mcp-server 2.0.2 → 2.0.4
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 +58 -44
- package/dist/index.js +7 -3
- package/dist/package.json +3 -0
- package/package.json +12 -9
package/README.md
CHANGED
|
@@ -1,25 +1,31 @@
|
|
|
1
1
|
# @promptpartner/bexio-mcp-server
|
|
2
2
|
|
|
3
|
-
Complete Swiss accounting integration for [Bexio](https://www.bexio.com/)
|
|
3
|
+
Complete Swiss accounting integration for [Bexio](https://www.bexio.com/) via the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/). Works with **Claude Desktop**, **n8n**, and any MCP-compatible client.
|
|
4
|
+
|
|
5
|
+
Manage invoices, contacts, projects, time tracking, and 200+ more tools through AI conversation or workflow automation.
|
|
6
|
+
|
|
7
|
+
## Compatibility
|
|
8
|
+
|
|
9
|
+
| Client | Transport | Status |
|
|
10
|
+
|--------|-----------|--------|
|
|
11
|
+
| [Claude Desktop](https://claude.ai/download) | stdio | ✅ Fully supported |
|
|
12
|
+
| [n8n](https://n8n.io/) | HTTP | ✅ Fully supported |
|
|
13
|
+
| [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | stdio | ✅ Fully supported |
|
|
14
|
+
| Other MCP clients | stdio/HTTP | ✅ Should work |
|
|
4
15
|
|
|
5
16
|
## Quick Start
|
|
6
17
|
|
|
7
|
-
###
|
|
18
|
+
### For Claude Desktop
|
|
19
|
+
|
|
20
|
+
**Option A: MCPB Bundle (Easiest)**
|
|
8
21
|
|
|
9
22
|
1. Download `bexio-mcp-server.mcpb` from [Releases](https://github.com/promptpartner/bexio-mcp-server/releases)
|
|
10
|
-
2. Double-click to install
|
|
23
|
+
2. Double-click to install
|
|
11
24
|
3. Enter your Bexio API token when prompted
|
|
12
25
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
npx @promptpartner/bexio-mcp-server
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
Add to Claude Desktop config:
|
|
26
|
+
**Option B: npm**
|
|
20
27
|
|
|
21
|
-
|
|
22
|
-
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
|
|
28
|
+
Add to `claude_desktop_config.json`:
|
|
23
29
|
|
|
24
30
|
```json
|
|
25
31
|
{
|
|
@@ -35,37 +41,42 @@ Add to Claude Desktop config:
|
|
|
35
41
|
}
|
|
36
42
|
```
|
|
37
43
|
|
|
38
|
-
|
|
44
|
+
Config location:
|
|
45
|
+
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
46
|
+
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
|
|
47
|
+
|
|
48
|
+
### For n8n and Other HTTP Clients
|
|
49
|
+
|
|
50
|
+
Start the server in HTTP mode:
|
|
39
51
|
|
|
40
52
|
```bash
|
|
41
|
-
|
|
42
|
-
cd bexio-mcp-server/src
|
|
43
|
-
npm install
|
|
44
|
-
npm run build
|
|
53
|
+
BEXIO_API_TOKEN=your-token npx @promptpartner/bexio-mcp-server --mode http --port 8000
|
|
45
54
|
```
|
|
46
55
|
|
|
47
|
-
|
|
56
|
+
The server exposes MCP over HTTP at `http://localhost:8000`. Configure your MCP client to connect to this endpoint.
|
|
48
57
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
### For Other stdio Clients
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
BEXIO_API_TOKEN=your-token npx @promptpartner/bexio-mcp-server
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Or build from source:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
git clone https://github.com/promptpartner/bexio-mcp-server
|
|
68
|
+
cd bexio-mcp-server/src
|
|
69
|
+
npm install && npm run build
|
|
70
|
+
BEXIO_API_TOKEN=your-token node dist/index.js
|
|
61
71
|
```
|
|
62
72
|
|
|
63
73
|
## Getting Your Bexio API Token
|
|
64
74
|
|
|
65
|
-
1.
|
|
66
|
-
2.
|
|
67
|
-
3.
|
|
68
|
-
4.
|
|
75
|
+
1. Go to [developer.bexio.com](https://developer.bexio.com/)
|
|
76
|
+
2. Log in with your regular Bexio account
|
|
77
|
+
3. Navigate to **Personal Access Tokens**
|
|
78
|
+
4. Click **Create New Token**
|
|
79
|
+
5. Copy the token and use it in your configuration
|
|
69
80
|
|
|
70
81
|
## Features
|
|
71
82
|
|
|
@@ -81,7 +92,7 @@ This MCP server provides **221 tools** across all Bexio domains:
|
|
|
81
92
|
- Quotes with accept/decline workflows
|
|
82
93
|
- Orders with delivery management
|
|
83
94
|
- Incoming payments tracking
|
|
84
|
-
- Interactive invoice preview
|
|
95
|
+
- Interactive invoice preview (Claude Desktop)
|
|
85
96
|
|
|
86
97
|
### Banking & Payments
|
|
87
98
|
- Swiss QR-bill payment support (QR-IBAN)
|
|
@@ -115,14 +126,6 @@ This MCP server provides **221 tools** across all Bexio domains:
|
|
|
115
126
|
- Absence tracking
|
|
116
127
|
- Payroll documents
|
|
117
128
|
|
|
118
|
-
## HTTP Mode
|
|
119
|
-
|
|
120
|
-
For integration with n8n or other automation tools:
|
|
121
|
-
|
|
122
|
-
```bash
|
|
123
|
-
npx @promptpartner/bexio-mcp-server --mode http --port 8000
|
|
124
|
-
```
|
|
125
|
-
|
|
126
129
|
## Environment Variables
|
|
127
130
|
|
|
128
131
|
| Variable | Required | Default | Description |
|
|
@@ -130,10 +133,21 @@ npx @promptpartner/bexio-mcp-server --mode http --port 8000
|
|
|
130
133
|
| `BEXIO_API_TOKEN` | Yes | - | Your Bexio API token |
|
|
131
134
|
| `BEXIO_BASE_URL` | No | `https://api.bexio.com/2.0` | API endpoint URL |
|
|
132
135
|
|
|
136
|
+
## Command Line Options
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
npx @promptpartner/bexio-mcp-server [options]
|
|
140
|
+
|
|
141
|
+
Options:
|
|
142
|
+
--mode <stdio|http> Transport mode (default: stdio)
|
|
143
|
+
--host <address> HTTP host (default: 0.0.0.0)
|
|
144
|
+
--port <number> HTTP port (default: 8000)
|
|
145
|
+
```
|
|
146
|
+
|
|
133
147
|
## Troubleshooting
|
|
134
148
|
|
|
135
149
|
### "Invalid API token" error
|
|
136
|
-
- Verify your token
|
|
150
|
+
- Verify your token at [developer.bexio.com](https://developer.bexio.com/) > Personal Access Tokens
|
|
137
151
|
- Ensure the token has not expired
|
|
138
152
|
- Check that the token has the required permissions
|
|
139
153
|
|
package/dist/index.js
CHANGED
|
@@ -12,13 +12,17 @@
|
|
|
12
12
|
* IMPORTANT: All logging goes to stderr via logger.ts.
|
|
13
13
|
* stdout is reserved for MCP JSON-RPC protocol messages (stdio mode only).
|
|
14
14
|
*/
|
|
15
|
-
import { config } from "dotenv";
|
|
16
15
|
import { BexioMcpServer } from "./server.js";
|
|
17
16
|
import { BexioClient } from "./bexio-client.js";
|
|
18
17
|
import { logger } from "./logger.js";
|
|
19
18
|
import { createHttpServer } from "./transports/http.js";
|
|
20
|
-
// Load environment variables from .env file
|
|
21
|
-
|
|
19
|
+
// Load environment variables from .env file (optional - for development)
|
|
20
|
+
// In MCPB bundles, env vars are already set by Claude Desktop
|
|
21
|
+
import("dotenv")
|
|
22
|
+
.then((dotenv) => dotenv.config())
|
|
23
|
+
.catch(() => {
|
|
24
|
+
// dotenv not available - that's fine for MCPB bundles
|
|
25
|
+
});
|
|
22
26
|
// Configuration from environment
|
|
23
27
|
const BEXIO_API_TOKEN = process.env["BEXIO_API_TOKEN"];
|
|
24
28
|
const BEXIO_BASE_URL = process.env["BEXIO_BASE_URL"] ?? "https://api.bexio.com/2.0";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@promptpartner/bexio-mcp-server",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.4",
|
|
4
4
|
"description": "Model Context Protocol server for Bexio API integration",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
"LICENSE"
|
|
14
14
|
],
|
|
15
15
|
"scripts": {
|
|
16
|
-
"build": "tsc && npm run build:ui",
|
|
16
|
+
"build": "tsc && npm run build:ui && npm run postbuild",
|
|
17
|
+
"postbuild": "node -e \"require('fs').writeFileSync('dist/package.json', JSON.stringify({type:'module'}, null, 2)+'\\n'); console.log('Created dist/package.json')\"",
|
|
17
18
|
"build:ui": "node -e \"const fs=require('fs'); if(fs.existsSync('ui')){const{execSync}=require('child_process');execSync('npx vite build',{stdio:'inherit'})}else{console.log('Skipping UI build - ui/ not found')}\"",
|
|
18
19
|
"dev": "tsx watch src/index.ts",
|
|
19
20
|
"dev:ui": "vite build --watch",
|
|
@@ -22,7 +23,8 @@
|
|
|
22
23
|
"type-check": "tsc --noEmit",
|
|
23
24
|
"clean": "node -e \"const fs=require('fs'); if(fs.existsSync('dist')){fs.rmSync('dist',{recursive:true}); console.log('Cleaned dist/')}\"",
|
|
24
25
|
"prebuild": "npm run clean",
|
|
25
|
-
"
|
|
26
|
+
"bundle:mcpb": "node scripts/bundle-mcpb.js",
|
|
27
|
+
"pack:mcpb": "npm run build && npm run bundle:mcpb && npm run copy:bundle && cd .. && mcpb pack",
|
|
26
28
|
"copy:bundle": "node -e \"const fs=require('fs'); const path=require('path'); function copyDir(src,dest){fs.mkdirSync(dest,{recursive:true});fs.readdirSync(src).forEach(f=>{const srcPath=path.join(src,f);const destPath=path.join(dest,f);fs.statSync(srcPath).isDirectory()?copyDir(srcPath,destPath):fs.copyFileSync(srcPath,destPath)})} const rootDist=path.join(__dirname,'..','dist'); if(fs.existsSync(rootDist))fs.rmSync(rootDist,{recursive:true}); copyDir('dist',rootDist); console.log('Copied dist/ to root for MCPB bundling')\"",
|
|
27
29
|
"validate:mcpb": "cd .. && mcpb validate manifest.json",
|
|
28
30
|
"prepublishOnly": "npm run build"
|
|
@@ -52,22 +54,23 @@
|
|
|
52
54
|
],
|
|
53
55
|
"license": "MIT",
|
|
54
56
|
"dependencies": {
|
|
55
|
-
"@
|
|
57
|
+
"@fastify/cors": "^9.0.0",
|
|
56
58
|
"@modelcontextprotocol/ext-apps": "^1.0.1",
|
|
59
|
+
"@modelcontextprotocol/sdk": "^1.25.2",
|
|
57
60
|
"axios": "^1.7.0",
|
|
58
|
-
"zod": "3.25.76",
|
|
59
61
|
"dotenv": "^16.3.0",
|
|
60
62
|
"fastify": "^4.28.0",
|
|
61
|
-
"
|
|
63
|
+
"zod": "3.25.76"
|
|
62
64
|
},
|
|
63
65
|
"devDependencies": {
|
|
64
66
|
"@types/node": "^20.8.0",
|
|
65
|
-
"
|
|
67
|
+
"concurrently": "^8.0.0",
|
|
68
|
+
"esbuild": "^0.27.2",
|
|
66
69
|
"tsx": "^4.0.0",
|
|
67
|
-
"
|
|
70
|
+
"typescript": "^5.5.0",
|
|
68
71
|
"vite": "^6.0.0",
|
|
69
72
|
"vite-plugin-singlefile": "^2.3.0",
|
|
70
|
-
"
|
|
73
|
+
"vitest": "^2.0.0"
|
|
71
74
|
},
|
|
72
75
|
"engines": {
|
|
73
76
|
"node": ">=18.0.0"
|