Skip to content

Commit d6dd33d

Browse files
committed
Add German localization, icon, and security docs
1 parent 4199fda commit d6dd33d

File tree

6 files changed

+206
-15
lines changed

6 files changed

+206
-15
lines changed

SECURITY_INFO.md

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
# Sicherheitsinformationen / Security Information
2+
3+
## Warnung bei Installation / Installation Warning
4+
5+
### 🇩🇪 Deutsch
6+
7+
**Warnung:** "Die Installation gewährt Zugriff auf alles auf deinem Computer."
8+
9+
#### Warum diese Warnung?
10+
11+
Diese Warnung erscheint, weil der MCP Server:
12+
1. **Node.js ausführt** - Ein vollwertiges Programm mit Dateisystemzugriff
13+
2. **Auf deine Proffix-Daten zugreift** - Über die REST API
14+
3. **Netzwerkverbindungen herstellt** - Zu deinem Proffix-Server und mcp.pfx.ch
15+
16+
#### Was macht der Server wirklich?
17+
18+
Der pfx MCP Server:
19+
-**Verbindet** sich nur mit `mcp.pfx.ch` (unser Remote-Server)
20+
-**Leitet** deine Proffix-Credentials sicher als HTTP-Header weiter
21+
-**Speichert KEINE Daten** lokal auf deinem Computer
22+
-**Liest KEINE anderen Dateien** außer seiner eigenen Konfiguration
23+
-**Ändert NICHTS** an deinem System
24+
25+
#### Technische Details
26+
27+
**Was der Server tut:**
28+
```
29+
Claude Desktop → mcp-http-bridge.js → https://mcp.pfx.ch/api/server → Dein Proffix
30+
```
31+
32+
**Berechtigungen die benötigt werden:**
33+
- **Netzwerk**: Verbindung zu mcp.pfx.ch und deinem Proffix-Server
34+
- **Umgebungsvariablen**: Lesen der Proffix-Credentials aus der Konfiguration
35+
- **Keine Dateisystem-Operationen** außer dem Laden des Scripts selbst
36+
37+
#### Ist das sicher?
38+
39+
**JA**, weil:
40+
1. **Open Source**: Der gesamte Code ist auf GitHub einsehbar
41+
2. **Keine Datenspeicherung**: Weder lokal noch auf unserem Server
42+
3. **Direkte Verbindung**: Deine Credentials gehen direkt an deinen Proffix-Server
43+
4. **Verschlüsselt**: Alle Verbindungen über HTTPS
44+
5. **Minimaler Code**: Nur ~200 Zeilen JavaScript, leicht überprüfbar
45+
46+
#### Code-Review
47+
48+
Du kannst den kompletten Source Code hier prüfen:
49+
- **Bridge Script**: [mcp-http-bridge.js](https://github.com/pitwch/pfx-mcp-server/blob/main/mcp-http-bridge.js)
50+
- **Manifest**: [bundle/manifest.json](https://github.com/pitwch/pfx-mcp-server/blob/main/bundle/manifest.json)
51+
52+
---
53+
54+
### 🇬🇧 English
55+
56+
**Warning:** "Installation grants access to everything on your computer."
57+
58+
#### Why this warning?
59+
60+
This warning appears because the MCP server:
61+
1. **Runs Node.js** - A full program with filesystem access
62+
2. **Accesses your Proffix data** - Via the REST API
63+
3. **Makes network connections** - To your Proffix server and mcp.pfx.ch
64+
65+
#### What does the server actually do?
66+
67+
The pfx MCP Server:
68+
-**Connects** only to `mcp.pfx.ch` (our remote server)
69+
-**Forwards** your Proffix credentials securely as HTTP headers
70+
-**Stores NO data** locally on your computer
71+
-**Reads NO other files** except its own configuration
72+
-**Changes NOTHING** on your system
73+
74+
#### Technical Details
75+
76+
**What the server does:**
77+
```
78+
Claude Desktop → mcp-http-bridge.js → https://mcp.pfx.ch/api/server → Your Proffix
79+
```
80+
81+
**Required permissions:**
82+
- **Network**: Connection to mcp.pfx.ch and your Proffix server
83+
- **Environment variables**: Read Proffix credentials from configuration
84+
- **No filesystem operations** except loading the script itself
85+
86+
#### Is it safe?
87+
88+
**YES**, because:
89+
1. **Open Source**: All code is visible on GitHub
90+
2. **No data storage**: Neither locally nor on our server
91+
3. **Direct connection**: Your credentials go directly to your Proffix server
92+
4. **Encrypted**: All connections via HTTPS
93+
5. **Minimal code**: Only ~200 lines of JavaScript, easy to verify
94+
95+
#### Code Review
96+
97+
You can review the complete source code here:
98+
- **Bridge Script**: [mcp-http-bridge.js](https://github.com/pitwch/pfx-mcp-server/blob/main/mcp-http-bridge.js)
99+
- **Manifest**: [bundle/manifest.json](https://github.com/pitwch/pfx-mcp-server/blob/main/bundle/manifest.json)
100+
101+
---
102+
103+
## Datenschutz / Privacy
104+
105+
### Was wird übertragen? / What is transmitted?
106+
107+
**An mcp.pfx.ch:**
108+
- ✅ API Key (zur Authentifizierung)
109+
- ✅ Proffix Credentials (als HTTP Headers)
110+
- ✅ MCP Anfragen (z.B. "Zeige Adressen")
111+
112+
**NICHT übertragen / NOT transmitted:**
113+
- ❌ Keine lokalen Dateien / No local files
114+
- ❌ Keine Browserdaten / No browser data
115+
- ❌ Keine anderen Programme / No other programs
116+
117+
### Datenfluss / Data Flow
118+
119+
```
120+
1. Claude fragt: "Zeige Adressen"
121+
2. Bridge leitet weiter an mcp.pfx.ch
122+
3. mcp.pfx.ch ruft dein Proffix ab
123+
4. Antwort geht zurück zu Claude
124+
5. KEINE Speicherung irgendwo
125+
```
126+
127+
---
128+
129+
## Häufige Fragen / FAQ
130+
131+
### 🇩🇪 Kann der Server meine Dateien lesen?
132+
133+
**Technisch ja**, aber der Code tut das nicht. Du kannst den Source Code selbst überprüfen - es sind nur ~200 Zeilen.
134+
135+
### 🇩🇪 Warum nicht lokal ohne Remote-Server?
136+
137+
Der Remote-Server bei mcp.pfx.ch:
138+
- Verwaltet 120+ Proffix Endpoints
139+
- Stellt Fuzzy-Search bereit
140+
- Wird zentral aktualisiert
141+
- Du musst nichts installieren oder warten
142+
143+
### 🇩🇪 Kann ich den Server selbst hosten?
144+
145+
Ja! Der Server-Code ist Open Source. Du kannst ihn auf deinem eigenen Server deployen und die URL im Manifest ändern.
146+
147+
### 🇬🇧 Can the server read my files?
148+
149+
**Technically yes**, but the code doesn't do that. You can review the source code yourself - it's only ~200 lines.
150+
151+
### 🇬🇧 Why not local without remote server?
152+
153+
The remote server at mcp.pfx.ch:
154+
- Manages 120+ Proffix endpoints
155+
- Provides fuzzy search
156+
- Is centrally updated
157+
- You don't need to install or maintain anything
158+
159+
### 🇬🇧 Can I self-host the server?
160+
161+
Yes! The server code is open source. You can deploy it on your own server and change the URL in the manifest.
162+
163+
---
164+
165+
## Kontakt / Contact
166+
167+
Bei Sicherheitsbedenken / For security concerns:
168+
- **Email**: security@pfx.ch
169+
- **GitHub Issues**: https://github.com/pitwch/pfx-mcp-server/issues
170+
- **Website**: https://mcp.pfx.ch/#kontakt

bundle/icon.png

79.9 KB
Loading

bundle/manifest.json

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
"manifest_version": "0.3",
33
"name": "pfx-mcp-server",
44
"display_name": "Proffix Px5 MCP Server",
5-
"description": "Connect AI assistants to your Forterro Proffix Px5 ERP system via MCP protocol",
5+
"description": "Verbinde KI-Assistenten mit deinem Forterro Proffix Px5 ERP-System über das MCP-Protokoll",
6+
"long_description": "Der Proffix Px5 MCP Server ermöglicht es KI-Assistenten wie Claude, direkt mit deinem Proffix ERP-System zu kommunizieren. Greife auf Adressen, Artikel, Aufträge und weitere Proffix-Funktionen zu, ohne das ERP-System zu verlassen. Alle Daten werden sicher über deine eigene Proffix REST API übertragen.",
67
"version": "1.0.8",
8+
"icon": "icon.png",
79
"author": {
810
"name": "Pedrett IT+Web AG",
911
"url": "https://mcp.pfx.ch"
@@ -14,6 +16,9 @@
1416
"url": "https://github.com/pitwch/pfx-mcp-server"
1517
},
1618
"license": "MIT",
19+
"privacy_policies": [
20+
"https://mcp.pfx.ch/privacy"
21+
],
1722
"keywords": [
1823
"erp",
1924
"proffix",
@@ -46,44 +51,47 @@
4651
"api_key": {
4752
"type": "string",
4853
"title": "API Key",
49-
"description": "Your pfx MCP Server API Key (get it from https://mcp.pfx.ch/request-api-key.html)",
54+
"description": "Dein pfx MCP Server API Key (kostenlos unter https://mcp.pfx.ch/request-api-key.html)",
5055
"sensitive": true,
5156
"required": true,
5257
"default": "Bearer "
5358
},
5459
"proffix_username": {
5560
"type": "string",
56-
"title": "Proffix Username",
57-
"description": "Your Proffix username",
61+
"title": "Proffix Benutzername",
62+
"description": "Dein Proffix Benutzername",
5863
"required": true
5964
},
6065
"proffix_password": {
6166
"type": "string",
62-
"title": "Proffix Password",
63-
"description": "Your Proffix password",
67+
"title": "Proffix Passwort",
68+
"description": "Dein Proffix Passwort",
6469
"sensitive": true,
6570
"required": true
6671
},
6772
"proffix_url": {
6873
"type": "string",
6974
"title": "Proffix Server URL",
70-
"description": "Your Proffix server URL (e.g., https://your-proffix.com)",
75+
"description": "Deine Proffix Server URL (z.B. https://dein-proffix.com)",
7176
"required": true
7277
},
7378
"proffix_port": {
7479
"type": "string",
7580
"title": "Proffix API Port",
76-
"description": "Proffix REST API port",
81+
"description": "Proffix REST API Port",
7782
"required": true,
7883
"default": "11011"
7984
},
8085
"proffix_database": {
8186
"type": "string",
82-
"title": "Proffix Database",
83-
"description": "Your Proffix database name",
87+
"title": "Proffix Datenbank",
88+
"description": "Dein Proffix Datenbankname",
8489
"required": true
8590
}
8691
},
92+
"localization": {
93+
"default_locale": "de-CH"
94+
},
8795
"compatibility": {
8896
"runtimes": {
8997
"node": ">=18.0.0"

logos/pfx_MCP.jpeg

79.9 KB
Loading

logos/pfx_MCP_small.jpeg

18.5 KB
Loading

scripts/build-mcpb.js

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ const FILES_TO_BUNDLE = [
2020
'LICENSE'
2121
];
2222

23+
// Files to copy from bundle directory
24+
const BUNDLE_FILES = [
25+
'manifest.json',
26+
'icon.png'
27+
];
28+
2329
console.log('🔨 Building MCPB bundle...');
2430

2531
// Create dist directory if it doesn't exist
@@ -37,11 +43,18 @@ fs.mkdirSync(BUILD_DIR, { recursive: true });
3743
console.log('✓ Created temporary build directory');
3844

3945
try {
40-
// Copy manifest.json
41-
const manifestSrc = path.join(BUNDLE_DIR, 'manifest.json');
42-
const manifestDest = path.join(BUILD_DIR, 'manifest.json');
43-
fs.copyFileSync(manifestSrc, manifestDest);
44-
console.log('✓ Copied manifest.json');
46+
// Copy files from bundle directory
47+
for (const file of BUNDLE_FILES) {
48+
const src = path.join(BUNDLE_DIR, file);
49+
const dest = path.join(BUILD_DIR, file);
50+
51+
if (fs.existsSync(src)) {
52+
fs.copyFileSync(src, dest);
53+
console.log(`✓ Copied ${file}`);
54+
} else {
55+
console.warn(`⚠ Warning: ${file} not found in bundle/, skipping`);
56+
}
57+
}
4558

4659
// Copy bridge script and other files
4760
for (const file of FILES_TO_BUNDLE) {

0 commit comments

Comments
 (0)