Palaryn MCP Server

Palaryn MCP Server

Governs AI agent HTTP requests with policy enforcement, security scanning, and audit logging via MCP.

Category
Visit Server

README

Palaryn MCP Server

Agent I/O governance for every HTTP request your AI agent makes — exposed as an MCP server.

Palaryn MCP wraps the Palaryn gateway as a Model Context Protocol server, giving Claude Code, Cursor, Windsurf, and any MCP-compatible client policy-enforced access to external APIs with zero code changes.


What It Does

Every HTTP request your AI agent makes flows through the Palaryn pipeline:

Claude Code / Cursor / MCP Client
        |
        | stdio (JSON-RPC 2.0) or HTTP (/mcp)
        v
  Palaryn MCP Server
        |
        +---> Rate Limiting     (per-actor sliding window)
        +---> Anomaly Detection (statistical outlier flagging)
        +---> Policy Engine     (YAML rules: allow / deny / require approval)
        +---> DLP Scanner       (secrets, PII, 119 detection patterns)
        +---> Prompt Injection  (3-layer cascade: regex → DeBERTa → LLM)
        +---> Call Limits       (per-user / workspace daily & monthly caps)
        +---> HTTP Execution    (retries, backoff, SSRF protection)
        +---> Output DLP Scan   (response body scanning)
        +---> Audit Logging     (immutable append-only trace)
        |
        v
   External API

Three MCP tools exposed:

Tool Method Capability Description
http_request Any Inferred Execute any HTTP request (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS)
http_get GET read GET request shorthand
http_post POST write POST request shorthand

Each tool accepts: url (required), headers, body, timeout_ms, purpose, labels.


Quick Start

Option 1: Hosted (requires a Palaryn account)

claude mcp add --transport http palaryn https://app.palaryn.com/mcp

Done. All requests from Claude Code now route through Palaryn. You will be prompted to log in via OAuth on first use.

Option 2: Project-level config

Create .mcp.json in your project root (see .mcp.json.example):

{
  "mcpServers": {
    "palaryn": {
      "type": "stdio",
      "command": "npx",
      "args": ["palaryn-mcp"],
      "env": {
        "POLICY_PACK_PATH": "./policy-packs/default.yaml"
      }
    }
  }
}

Note: Ensure palaryn-mcp is installed (e.g., via npm install palaryn-mcp) so npx can resolve it.


Configuration

Environment Variables

Variable Default Description
PALARYN_MCP_WORKSPACE ws-claude-code Workspace ID for tool calls
PALARYN_MCP_ACTOR claude-code Actor ID for audit trails
PALARYN_MCP_PLATFORM claude_code Platform identifier
POLICY_PACK_PATH ./policy-packs/default.yaml Path to the active policy pack

Custom Policy Pack

Pass a custom policy via environment variable:

claude mcp add palaryn \
  -e POLICY_PACK_PATH=./policy-packs/prod_strict.yaml \
  -- node bin/palaryn-mcp.js

Policy Packs

Three pre-built policy packs are included:

default.yaml -- Sensible starter rules

  • Block SSRF (cloud metadata endpoints)
  • Allow all read operations (GET)
  • Require human approval for writes (POST/PUT/PATCH)
  • Deny delete and admin operations

dev_fast.yaml -- Permissive for development

  • Block SSRF
  • Allow reads and writes without approval
  • Require approval for delete/admin operations

prod_strict.yaml -- Minimal permissions for production

  • Block SSRF + internal IPs + localhost
  • Allow reads only to allowlisted domains (e.g., api.github.com, api.slack.com)
  • Require security review for all writes
  • Deny all delete and admin operations
  • Require admin approval for anything unmatched

Custom Policy Example

name: my-policy
version: "1.0.0"
description: "Custom policy for my project"

domain_blocklist:
  - "169.254.169.254"

rules:
  - name: "Allow GitHub API"
    effect: ALLOW
    priority: 10
    conditions:
      capabilities: ["read"]
      domains: ["api.github.com"]

  - name: "Require approval for writes"
    effect: REQUIRE_APPROVAL
    priority: 20
    conditions:
      capabilities: ["write"]
    approval:
      scope: "admin"
      ttl_seconds: 3600
      reason: "Write operations require approval"

  - name: "Deny everything else"
    effect: DENY
    priority: 100
    conditions: {}

How It Works

Architecture

Palaryn MCP server is a thin adapter layer that translates MCP tool calls into the Palaryn gateway pipeline:

MCP Client (Claude Code, Cursor, etc.)
     |
     | JSON-RPC 2.0 over stdio
     v
+-----------------------------+
|   Palaryn MCP Server        |
|                             |
|  tools/list -> 3 HTTP tools |
|  tools/call -> Gateway      |
+-----------------------------+
     |
     v
