Cyber Lens AI MCP Server
Cyber Lens AI MCP サーバー
AI アシスタントとエージェント型コーディングワークフローのためのセキュリティスキャン。
AI アシスタントにウェブサイト、公開リポジトリ、Open CLAW スキルのセキュリティ脆弱性スキャン機能を提供する Model Context Protocol(MCP)サーバーです。エージェント型コーディング時代に特化して設計されており、スキルパッケージをインストールする前にスキャンするネイティブサポートを備えています。
機能概要
AI アシスタント(Claude Desktop、VS Code など)に接続すると、この MCP サーバーは会話中にアシスタントが使用できるセキュリティスキャンツールを追加します。
CLAW スキルのスキャン -- インストール前にスキルパッケージをダウンロードし、展開して、実際のソースコードを危険なパターン、ハードコードされたシークレット、権限の問題について分析します
ウェブサイトのスキャン -- アカウントなしでローカルのクイックモードで実行するか、接続時にはフルクラウドスキャンを使用します
公開リポジトリのスキャン -- 露出したシークレット、依存関係の脆弱性、不審なコードパターン、信頼性(トラストポスチャ)の問題を検出します
残りのクラウドスキャン枠の確認 -- 一括スキャンを開始する前に確認できます
修復ガイダンスの取得 -- ステップバイステップの修正手順とコード例を取得できます
会話例
You: "I want to install this skill: https://clawhub.ai/skills/ontology"
Claude: I'll scan it for security issues first.
[PASS] CLAW Skill Security Scan: ontology v1.0.4
Security Score: 95/100
Files Analyzed: 5
Skill appears safe to install. Minor issues noted below.
1. [MEDIUM] File write operation
File: scripts/ontology.py:399
Fix: Ensure file writes are limited to expected directories.
The skill looks safe. It writes to the filesystem for its knowledge
graph storage, which is expected behaviour for this type of skill.Related MCP server: securityscan
はじめに
1. インストール
最初の npm リリース後、推奨されるインストール方法は次のとおりです:
npx -y @shadoprizm/cyberlens-mcp-serverそれ以前、またはローカル開発や手動ビルドの場合は:
git clone https://github.com/shadoprizm/cyberlens-mcp-server.git
cd cyberlens-mcp-server
npm install
npm run build2. AI アシスタントに追加
Claude Desktop -- ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows)に追加:
{
"mcpServers": {
"cyberlens": {
"command": "npx",
"args": ["-y", "@shadoprizm/cyberlens-mcp-server"]
}
}
}npm ではなくソースチェックアウトから実行する場合:
{
"mcpServers": {
"cyberlens": {
"command": "node",
"args": ["/absolute/path/to/cyberlens-mcp-server/dist/index.js"]
}
}
}Claude Code -- MCP 設定またはプロジェクト設定に追加します。
VS Code(Copilot/Continue) -- 拡張機能の MCP サーバー設定に従って構成します。
3. アカウントを接続
ウェブサイトツールは、アカウントなしでもローカルのクイックモードですぐに使用できます。このローカルモードは約 15 のコアチェックをカバーし、結果をすぐに返します。
アカウントを接続すると、ウェブサイトスキャンが 70 以上のチェック、スキャン履歴、AI 分析を備えた CyberLens クラウドのフルパスにアップグレードされます。リポジトリおよびアカウント専用ツールは、必要に応じてブラウザフロー経由で接続します。
リポジトリまたはアカウント専用ツールがアカウントを必要とする場合、MCP サーバーは:
CyberLens ブラウザフローを自動的に開きます
ユーザーを
cyberlensai.comに送り、サインアップまたはログインさせますセキュアなコールバックをローカルで受け取ります
API キーを
~/.cyberlens/mcp/config.jsonに保存します元のツール呼び出しを自動的に続行します
同じフローを明示的にトリガーすることもできます:
You: "Connect my CyberLens account"これによりブラウザが cyberlensai.com で開き、サインアップ(無料)またはログインできます。API キーは ~/.cyberlens/mcp/config.json にローカル保存され、今後のすべてのスキャンで使用されます。
無料アカウントには月 5 回のスキャンが含まれます。クレジットカードは不要です。
ブラウザフローの代わりに、MCP 設定で
CYBERLENS_API_KEY環境変数を設定することもできます。
クラウドのウェブサイトスキャンが月間クォータに達した場合、MCP サーバーは CyberLens の価格ページを自動的に開き、ハードフェイルする代わりにローカルのクイックスキャンにフォールバックします。リポジトリのスキャンには引き続きクラウドクォータが必要です。
利用可能なツール
アカウント
ツール | 説明 | API キーが必要 |
| ブラウザを開いてサインアップ/ログインし、API キーをローカルに保存します | いいえ |
| 現在のプランと残りのウェブサイト/リポジトリのスキャン枠を表示します。必要に応じて初回使用時に自動接続します | はい |
CLAW スキルスキャン
ツール | 説明 | API キーが必要 |
| CLAW Hub または直接のスキルパッケージをダウンロードしてセキュリティ問題を分析します | いいえ |
| スキルマニフェストをセキュリティのベストプラクティスに対して検証します | いいえ |
ウェブサイト&リポジトリスキャン
ツール | 説明 | API キーが必要 |
| アカウントなしのローカルクイックウェブサイトスキャン。接続時はフルクラウドスキャン。ウェブサイトのクラウドクォータが尽きた場合はローカルにフォールバック | ローカルは不要、フルクラウドは必要 |
| GitHub、GitLab、Bitbucket、および対応 ZIP ターゲットの公開リポジトリセキュリティスキャン。必要に応じて初回使用時に自動接続 | はい |
| 完了したクラウドスキャンの詳細な結果を取得。必要に応じて初回使用時に自動接続 | はい |
| アカウントなしのローカルクイックウェブサイトスコア。接続時はフルクラウドスコア | ローカルは不要、フルクラウドは必要 |
インテリジェンス&ガイダンス
ツール | 説明 | API キーが必要 |
| 一般的な CWE と脆弱性クラス向けの組み込みローカル修復プレイブック | いいえ |
| MCP サーバーのローカルチェックとライブクラウドエンドポイントの正直なレポート | いいえ |
スキルスキャンの仕組み
CLAW スキルの URL を指定すると、MCP サーバーは:
URL を解決 -- Claw Hub ページ(
https://clawhub.ai/skills/skill-name)、直接ダウンロードリンク(https://*.convex.site/api/v1/download?slug=name)、またはスキル zip を指す任意の URL を受け付けますスキルパッケージを一時ディレクトリにダウンロード
パッケージ内のすべてのファイルを展開して分析:
_meta.jsonとSKILL.mdの完全性をチェックすべてのソースコード(Python、JavaScript、TypeScript、シェルスクリプト、設定ファイル)を危険なパターンについてスキャン
ハードコードされたシークレット、
eval()の使用、シェルコマンド実行、安全でない HTTP リクエスト、ファイル削除操作、pickle の逆シリアル化などを検出ピン留めされていない依存関係を特定
スキルが通信するすべての外部 URL をカタログ化
セキュリティスコア(0〜100)を詳細な結果、ファイルの場所、修正推奨事項とともに返す
すべての一時ファイルをクリーンアップ
このプロセス全体はローカルで実行されます -- API キーは不要で、コードが外部サーバーに送信されることはありません。
ウェブサイトスキャンモード
scan_website と get_security_score には現在、2 つの正直なモードがあります:
ローカルクイックスキャン -- アカウントなしで動作し、即座に結果を返し、HTTPS、セキュリティヘッダー、サーバー情報開示、安全でないフォーム、インラインスクリプトの兆候など、約 15 のコアウェブサイトチェックをカバーします
フルクラウドスキャン -- 接続された CyberLens アカウントが必要で、70 以上のチェックを実行し、クラウドスキャン履歴を保持し、よりリッチな分析を含みます
ユーザーがアカウントなしで full または database のウェブサイトスキャンを要求した場合、MCP サーバーは引き続きローカルクイックスキャンを返し、要求されたクラウド専用モードが利用できなかったことを伝えます。
接続済みユーザーがウェブサイトのクラウドクォータを使い切った場合、CyberLens は自動的にローカルクイックスキャンにフォールバックし、アップグレードリンク付きの価格ページを開きます。
受け入れ可能な URL 形式
https://clawhub.ai/skills/ontology --> Resolves automatically
https://clawhub.ai/author/skill-name --> Resolves automatically
https://*.convex.site/api/v1/download?slug=x --> Direct downloadアーキテクチャ
src/
index.ts MCP server, tool handlers, output formatting
auth.ts Browser-based connect flow, config file management
client.ts REST API client for live scan and quota endpoints
remediation-guides.ts Local CWE and vulnerability remediation guidance
schemas.ts Zod input validation schemas
skill-scanner.ts Local CLAW skill analyser (download, extract, scan)
skill-validation.ts Local CLAW manifest validation
transparency.ts Local transparency report for scan coverage主要な設計上の決定:
Supabase SDK なし --
fetchとX-API-Keyヘッダーによる純粋な REST 呼び出し正直なクラウドサーフェス -- MCP サーバーは、ライブの公開 API(
/scan、/scan/{id}、/quota)でサポートされているクラウドバックアップツールのみを公開Stdio トランスポート -- AI アシスタントのサブプロセスとして実行され、stdin/stdout を介して通信
API キーなしでも有用 -- スキルスキャン、ウェブサイトクイックスキャン、マニフェスト検証、修復ガイダンス、透明性レポートはローカルで動作。アカウントを接続するとウェブサイトスキャンがフルクラウドパスにアップグレードされ、リポジトリのスキャンが可能になります
ブラウザベースの認証 -- CyberLens OpenClaw スキルと同じセキュアな接続フロー(CSRF 保護、短命の交換コード、HTTPS のみ)
開発
# Build
npm run build
# Watch mode
npm run dev
# Run directly (for testing)
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}' | node dist/index.js環境変数
変数 | 必須 | デフォルト | 説明 |
| いいえ | -- | API キー(ブラウザ接続フローの代替) |
| いいえ |
| API エンドポイントの上書き |
公開
このリポジトリは npm + MCP Registry への公開用に準備されています:
npm パッケージ:
@shadoprizm/cyberlens-mcp-serverMCP サーバー名:
io.github.shadoprizm/cyberlens-mcp-server
一般的なリリースフロー:
# 1. Bump the version
npm version patch
# 2. Publish the package to npm
npm publish
# 3. Authenticate with the MCP Registry
mcp-publisher login github
# 4. Publish server.json to the MCP Registry
mcp-publisher publishレジストリメタデータはルートの server.json ファイルにあり、npm の所有権チェックは package.json の mcpName フィールドを使用します。
関連プロジェクト
CyberLens OpenClaw スキル -- 同じスキャン機能を備えた OpenClaw スキル版
CyberLens -- ブラウザベースのスキャン、ダッシュボード、レポートを備えたフルプラットフォーム
OpenClaw -- AI エージェント向けのオープンスキルエコシステム
ライセンス
Available Tools
10 toolsconnect_accountA
Connect your CyberLens account to this MCP server.
Opens your browser to cyberlensai.com where you can sign up for free or log in. After authorizing, your API key is securely saved locally.
Free accounts get 5 scans/month. No credit card required.
If you already have an API key, you can also set the CYBERLENS_API_KEY environment variable instead. Cloud tools can also launch this flow automatically the first time repository or account-only tools need an account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does well: it discloses that the tool opens a browser, saves the API key locally after authorization, and mentions the free tier limit of 5 scans/month. These are meaningful behavioral side effects beyond a generic 'connect account' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and then adds relevant details about the flow, limitations, and alternatives. It is slightly longer than minimal, but every sentence adds useful context such as free-tier limits and env-var setup, so no sentence feels wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete enough for invocation: it names the trigger, the browser flow, the local key storage, and alternatives. It doesn't describe the return value or behavior if the user is already authenticated, but for a zero-parameter auth tool this is a minor gap and not likely to cause misinvocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and full schema coverage, so there is no parameter meaning for the description to add. The description instead provides useful surrounding context about what happens during the flow, which is appropriate for a parameterless auth tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific action: connecting a CyberLens account to the MCP server. It explains the browser-based sign-up/login flow and what happens after authorization, making the tool distinct from the scanning and quota siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit context for when this tool is relevant and provides an alternative: users with an existing API key can set CYBERLENS_API_KEY instead. It also notes that cloud tools may launch this flow automatically, clarifying how the tool fits into automated workflows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_quotaA
Get your CyberLens account quota and remaining cloud scans.
Returns:
Current plan name
Total scans used, limit, and remaining
Website scan usage
Repository or skill scan usage
Use this to confirm your account is connected and check how many cloud scans remain. If no account is connected yet, the MCP server will launch the CyberLens browser flow automatically before checking quota.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently reveals a notable side effect: 'If no account is connected yet, the MCP server will launch the CyberLens browser flow automatically before checking quota.' It also lists the return values. It doesn't mention failure modes or whether the browser flow is interactive, but the key behavioral trait is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-sentence purpose, a clean bulleted return list, then a usage note and a behavior note. Every sentence contributes value, and the most critical information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, the description is complete. It states the purpose, the return data, the usage context, and the only side effect (browser flow on unauthenticated calls). An agent has everything necessary to decide to call it and understand what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the input schema carries no burden. The baseline for a zero-parameter tool is 4, and the description goes beyond the schema by explaining what the returned quota data includes, which helps an agent interpret the result even though the output schema is absent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get your CyberLens account quota and remaining cloud scans.' It then enumerates exactly what is returned (plan name, scan usage, limits, remaining). This clearly distinguishes it from sibling scan tools like scan_website or get_scan_results, which perform different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Use this to confirm your account is connected and check how many cloud scans remain.' It also explains the automatic browser flow if no account is connected. However, it does not directly compare alternatives or say when NOT to use it, leaving some room for the agent to infer routing relative to siblings like connect_account.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_remediation_guideA
Get detailed remediation guidance for a specific vulnerability or CWE.
Returns:
Explanation of the vulnerability
Step-by-step fix instructions
Code examples (before/after)
Testing procedures
Prevention strategies
Uses a built-in local guide library, so it still works even when no cloud guidance endpoint is available.
| Name | Required | Description | Default |
|---|---|---|---|
| cwe_id | Yes | CWE ID (e.g., 'CWE-79', 'CWE-89') or vulnerability name | |
| context | No | Additional context about your stack (e.g., 'react', 'express', 'django', 'claw-skill') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It provides a useful behavior beyond the core function: it uses a built-in local guide library and still works when no cloud guidance endpoint is available. It also enumerates the return content, which adds transparency for an operation that has no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: a one-line purpose, a bulleted return summary, and one sentence on offline behavior. Every sentence adds value and there is no redundant filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a read-only lookup tool without an output schema: it explains what the tool returns and highlights a key availability behavior. It does not cover error cases or explicitly map to a scan workflow, but the core callable context is well covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. Both cwe_id and context already have clear schema descriptions, including examples. The tool description does not add extra parameter-level detail, but none is needed because the schema is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get detailed remediation guidance for a specific vulnerability or CWE.' This clearly distinguishes the tool from the scan-oriented siblings like scan_website or get_scan_results, since none of them promise remediation instruction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use after identifying a vulnerability or CWE, and the sibling list shows this is the only remediation-guidance tool. However, it does not explicitly state when to prefer this over alternatives, mention prerequisites, or explain that it is meant to follow a scan.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scan_resultsA
Retrieve detailed findings from a completed security scan.
Returns:
Overall security score (0-100)
List of vulnerabilities with severity levels
CWE classifications
Specific recommendations for each finding
CVE references where applicable
Remediation guidance links
Use this after initiating a full cloud scan with scan_website or scan_repository. Local quick website scans return findings immediately and do not produce a scan ID. If no account is connected yet, the MCP server will connect first and then retrieve the cloud scan result.
| Name | Required | Description | Default |
|---|---|---|---|
| scan_id | Yes | The scan ID returned from scan initiation | |
| severity_filter | No | Filter results by severity level | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the behavioral disclosure burden. It does well by revealing that the server will auto-connect an account first, that local scans are not eligible, and that this is for completed cloud scans. It could add more about failure modes or scan completion status, but the provided behavior is clearly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the return-value bullets are structured for easy scanning. The description is longer than strictly necessary, but each section earns its place, especially given the lack of an output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description fully compensates by enumerating return contents, clarifying eligibility, and explaining the account-connect behavior. An agent has enough context to decide when to call it and what to expect from the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description restates that scan_id comes from scan initiation and that severity_filter filters by severity, but it does not add deeper parameter meaning beyond the schema. The schema already documents defaults and allowed values, so the description adds limited extra semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource: 'Retrieve detailed findings from a completed security scan.' The return-value list makes clear this is the full-findings tool rather than get_security_score (score only) or get_remediation_guide (guidance only), so it differentiates well from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool: 'after initiating a full cloud scan with scan_website or scan_repository.' It also gives an exclusion — local quick scans do not produce a scan ID — and explains what happens when no account is connected. This is direct, actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scan_transparencyA
Get an honest transparency report for this MCP server.
Returns:
Current MCP server version
Local check inventory and category counts
Which live cloud API endpoints this server actually uses
Recent changes to the MCP scan surface
Use this to understand exactly what this server checks locally and which cloud features are live.
| Name | Required | Description | Default |
|---|---|---|---|
| include_changelog | No | Include recent changes to the scanner |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and mostly succeeds: it frames the operation as a read ('Get... Returns') and enumerates exactly what data comes back. The main opacity is whether 'live cloud API endpoints' means the tool probes network connectivity or simply reads configured state, and no cost/latency implications are mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A lead sentence, four dense bullets, and one usage line — every element earns its place with concrete data points. The core action is front-loaded and the itemized return list is highly scannable for an agent deciding whether to invoke it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-parameter read-only tool with no output schema, the description covers the return contract (four report sections) and the invocation context well. Minor gaps remain: it doesn't state whether any cloud calls are made at invocation time, how fresh the report is, or what happens when include_changelog is false, but these are not critical for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the boolean include_changelog parameter is already documented in the schema. The description's 'Recent changes to the MCP scan surface' bullet loosely aligns with that parameter but adds no new syntax, default-behavior, or edge-case information beyond what the schema provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('honest transparency report for this MCP server'), then itemizes the four report components. It is easily distinguishable from sibling getters like get_scan_results and get_security_score because it targets the server's own behavior (version, local check inventory, live cloud endpoints, changelog) rather than scan outcomes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing line gives explicit context: 'Use this to understand exactly what this server checks locally and which cloud features are live.' However, it never names alternatives or states when NOT to use it, so an agent must infer the boundary against siblings like get_account_quota or get_security_score on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_security_scoreA
Get a quick security rating for a website.
Returns:
Overall security score (0-100)
Grade (A-F)
Key metrics summary
Quick wins for improvement
Without an account, this uses the local quick website scanner. With an account, this uses the full CyberLens cloud path. If cloud website quota is exhausted, CyberLens falls back to the local quick score automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The website URL to check |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It explains the dual execution paths (local quick scanner vs. full cloud path), automatic fallback on quota exhaustion, and what the response includes. This is solid transparency, though it does not mention side-effect status or authentication mechanics in detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose, immediately followed by a useful bulleted return summary and then the behavioral notes. It is efficient and well-structured, with no obvious filler, though slightly more verbose than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description appropriately lists the key return fields. It also covers the account/quota-dependent execution paths, which is important behavioral context. Minor gaps remain, such as not mentioning URL requirements or how to enable the cloud path via connect_account, but the tool is still adequately described for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers the single 'url' parameter at 100%, so the baseline is 3. The description adds context that the URL is for a website and that the result is a rating, but it does not add format, validation, or constraint details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get a quick security rating for a website' and lists concrete outputs such as score, grade, metrics, and quick wins. It does not explicitly contrast itself with sibling tools like scan_website or get_scan_results, so it lacks explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives useful context about account-based behavior and quota fallback: without an account it uses the local scanner, with an account it uses the cloud path, and it falls back when quota is exhausted. However, it does not explicitly state when to choose this tool over scan_website, get_scan_results, or other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_claw_skillA
Scan an Open CLAW skill or plugin from CLAUDE Hub before installation.
Runs locally in the MCP server and understands CLAW skill packaging, manifest permissions, and AI agent security models.
Performs comprehensive security analysis on:
CLAUDE Hub skill/plugin download links
Skill manifest files
Embedded code and dependencies
Checks for:
Hardcoded secrets and API keys in skill code
Vulnerable npm/pip dependencies
Insecure file operations
Suspicious network requests
Unsafe eval() or code injection patterns
Privilege escalation risks
Data exfiltration patterns
Permission scope appropriateness
Use this BEFORE installing any CLAW skill to ensure it's safe for your environment.
Examples:
CLAUDE Hub URL: https://clawhub.ai/username/skill-name
Plugin download: https://*.convex.site/api/v1/download?slug=skill-name
| Name | Required | Description | Default |
|---|---|---|---|
| skill_url | Yes | CLAUDE Hub skill URL or direct skill download link |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does well by stating the tool runs locally, understands skill packaging, and performs a defined set of security checks. The explicit list of threat patterns gives substantial behavioral detail. It does not describe the return behavior or whether the scan is asynchronous, but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average but well-structured: purpose, scope, checks, usage instruction, and examples are clearly separated. The bulleted check list is informative rather than filler. A minor reduction could improve conciseness, but the structure earns its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully explains the input and what the scan looks for, but it omits what happens after the scan: there is no mention of a scan ID, async behavior, or that results are retrieved via sibling tools like get_scan_results, get_security_score, or get_remediation_guide. With no output schema and no annotations, this missing workflow linkage is a significant gap for an agent deciding how to use the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter fully, so the baseline is 3. The description adds value by providing concrete example URL patterns and clarifying that both hub links and direct download links are valid. This gives the agent useful format guidance beyond the plain schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scans an Open CLAW skill or plugin from CLAUDE Hub before installation, with a specific verb and resource. It enumerates concrete security checks, making its function obvious. However, it does not explicitly distinguish itself from the sibling validate_claw_skill, which could overlap in intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear timing guidance: 'Use this BEFORE installing any CLAW skill.' It also provides example URL formats for the input. It does not mention when NOT to use it or compare against alternatives like validate_claw_skill, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_repositoryA
Scan a public repository for secrets, dependency risks, and suspicious code patterns.
Uses the live CyberLens cloud repository scanner for:
Public GitHub, GitLab, and Bitbucket repositories
Supported CLAUDE Hub or direct ZIP download URLs
Checks for:
Exposed secrets and credentials
Vulnerable dependencies
Suspicious or risky code behavior
Trust posture and repository hygiene signals
Artifact and package reputation issues
Returns a scan ID that can be used with get_scan_results to retrieve findings. If no account is connected yet, the MCP server will open the CyberLens browser flow automatically and then continue the scan.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Surface is faster. Deep runs a broader repository analysis. | surface |
| branch | No | Optional branch name to scan. Defaults to the repository's default branch. | |
| repository_url | Yes | The repository URL to scan (for example https://github.com/owner/repo) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and covers important behavior: it uses a live cloud scanner, supports only public repositories, returns a scan ID, and will trigger an account connection flow if needed. It does not mention quota usage or rate limits, but that is not essential for a first call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a lead sentence, bulleted source and finding lists, and a concise closing statement about behavior. It uses space efficiently and front-loads the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers the essential invocation context: acceptable inputs, what the scan checks, what is returned, and what happens when no account is connected. It is complete enough for an agent to call the tool and know the next step.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already explains all three parameters sufficiently. The description adds no parameter-specific details, but the baseline of 3 is appropriate because the schema handles parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it scans a public repository and lists the specific risk categories it checks for. It also distinguishes the target resource from siblings like scan_website and scan_claw_skill by naming repository sources explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The supported source types and the note about account connection imply when to use this tool, but there is no explicit when-not-to-use guidance or comparison with sibling tools. The mention of get_scan_results as the follow-up step provides useful workflow context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_websiteA
Scan a website for security vulnerabilities with a local quick mode and a full cloud mode.
Without a connected account, the MCP server runs a local quick scan immediately. That local mode covers roughly 15 core checks such as HTTPS, security headers, basic form issues, inline scripts, and server disclosure.
With a connected account, CyberLens starts the full cloud scan with 70+ checks. That path returns a scan ID you can use with get_scan_results.
If cloud website quota is exhausted, CyberLens falls back to the local quick scan automatically and opens the upgrade page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The website URL to scan (e.g., https://example.com) | |
| scan_type | No | Cloud scan profile. Local mode always uses a quick scan and warns if full or database was requested. | full |
| database_connection | No | Optional database connection for database security scanning |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral burden. It discloses the quota fallback action, the difference between local and cloud checks, and that the cloud path returns a scan ID. It does not state the local scan return format, but the main side effects and mode behaviors are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured into three short paragraphs, front-loads the purpose, and every sentence adds necessary conditional or output information. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has conditional behavior, no output schema, and a nested parameter, but the description covers the main paths: local vs cloud, quota fallback, and scan ID routing. The local quick scan's return format and the full database flow are left implicit, a minor gap given the schema already documents the parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents url, scan_type, and database_connection. The description adds mode-level context but does not materially extend parameter meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first line states a specific action and resource: scan a website for security vulnerabilities. It clearly distinguishes website scanning from sibling tools like scan_repository and scan_claw_skill, and further explains the two execution modes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete usage context: without an account use local quick scan; with an account use full cloud scan; on quota exhaustion it falls back. It does not explicitly name alternatives, but the conditional guidance is sufficient for an agent to decide when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_claw_skillA
Validate a CLAW skill manifest and configuration for security best practices.
Checks:
Skill manifest.json structure and required fields
Permission scopes (are they minimal?)
External API dependencies
File system access patterns
Environment variable usage
Plugin isolation safety
Use this before publishing a skill to CLAUDE Hub or for CI/CD validation.
| Name | Required | Description | Default |
|---|---|---|---|
| skill_code | No | Optional: main skill code for deeper analysis | |
| manifest_json | Yes | The skill's manifest.json content as a string |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses what the validation covers (manifest structure, permission scopes, external dependencies, filesystem access, env vars, plugin isolation), but it does not state whether the operation is read-only, what it returns, or whether it contacts external services.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by a scannable bullet list of checks and a single usage sentence. Every line earns its place with no repetition or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It gives enough to understand input and purpose, but with no output schema it should describe what the caller receives (e.g., pass/fail, findings list, score). The optional skill_code parameter and deeper analysis behavior are only in the schema, not integrated into the narrative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema documents both parameters. The description adds context about what is being validated but no additional parameter-level meaning beyond the schema's existing descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action (Validate) and a precise resource (CLAW skill manifest and configuration), with a list of concrete security checks. It does not explicitly contrast itself with the sibling scan_claw_skill, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states explicit use cases: before publishing to CLAUDE Hub and for CI/CD validation. It provides no when-not-to-use or direct alternative routing, but the intended contexts are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v1.0.0- First observed
connect_account - First observed
get_account_quota - First observed
get_remediation_guide - First observed
get_scan_results - First observed
get_scan_transparency - First observed
get_security_score - First observed
scan_claw_skill - First observed
scan_repository - First observed
scan_website - First observed
validate_claw_skill
TDQS
Scored across 10 tools
Most tools have distinct purposes, but scan_claw_skill and validate_claw_skill both target CLAW skill security and enumerate overlapping checks, making them easy to confuse. scan_website and get_security_score also overlap somewhat since both perform website scanning and return a security rating, though the descriptions do clarify the difference between full findings and a quick score.
All tool names follow a consistent snake_case verb_noun pattern: scan_<target> for scanning tools, get_<thing> for retrieval tools, plus connect_account and validate_claw_skill. There are no mixed naming conventions or vague verbs.
Ten tools is well-scoped for a security scanning server covering website, repository, and skill scanning along with account management, quota, results, remediation, and transparency. Each tool has a recognizable role and the set does not feel bloated.
The core scanning lifecycle is covered: account connection, quota checks, initiating scans for websites/repos/skills, retrieving results, getting remediation guidance, and inspecting server transparency. Minor gaps exist, such as no scan history or explicit scan-status polling, but the main workflows are complete enough for agents.
Maintenance
Related MCP Connectors
Scan GitHub-hosted AI skills for vulnerabilities: prompt injection, malware, OWASP LLM Top 10.
Scan websites and code for security, performance and SEO issues from your AI assistant.
Security scanner for AI-written code: SAST, secrets, dependencies, IaC, containers and DAST.
Authorized security scans, evidence, fix prompts and retests for AI-built web apps.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to scan project dependencies and Infrastructure as Code files for security vulnerabilities and misconfigurations. It also provides automated fixing capabilities to remediate identified security issues.183MIT
- FlicenseNot gradedqualityDmaintenanceScans OpenClaw/ClawHub skills for security vulnerabilities before installation. Detects prompt injection, data exfiltration, credential theft and RCE risks. Autonomous AI-to-AI flow with zero human intervention required.-
- AlicenseAqualityBmaintenanceVet ClawHub skills before installing them; detects prompt-injection, exfiltration, and other security issues, outputting a risk score with per-finding evidence.735 PyPIMIT

AgentAuditofficial
AlicenseAqualityDmaintenanceEnables AI agents to scan MCP servers and AI packages for vulnerabilities, prompt injection, and supply chain attacks.727 npmAGPL 3.0