mcpField
L
linkguard

linkguard

Local
github.com/CloudCorpRecordsSecurity0Updated 1w ago

About linkguard

linkguard is a local stdio MCP server and CLI for forwarding URL safety checks to the hosted PreClick service. It supports immediate or asynchronous scans, including checks against a stated visit intent.

Key features

  1. 01Synchronous URL scans
  2. 02Asynchronous scans with task polling
  3. 03Intent-aware URL checks
  4. 04Hosted PreClick endpoint forwarding
  5. 05Optional API key and endpoint override

Use cases

  1. 01Checking a link before an agent opens it
  2. 02Assessing whether a page matches a visit purpose
  3. 03Submitting longer scans and retrieving results later

MCP support

The MCP server provides tools for synchronous and asynchronous URL scans, intent-aware checks, task status, and results. Calls are forwarded to the hosted PreClick remote MCP endpoint.

Configuration

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

mcp.json · Universal config
{
"mcpServers": {
"cloudcorprecords-linkguard": {
"command": "npx",
"args": [
"-y",
"@reneturcios/linkguard"
]
}
}
}
Run commandnpx -y @reneturcios/linkguard

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@reneturcios/linkguard0.1.0
ocighcr.io/cloudcorprecords/linkguard:0.1.0

Tools

6

Saved tool list · updated 1w ago

ParameterTypeRequiredDescription
urlstringYesURL to scan.

Details

From the project README

linkguard

linkguard is a local stdio front end for a hosted URL safety scanner. Before an agent follows a link, linkguard can ask the hosted service to examine the URL — synchronously for an immediate verdict, or asynchronously when a scan may take a while — and, when you say why you are visiting, whether the page actually matches that intent.

linkguard does not scan anything itself. Each tool call is forwarded as a JSON-RPC tools/call POST to the hosted PreClick remote MCP endpoint at https://preclick.ai/mcp, and the upstream answer is returned as-is in substance. Both plain JSON answers and text/event-stream (SSE) answers are understood. Scanning quality, availability, and rate limits are the hosted service's.

PRECLICK_API_KEY is optional. When it is set, it is sent as the X-API-Key header documented for the hosted endpoint; when it is absent, no such header is sent and the keyless trial tier applies. LINKGUARD_ENDPOINT overrides the endpoint URL when set.

Intent text is capped at 248 characters by the upstream service; linkguard enforces that limit locally before sending anything.

Install

npx @reneturcios/linkguard scan https://example.com
docker run -i ghcr.io/cloudcorprecords/linkguard

CLI

linkguard scan https://example.com
linkguard scan-intent https://example.com --intent "pay an invoice"
linkguard async-scan https://example.com
linkguard async-scan-intent https://example.com --intent "read the docs"
linkguard status <task_id>
linkguard result <task_id>
linkguard --version

The async commands return a task_id immediately. Poll it with status, then fetch the finished scan with result.

Exit codes: 0 success, 1 upstream or validation error, 2 usage error.

MCP server

npx -y @reneturcios/linkguard mcp
{
  "mcpServers": {
    "linkguard": {
      "command": "npx",
      "args": ["-y", "@reneturcios/linkguard", "mcp"],
      "env": { "PRECLICK_API_KEY": "your-key-if-you-have-one" }
    }
  }
}

The env block is optional.

Tools
ToolInputWhat it returns
url_scanner_scanurl (string, required)The upstream scan verdict for the URL, synchronously.
url_scanner_scan_with_intenturl (string, required), intent (string, optional, max 248 chars)The upstream verdict judged against the stated intent.
url_scanner_async_scanurl (string, required)A task_id for the submitted scan, immediately.
url_scanner_async_scan_with_intenturl (string, required), intent (string, optional, max 248 chars)A task_id for the submitted intent-aware scan.
url_scanner_async_task_statustask_id (string, required)The current status of the asynchronous task.
url_scanner_async_task_resulttask_id (string, required)The finished scan result, or the task status while it runs.

Upstream failures — HTTP errors, JSON-RPC errors, unreachable hosts — are reported as tool errors with the underlying message.

Development

npm install
npm run build
npm test
npm run dev

Tests run entirely on fake-fetch fixtures, including plain-JSON and SSE upstream bodies; no network is used and no live call to the hosted endpoint is made.

License

MIT — see LICENSE.

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.