+-----------------------------+
|   Palaryn Gateway Pipeline  |
|                             |
|  1. Rate Limiting           |
|  2. Anomaly Detection       |
|  3. Policy Evaluation       |
|  4. DLP Scan (input)        |
|  5. Prompt Injection (3L)   |
|  6. Call Limit Check        |
|  7. HTTP Execution          |
|  8. DLP Scan (output)       |
|  9. Audit Logging           |
+-----------------------------+
     |
     v
   External API

MCP Protocol

The server implements the Model Context Protocol specification:

Method Description
initialize Protocol handshake -- returns server info and capabilities
tools/list Returns the 3 HTTP tool definitions with JSON schemas
tools/call Executes a tool through the gateway pipeline
ping Health check

Two Transport Modes

Mode Protocol Best For
Stdio JSON-RPC 2.0 over stdin/stdout Claude Code, Cursor, local IDE agents
HTTP Streamable HTTP at /mcp Hosted/remote deployment, shared servers

Response Format

Every tool call returns two content blocks:

  1. Primary content: The actual HTTP response body (or error message)
  2. Gateway metadata: Policy decision, DLP report, call limits, timing
{
  "content": [
    { "type": "text", "text": "{\"data\": \"response from API\"}" },
    { "type": "text", "text": "--- Gateway Metadata ---\n{...}" }
  ],
  "isError": false
}

Security Features

Prompt Injection Detection (3-Layer Cascade)

Three-layer defense against prompt injection attacks, evaluated in cascade (fast layers first, expensive layers only if needed):

  1. Regex + Heuristic (sync, <1ms, $0) — 119 patterns across 17 categories with text normalization (zero-width char stripping, homoglyph collapse, ROT13/base64 decoding, leetspeak, HTML/URL decoding). Multilingual: EN, PL, DE, ES, FR.
  2. Fine-tuned DeBERTa (sync, ~50ms, $0) — Local ML model for semantic classification. URL-aware scanning (extracts query param values, ignores URL structure). Zero API cost, works offline.
  3. LLM Classifier (async, ~800ms, ~$0.001/req) — Semantic classification via gpt-4o-mini. Detects 12 attack categories including instruction override, prompt extraction, roleplay hijack, social engineering, game manipulation, memory manipulation, data exfiltration, multilingual injection, compound attacks, and classifier self-manipulation.

Cascade logic: LLM only runs if Regex + DeBERTa find nothing — reducing API calls by ~35%.

DLP (Data Loss Prevention)

  • 119 detection patterns: secrets (14), PII (5), prompt injection (65), tool injection (28), exfiltration (6), sensitive files (9)
  • Scans request arguments AND response bodies
  • Detects API keys, tokens, passwords, SSNs, credit card numbers, AWS credentials in URLs, markdown image injection, large payload exfiltration
  • Automatically redacts sensitive data before it reaches external services
  • Configurable severity levels and multiple detection backends

Policy Engine

  • YAML-based policy rules with priority ordering
  • Four decisions: ALLOW, DENY, TRANSFORM, REQUIRE_APPROVAL
  • Conditions: capability level, HTTP method, target domain, tool name
  • Domain blocklists for SSRF protection
  • Optional OPA/Rego integration for advanced policy logic

SSRF Protection

  • Blocks requests to cloud metadata endpoints (169.254.169.254, etc.)
  • Blocks private/reserved IP ranges
  • Integer-encoded IP detection (e.g., 2852039166 → 169.254.169.254)
  • Domain allowlisting for production environments

Call Limits

  • Per-user daily and monthly call limits
  • Per-workspace daily and monthly call limits
  • Max steps per task
  • Prevents runaway loops from agent execution
  • Real-time limit tracking with remaining calls in responses

Rate Limiting

  • Sliding-window rate limiting per actor and per workspace
  • Prevents abuse and ensures fair resource allocation

Integration Patterns

Claude Code

# Hosted (requires Palaryn account)
claude mcp add --transport http palaryn https://app.palaryn.com/mcp

Cursor

Add to your Cursor MCP settings:

{
  "mcpServers": {
    "palaryn": {
      "type": "stdio",
      "command": "npx",
      "args": ["palaryn-mcp"]
    }
  }
}

Windsurf

Add to your Windsurf MCP configuration:

{
  "mcpServers": {
    "palaryn": {
      "serverUrl": "https://app.palaryn.com/mcp"
    }
  }
}

Remote MCP (HTTP)

For hosting Palaryn as a remote MCP server, the full gateway includes the /mcp HTTP endpoint with OAuth 2.0. Contact us at app.palaryn.com for access.


Tool Reference

http_request

Execute an arbitrary HTTP request through the Palaryn gateway.

Parameter Type Required Description
url string Yes Target URL
method string No HTTP method (default: GET)
headers object No HTTP headers as key-value pairs
body string No Request body (typically JSON)
timeout_ms number No Request timeout in milliseconds
purpose string No Why this request is being made
labels string[] No Classification labels

http_get

Shorthand for GET requests. Same parameters as http_request minus method and body.

http_post

Shorthand for POST requests. Same parameters as http_request minus method.


License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured