MCP tool’ları için guardrail ekleyen bir npm paketi yayınladım
MCP server yazarken fark ettiğim bir problem vardı: tool yazmak kolay ama agent’a açınca “bu tool nereye kadar yetkili olmalı?” kısmı biraz havada kalıyor.
Mesela read_file her dosyayı okuyabilmeli mi?delete_file approval olmadan çalışmalı mı?run_command rastgele komut çalıştırabilmeli mi?
Bir tool .env içeriğini dönerse bunu log’a yazmalı mıyız?
Bunun için ToolGate diye bir npm paketi hazırladım.
Var olan MCP tool handler’ını sarıp şu kuralları koyabiliyorsunuz:
- read / write / external / destructive risk seviyesi
- approval zorunluluğu
- dosya yolu allowlist / denylist
- domain allowlist / denylist
- komut allowlist / denylist
- timeout
- rate limit
- secret redaction
- JSONL audit log
- policy hatalarında düzenli response
Örnek:
server.tool(
"delete_file",
schema,
gate({
risk: "destructive",
requireApproval: true,
allowedPaths: ["src/**", "docs/**"],
deniedPaths: [".env", "secrets/**"],
audit: true,
redact: true,
timeoutMs: 10_000
}, async (input) => {
// gerçek tool logic burada
})
);
MCP SDK’nın yerine geçmiyor; sadece tool handler’ın önüne policy katmanı koyuyor.
MCP server yazan varsa fikrini merak ederim. Siz böyle bir şeyi middleware olarak mı kullanırdınız, yoksa proxy/gateway tarafı daha mı mantıklı olurdu?
Repo: https://github.com/Wezylnia/toolgate
npm: toolgate-mcp