mcpField
S
SkanQRCode

SkanQRCode

Local
skanqrcode.comSecurity0Updated 3w ago

About SkanQRCode

SkanQRCode is an MCP server for AI agents to check URLs and IP addresses before opening or fetching links from untrusted sources. It returns a verdict and action, and also provides a tool for checking monthly usage.

Key features

  1. 01Check URL or IP safety
  2. 02Return verdicts, reasons, and actions
  3. 03Check monthly quota usage
  4. 04Cache checks per user

Use cases

  1. 01Check links from email before opening
  2. 02Assess URLs found in chats or webpages
  3. 03Block agents from fetching malicious addresses
  4. 04Review remaining check quota

MCP support

The server runs locally over stdio and exposes the check_url and get_usage tools. URL checks use quota; usage lookups do not.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"com-skanqrcode": {
"command": "npx",
"args": [
"-y",
"@skanqrcode/mcp-server"
],
"env": {
"SKANQRCODE_API_KEY": "<SKANQRCODE_API_KEY>"
}
}
}
}
Run commandnpx -y @skanqrcode/mcp-server
Environment variables to set
SKANQRCODE_API_KEYSecretYour SkanQRCode API key (sk_test_... or sk_live_...) from app.skanqrcode.com.

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@skanqrcode/mcp-server1.0.0

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

@skanqrcode/mcp-server

The official SkanQRCode MCP server. It gives an AI agent a URL safety check to run before it fetches, opens or hands a user a link from an untrusted source: a QR code, an email, a chat message, a web page or another tool's output.

It runs locally over stdio, so it works with Claude Desktop, Claude Code, Cursor, Windsurf and any other MCP client that starts a local process.

Setup

  1. Create an API key at app.skanqrcode.com. The free plan gives you an sk_test_ key with 1,000 checks a month, no card required.
  2. Add the server to your MCP client.

Claude Desktop (claude_desktop_config.json), Cursor and most other clients:

{
  "mcpServers": {
    "skanqrcode": {
      "command": "npx",
      "args": ["-y", "@skanqrcode/mcp-server"],
      "env": { "SKANQRCODE_API_KEY": "sk_test_..." }
    }
  }
}

Claude Code:

claude mcp add skanqrcode --env SKANQRCODE_API_KEY=sk_test_... -- npx -y @skanqrcode/mcp-server

Requires Node.js 20 or later.

Tools

check_url

Classifies a URL or IP address. Input:

FieldRequiredDescription
targetyesThe full URL (with scheme) or IP address, up to 4,096 characters.
userIdnoOpaque id of the end user the check is for, for per-user caching. Never an email or a name.

Returns the API's verdict as structured content:

{
  "verdict": "malicious",
  "action": "block",
  "mode": "url",
  "reasons": ["ACTIVE_THREAT_FEED_MATCH", "KNOWN_MALWARE_MATCH"],
  "finalUrl": null,
  "cached": false,
  "executionTimeMs": 38,
  "environment": "production",
  "licensedForProduction": true,
  "requestId": "req_01j9z8qaenp0s2c4d6f8g0h1jk"
}

The agent should branch on action: block means do not fetch or open it, warn means ask the user first, allow means go ahead. Each call uses one unit of your monthly quota.

get_usage

Returns the monthly quota, requests used and requests left (optional month as YYYY-MM). It does not use quota.

Errors

A failed call returns isError: true with { "error": { "code": "...", "message": "...", "requestId": "...", "retryAfterSeconds": 12 } }. For rate_limited, wait retryAfterSeconds; for quota_exceeded, stop and tell the user.

Why there are no list tools

The server is read-only. Text an agent reads can try to steer it, and an agent that could add allow-list entries could be talked into approving a phishing domain. Manage allow and block lists in the dashboard.

Environment variables

VariableRequiredDefault
SKANQRCODE_API_KEYyes—
SKANQRCODE_BASE_URLnohttps://api.skanqrcode.com (must be https://)

Your key is sent only to the API, only over HTTPS, and is never logged.

Sandbox keys

With an sk_test_ key the result says environment: "sandbox" and licensedForProduction: false: the verdicts are real, but the free plan is licensed for testing only. Use an sk_live_ key from a paid plan in production.

Development

npm install
npm test          # unit tests and an MCP client/server round trip
npm run build
SKANQRCODE_API_KEY=sk_test_... npx @modelcontextprotocol/inspector node dist/index.js

API reference: docs.skanqrcode.com.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.