@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 CHANGED
@@ -1,25 +1,31 @@
1
1
  # @promptpartner/bexio-mcp-server
2
2
 
3
- Complete Swiss accounting integration for [Bexio](https://www.bexio.com/) with [Claude Desktop](https://claude.com/desktop). Manage invoices, contacts, projects, time tracking, and 200+ more tools through natural conversation.
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
- ### Option 1: MCPB Bundle (Recommended)
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 in Claude Desktop
23
+ 2. Double-click to install
11
24
  3. Enter your Bexio API token when prompted
12
25
 
13
- ### Option 2: npm
14
-
15
- ```bash
16
- npx @promptpartner/bexio-mcp-server
17
- ```
18
-
19
- Add to Claude Desktop config:
26
+ **Option B: npm**
20
27
 
21
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
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
- ### Option 3: From Source
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
- git clone https://github.com/promptpartner/bexio-mcp-server
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
- Add to Claude Desktop config:
56
+ The server exposes MCP over HTTP at `http://localhost:8000`. Configure your MCP client to connect to this endpoint.
48
57
 
49
- ```json
50
- {
51
- "mcpServers": {
52
- "bexio": {
53
- "command": "node",
54
- "args": ["/path/to/bexio-mcp-server/src/dist/index.js"],
55
- "env": {
56
- "BEXIO_API_TOKEN": "your-token-here"
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. Log in to [Bexio](https://office.bexio.com/)
66
- 2. Go to **Settings** > **API Tokens**
67
- 3. Click **Create Token**
68
- 4. Copy the token and use it in your configuration
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 in Bexio Settings > API Tokens
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
- config();
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";
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@promptpartner/bexio-mcp-server",
3
- "version": "2.0.2",
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
- "pack:mcpb": "npm run build && npm run copy:bundle && cd .. && mcpb pack",
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
- "@modelcontextprotocol/sdk": "^1.25.2",
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
- "@fastify/cors": "^9.0.0"
63
+ "zod": "3.25.76"
62
64
  },
63
65
  "devDependencies": {
64
66
  "@types/node": "^20.8.0",
65
- "typescript": "^5.5.0",
67
+ "concurrently": "^8.0.0",
68
+ "esbuild": "^0.27.2",
66
69
  "tsx": "^4.0.0",
67
- "vitest": "^2.0.0",
70
+ "typescript": "^5.5.0",
68
71
  "vite": "^6.0.0",
69
72
  "vite-plugin-singlefile": "^2.3.0",
70
- "concurrently": "^8.0.0"
73
+ "vitest": "^2.0.0"
71
74
  },
72
75
  "engines": {
73
76
  "node": ">=18.0.0"