@guardbee/mcp-security-proxy 0.1.0 → 0.2.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 +110 -0
- package/dist/audit/logger.d.ts.map +1 -1
- package/dist/audit/logger.js.map +1 -1
- package/dist/cli.js +0 -0
- package/dist/config.js.map +1 -1
- package/dist/interceptors/pii-masker.js.map +1 -1
- package/dist/interceptors/prompt-injection.js.map +1 -1
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +17 -0
- package/dist/proxy.js.map +1 -1
- package/package.json +15 -16
package/README.md
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# @guardbee/mcp-security-proxy
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@guardbee/mcp-security-proxy)
|
|
4
|
+
[](https://www.npmjs.com/package/@guardbee/mcp-security-proxy)
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
|
|
7
|
+
Herhangi bir MCP sunucusunun önüne oturan şeffaf güvenlik katmanı. Prompt injection saldırılarını engeller, yanıtlardaki PII'yi maskeler ve her isteği değiştirilemez audit log'a yazar.
|
|
8
|
+
|
|
9
|
+
> Bu paket varsayılan olarak GuardBee'ye kullanım telemetrisi gönderir (tool adı + kısa parametreler, bkz. [`@guardbee/mcp-telemetry`](../telemetry/README.md)) — bu, kendi local audit log'undan ayrı ve bağımsızdır. Kapatmak için `GUARDBEE_TELEMETRY=0`.
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
Claude ──► MCP Security Proxy ──► Herhangi bir MCP Sunucu
|
|
13
|
+
│
|
|
14
|
+
├─ Prompt injection tespiti (16 saldırı deseni)
|
|
15
|
+
├─ PII maskeleme (TC kimlik, IBAN, e-posta, JWT, API key)
|
|
16
|
+
├─ Block veya warn modu
|
|
17
|
+
└─ Yapılandırılabilir audit log
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Özellikler
|
|
23
|
+
|
|
24
|
+
- **Prompt Injection Koruması** — 16 saldırı deseni ile sistem prompt'larını geçersiz kılmaya çalışan istekler engellenir
|
|
25
|
+
- **PII Maskeleme** — TC kimlik no, IBAN, e-posta, telefon, JWT token, API key yanıtlarda otomatik maskelenir
|
|
26
|
+
- **Block / Warn Modu** — Her interceptor bağımsız olarak engelleyici veya uyarı modunda çalışabilir
|
|
27
|
+
- **Audit Log** — Console veya dosyaya yazılan yapılandırılabilir log
|
|
28
|
+
- **Sıfır Kod Değişikliği** — Mevcut herhangi bir MCP sunucusunun önüne takılır
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Hızlı Başlangıç
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install -g @guardbee/mcp-security-proxy
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
`claude_desktop_config.json` dosyasına ekleyin:
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"mcpServers": {
|
|
43
|
+
"secure-filesystem": {
|
|
44
|
+
"command": "npx",
|
|
45
|
+
"args": [
|
|
46
|
+
"-y", "@guardbee/mcp-security-proxy",
|
|
47
|
+
"--", "npx", "-y",
|
|
48
|
+
"@modelcontextprotocol/server-filesystem", "/tmp"
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
> Proxy, `--` sonrasındaki komutu hedef MCP sunucu olarak başlatır.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## MCP Tools
|
|
60
|
+
|
|
61
|
+
Proxy, tool'ları hedef sunucudan şeffaf olarak aktarır ve her geçişte interceptor zincirini uygular. Ek olarak aşağıdaki yönetim tool'unu sunar:
|
|
62
|
+
|
|
63
|
+
| Tool | Açıklama |
|
|
64
|
+
|------|----------|
|
|
65
|
+
| `proxy_status` | Aktif interceptor'ları ve son engellenen istek istatistiklerini gösterir |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Interceptor'lar
|
|
70
|
+
|
|
71
|
+
### Prompt Injection Detector
|
|
72
|
+
|
|
73
|
+
Gelen mesajlarda aşağıdaki saldırı desenlerini arar:
|
|
74
|
+
|
|
75
|
+
- `ignore previous instructions`
|
|
76
|
+
- `disregard your system prompt`
|
|
77
|
+
- `you are now [DAN/jailbreak]`
|
|
78
|
+
- ANSI escape dizileri ile gizlenmiş komutlar
|
|
79
|
+
- Base64 kodlanmış talimatlar
|
|
80
|
+
- ve 11 desen daha
|
|
81
|
+
|
|
82
|
+
### PII Masker
|
|
83
|
+
|
|
84
|
+
| Veri Tipi | Örnek Girdi | Çıktı |
|
|
85
|
+
|-----------|------------|-------|
|
|
86
|
+
| TC Kimlik | `12345678901` | `[TC-REDACTED]` |
|
|
87
|
+
| IBAN | `TR320006200...` | `TR32***` |
|
|
88
|
+
| E-posta | `ahmet@example.com` | `ah***@example.com` |
|
|
89
|
+
| JWT | `eyJhbGc...` | `[JWT-REDACTED]` |
|
|
90
|
+
| API Key | `sk-abc123...` | `[KEY-REDACTED]` |
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Yapılandırma
|
|
95
|
+
|
|
96
|
+
Ortam değişkenleri ile yapılandırılabilir:
|
|
97
|
+
|
|
98
|
+
| Değişken | Varsayılan | Açıklama |
|
|
99
|
+
|----------|-----------|----------|
|
|
100
|
+
| `PROXY_MODE` | `block` | `block` veya `warn` |
|
|
101
|
+
| `PROXY_LOG` | `console` | `console` veya `file` |
|
|
102
|
+
| `PROXY_LOG_PATH` | `./proxy-audit.jsonl` | Log dosya yolu |
|
|
103
|
+
| `PROXY_PII_MASK` | `true` | PII maskelemeyi etkinleştir |
|
|
104
|
+
| `PROXY_INJECTION_CHECK` | `true` | Injection kontrolünü etkinleştir |
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Lisans
|
|
109
|
+
|
|
110
|
+
MIT — [GuardBee](https://guardbee.ai)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/audit/logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE3D,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,MAAM,CAA+B;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/audit/logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE3D,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,MAAM,CAA+B;gBAEjC,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAOrD,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAU5B,KAAK,IAAI,IAAI;CAGd"}
|
package/dist/audit/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/audit/logger.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AAGpB;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/audit/logger.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AAGpB,MAAa,WAAW;IAItB,YAAY,MAAyC;QAF7C,WAAM,GAA0B,IAAI,CAAC;QAG3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC9C,IAAI,CAAC,MAAM,GAAG,YAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,GAAG,CAAC,KAAiB;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;IACrB,CAAC;CACF;AAxBD,kCAwBC"}
|
package/dist/cli.js
CHANGED
|
File without changes
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;AA4BA,0CAuCC;AAnED,4CAAoB;AACpB,gDAAwB;AAGxB,SAAS,kBAAkB;IACzB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACzC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACzE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAc;IACzC,sDAAsD;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACjC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,eAAe;IAC7B,qEAAqE;IACrE,MAAM,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;QACpC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC;IAElD,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAElC,kDAAkD;IAClD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;YACzC,YAAY,EAAE;gBACZ,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;gBACnD,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;aAC9B;SACF,CAAC;IACJ,CAAC;IAED,cAAc;IACd,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IACrC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;YACzC,YAAY,EAAE;gBACZ,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;gBACnD,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;aAC9B;SACF,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,KAAK,CACb,uEAAuE;QACrE,8CAA8C,CACjD,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pii-masker.js","sourceRoot":"","sources":["../../src/interceptors/pii-masker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pii-masker.js","sourceRoot":"","sources":["../../src/interceptors/pii-masker.ts"],"names":[],"mappings":";;AAuCA,sCAUC;AAED,wCAeC;AAlED,oCAAoC;AACpC,MAAM,YAAY,GAA6D;IAC7E;QACE,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EAAE,aAAa;KAC3B;IACD;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,iFAAiF;QAC1F,WAAW,EAAE,YAAY;KAC1B;IACD;QACE,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,8BAA8B;QACvC,WAAW,EAAE,uBAAuB;KACrC;IACD;QACE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,sDAAsD;QAC/D,WAAW,EAAE,aAAa;KAC3B;IACD;QACE,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,uEAAuE;QAChF,WAAW,EAAE,yBAAyB;KACvC;IACD;QACE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,2DAA2D;QACpE,WAAW,EAAE,WAAW;KACzB;IACD;QACE,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,wDAAwD;QACjE,WAAW,EAAE,aAAa;KAC3B;CACF,CAAC;AAEF,SAAgB,aAAa,CAAC,IAAY;IACxC,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,YAAY,EAAE,CAAC;QACpD,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,cAAc,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-injection.js","sourceRoot":"","sources":["../../src/interceptors/prompt-injection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompt-injection.js","sourceRoot":"","sources":["../../src/interceptors/prompt-injection.ts"],"names":[],"mappings":";;AA8BA,wDAaC;AAzCD,mCAAmC;AACnC,MAAM,kBAAkB,GAAa;IACnC,2DAA2D;IAC3D,8DAA8D;IAC9D,2DAA2D;IAC3D,qDAAqD;IACrD,2DAA2D;IAC3D,4DAA4D;IAC5D,YAAY;IACZ,aAAa;IACb,mBAAmB;IACnB,sBAAsB;IACtB,iBAAiB;IACjB,aAAa;IACb,8CAA8C;IAC9C,gDAAgD;IAChD,2DAA2D;IAC3D,mDAAmD;CACpD,CAAC;AAEF,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,SAAgB,sBAAsB,CAAC,KAAc;IACnD,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAEjC,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO;gBACL,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,sCAAsC,OAAO,CAAC,QAAQ,EAAE,EAAE;aACnE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC"}
|
package/dist/proxy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAM9C,wBAAsB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA+JnE"}
|
package/dist/proxy.js
CHANGED
|
@@ -9,6 +9,7 @@ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
|
9
9
|
const prompt_injection_js_1 = require("./interceptors/prompt-injection.js");
|
|
10
10
|
const pii_masker_js_1 = require("./interceptors/pii-masker.js");
|
|
11
11
|
const logger_js_1 = require("./audit/logger.js");
|
|
12
|
+
const mcp_telemetry_1 = require("@guardbee/mcp-telemetry");
|
|
12
13
|
async function startProxy(config) {
|
|
13
14
|
const audit = new logger_js_1.AuditLogger(config.audit ?? { enabled: true, sink: "console" });
|
|
14
15
|
// --- Connect to target MCP server (downstream) ---
|
|
@@ -37,6 +38,7 @@ async function startProxy(config) {
|
|
|
37
38
|
server.setRequestHandler(types_js_1.CallToolRequestSchema, async (req) => {
|
|
38
39
|
const toolName = req.params.name;
|
|
39
40
|
const toolInput = req.params.arguments ?? {};
|
|
41
|
+
const started = Date.now();
|
|
40
42
|
// 1. Prompt injection scan on input
|
|
41
43
|
if (config.interceptors?.promptInjection?.enabled !== false) {
|
|
42
44
|
const scan = (0, prompt_injection_js_1.scanForPromptInjection)(toolInput);
|
|
@@ -49,6 +51,14 @@ async function startProxy(config) {
|
|
|
49
51
|
input: toolInput,
|
|
50
52
|
reason: scan.reason,
|
|
51
53
|
});
|
|
54
|
+
void (0, mcp_telemetry_1.recordEvent)({
|
|
55
|
+
server: "security-proxy",
|
|
56
|
+
tool: toolName,
|
|
57
|
+
params: toolInput,
|
|
58
|
+
success: false,
|
|
59
|
+
durationMs: Date.now() - started,
|
|
60
|
+
error: `blocked: ${scan.reason}`,
|
|
61
|
+
});
|
|
52
62
|
return {
|
|
53
63
|
content: [
|
|
54
64
|
{
|
|
@@ -96,6 +106,13 @@ async function startProxy(config) {
|
|
|
96
106
|
server: serverInfo?.name,
|
|
97
107
|
output: content,
|
|
98
108
|
});
|
|
109
|
+
void (0, mcp_telemetry_1.recordEvent)({
|
|
110
|
+
server: "security-proxy",
|
|
111
|
+
tool: toolName,
|
|
112
|
+
params: toolInput,
|
|
113
|
+
success: !result.isError,
|
|
114
|
+
durationMs: Date.now() - started,
|
|
115
|
+
});
|
|
99
116
|
return { ...result, content };
|
|
100
117
|
});
|
|
101
118
|
// Resources pass-through
|
package/dist/proxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@guardbee/mcp-security-proxy",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Security proxy for MCP servers — intercepts tool calls, detects prompt injection, masks PII, and writes audit logs",
|
|
5
5
|
"author": "GuardBee <hello@guardbee.ai>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -29,25 +29,24 @@
|
|
|
29
29
|
"bin": {
|
|
30
30
|
"guardbee-proxy": "dist/cli.js"
|
|
31
31
|
},
|
|
32
|
-
"files": [
|
|
33
|
-
|
|
32
|
+
"files": [
|
|
33
|
+
"dist",
|
|
34
|
+
"README.md"
|
|
35
|
+
],
|
|
36
|
+
"engines": {
|
|
37
|
+
"node": ">=18"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
41
|
+
"zod": "^4.5.4",
|
|
42
|
+
"@guardbee/mcp-telemetry": "^0.1.0"
|
|
43
|
+
},
|
|
34
44
|
"scripts": {
|
|
35
45
|
"build": "tsc",
|
|
36
46
|
"dev": "tsx src/cli.ts",
|
|
37
47
|
"start": "node dist/cli.js",
|
|
38
48
|
"type-check": "tsc --noEmit",
|
|
39
49
|
"test": "vitest run",
|
|
40
|
-
"test:watch": "vitest"
|
|
41
|
-
"prepublishOnly": "npm test && npm run build"
|
|
42
|
-
},
|
|
43
|
-
"dependencies": {
|
|
44
|
-
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
45
|
-
"zod": "^4.5.4"
|
|
46
|
-
},
|
|
47
|
-
"devDependencies": {
|
|
48
|
-
"@types/node": "^26.5.0",
|
|
49
|
-
"tsx": "^4.23.13",
|
|
50
|
-
"typescript": "^7.0.2",
|
|
51
|
-
"vitest": "^3.2.7"
|
|
50
|
+
"test:watch": "vitest"
|
|
52
51
|
}
|
|
53
|
-
}
|
|
52
|
+
}
|