Surface MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Surface MCP Serverscan this file for malware: ~/Downloads/invoice.pdf"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Surface MCP Server
Model Context Protocol server for Surface. Gives any MCP-compatible AI assistant (Claude, etc.) the ability to scan files, manage accounts, and access SDK/API documentation.
Install
npx -y github:tendrl-inc-labs/surface-mcpnpm clones this repository and builds it from source on install, so there is nothing to publish and nothing stale to serve.
Install by repository, not by name: an unrelated third party owns the name
surface-mcp on npm, and installing that name runs their code.
In an MCP client config:
{
"mcpServers": {
"surface": {
"command": "npx",
"args": ["-y", "github:tendrl-inc-labs/surface-mcp"],
"env": {
"SURFACE_KEY": "${SURFACE_KEY}"
}
}
}
}Related MCP server: AgentAudit
Build from source
git clone https://github.com/tendrl-inc-labs/surface-mcp
cd surface-mcp
npm install
npm run buildConfiguration
Set your API key:
export SURFACE_KEY="sfk_your_token_here"Optional: Local Scanner
Point SURFACE_SCANNER_PATH at the Surface scanner binary to scan files locally. Files never leave your machine — the binary runs on your hardware and reports results to the server.
export SURFACE_SCANNER_PATH="/usr/local/bin/surface-scanner"When this is not set, scan_file uploads to the API instead.
Optional: Custom API URL
Set a custom base URL (defaults to https://app.tendrl.com/surface):
export SURFACE_BASE_URL="http://localhost:9080/api"Usage with Claude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"surface": {
"command": "node",
"args": ["/path/to/surface/mcp-server/dist/index.js"],
"env": {
"SURFACE_KEY": "sfk_your_token_here"
}
}
}
}With local scanner (files never leave your machine):
{
"mcpServers": {
"surface": {
"command": "node",
"args": ["/path/to/surface/mcp-server/dist/index.js"],
"env": {
"SURFACE_KEY": "sfk_your_token_here",
"SURFACE_SCANNER_PATH": "/usr/local/bin/surface-scanner"
}
}
}
}Usage with Claude Code
Add to your Claude Code settings:
# API mode (uploads to server)
claude mcp add surface node /path/to/surface/mcp-server/dist/index.js -e SURFACE_KEY=sfk_your_token_here
# Local scanner mode (files stay on your machine)
claude mcp add surface node /path/to/surface/mcp-server/dist/index.js -e SURFACE_KEY=sfk_your_token_here -e SURFACE_SCANNER_PATH=/usr/local/bin/surface-scannerTools
Tool | Description |
| Upload and scan a file for malware (accepts absolute file path) |
| Scan raw content for threats — detects prompt injection, SQL/XSS injection, credential leaks, malicious code, and suspicious tool calls. Accepts raw text (default) or base64 for binary. Max 10 MB. Takes an optional |
| Poll a deferred scan result by scan ID |
| Get account details |
| Get scan usage vs monthly limit |
| List scan profiles |
| Create a scan profile |
| Update a scan profile |
| Delete a scan profile |
| List API keys |
| Create an API key |
| Delete an API key |
| Get paginated scan history |
| Get full details of a historical scan |
| Get available billing plans |
Action screening context
When scan_payload (or scan_bundle) receives a tool call an agent is about to make, some actions are dangerous on their own (deleting a database, a secret in a URL, a crypto-address payout) and some only relative to you — data is only leaking if it leaves your domains or goes to a host you never declared. Pass an optional context object so the screener can decide confidently instead of defaulting to "Review":
{
"payload": "{\"tool\":\"http_request\",\"args\":{\"method\":\"POST\",\"url\":\"https://webhook.partner.io/sync\",\"body\":{}}}",
"context": {
"principal_domains": ["acme.io"],
"allowed_egress": ["api.stripe.com", "hooks.slack.com"],
"user_request": "sync this week's tickets to our partner"
}
}Data egress leaving
principal_domains(or to a free-mail address) is flagged; withallowed_egressset, a POST to a host on neither list is flagged for review while a Stripe or Slack call passes. A bare-IP destination or a secret in the body flags even without context.Dangerous on its face — crypto and gift-card payouts,
rm -rfof a data directory, admin grants — flag with no context.Build
contextfrom trusted host state, never from the payload being scanned. It is optional; omit it for face-value screening.
Resources
Resource | URI | Description |
API Reference |
| Complete REST API documentation |
SDK Quick Reference |
| Side-by-side SDK comparison |
Webhook Guide |
| Webhook setup and signature verification |
Python SDK Docs |
| Python SDK README |
JavaScript SDK Docs |
| JS/TS SDK README |
Go SDK Docs |
| Go SDK README |
SDK Source Files |
| SDK source code (client, models, errors, webhook) |
Agentic Security
The scan_payload tool is designed for AI agent workflows. When an agent scans a payload, Surface automatically detects:
Prompt injection — jailbreak attempts, role hijacking, instruction overrides
SQL injection — union attacks, tautology auth bypass, blind injection
XSS injection — script tags, event handlers, javascript: URIs
Credential exposure — API keys, tokens, private keys, connection strings
Malicious code — reverse shells, download cradles, eval/exec chains
Suspicious tool calls — dangerous execute/write/http operations
Known malicious URLs — checked against threat intelligence feeds
Results include promptInjection, codeExtraction, sensitiveData, and toolCallAnalysis fields with detailed findings.
Prompts
Prompt | Description |
| Analyze a scan result JSON and provide security assessment |
| Generate SDK code for a given language and use case |
This server cannot be deployed
Maintenance
Related MCP Connectors
Find, vet, and run MCP tools through a secure audited gateway with prompt-injection risk scoring
Paid remote MCP for LLM security scans, jailbreak checks, analytics, checkout, and readiness.
Security & DLP proxy for MCP: tool-poisoning scans, PII redaction on tool args/results. Beta.
Manage SRG+ hubs, channels, content, assets, users, and workspaces from any MCP-aware AI agent.
Related MCP Servers
FlicenseAqualityDmaintenanceEnables users to scan MCP servers for security threats, check installed servers, and analyze config files for risks, all from AI assistants like Claude, Cursor, or Windsurf.59 npm3-
AgentAuditofficial
AlicenseAqualityDmaintenanceEnables AI agents to scan MCP servers and AI packages for vulnerabilities, prompt injection, and supply chain attacks.7118 npmAGPL 3.0- FlicenseAqualityCmaintenanceEnables AI assistants to perform defensive security tasks such as vulnerability detection, CVE lookup, phishing/link safety checks, and security report generation via MCP tools.23-
- AlicenseNot gradedqualityCmaintenanceProvides a security scanner for AI agent skills and MCP servers, detecting threats like prompt injection, identity hijacking, and memory poisoning.15 npm2MIT