Frame Mcp

io.github.lambdasec由 GitHub 账号 lambdasec 发布v0.2.0更新于 Nov 7, 2026

MCP server for the Frame security scanner: scan, verify, fix, exploit, packs and separation logic.

已验证STDIO仅桌面开发者工具安全与监控

概览

AI 生成的概览

封装 Frame 安全扫描器,让助手扫描代码漏洞、复核并修复问题,并对获授权的目标执行漏洞利用验证。

可以做什么
  • 扫描文件或目录中的数据流漏洞,以 JSON 返回结果,可选启用 LLM 检测与分诊层
  • 把扫描结果记录为基线文件,并重新扫描既有发现以报告其已修复、已删除、仍存在或被抑制
  • 为发现生成经复核的修复补丁,默认返回统一 diff,也可直接写入源文件
  • 驱动 LLM 代理对在线目标尝试漏洞利用
  • 列出并校验框架包,这些包告诉 Frame 某框架的源、汇与净化函数
  • 检查分离逻辑蕴含式是否成立,并可返回反模型
适用场景
适合让编码助手审计代码库中的注入、路径穿越类漏洞,跟踪已报告问题是否真正修复,或提出经复核的补丁。也适合需要对自己拥有或获授权的测试目标做代理辅助漏洞利用验证的团队。
运行要求
以 stdio 在本地运行,通常通过 uvx 启动 PyPI 包 frame-mcp,并需要本机可用的 frame 命令行程序。AI 扫描层、fix 与 exploit 工具需要 OpenAI 兼容端点,通过 FRAME_LLM_BASE_URL、FRAME_LLM_MODEL 以及必要时 FRAME_LLM_API_KEY 配置。普通扫描不需要这些。
安装前请注意
exploit 工具会向目标发送真实流量,仅可用于自己拥有或明确获授权测试的系统,未授权测试可能违法。write_baseline 会创建或覆盖基线文件,fix 在 in_place 时会写入源文件。依赖 LLM 的功能会把代码与发现发送到所配置的端点,该端点可能是第三方 API。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Frame Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

frame-mcp

mcp-name: io.github.lambdasec/frame-mcp

An MCP server that exposes the Frame security scanner to any MCP client, so a coding agent can scan code, verify fixes, and reason about vulnerabilities over stdio.

Frame combines taint analysis with separation logic verification to find data-flow vulnerabilities (SQL injection, command injection, path traversal, and more), and checks each reported path with a solver. This package wraps the frame command line program as MCP tools. It launches frame as a subprocess with an explicit argument list, never a shell, and prefers the frame executable installed next to the running Python interpreter.

Install

Run directly with uvx (no separate install step):

bash
uvx frame-mcp

Claude Code

bash
claude mcp add frame -- uvx frame-mcp

Codex

Add this stanza to ~/.codex/config.toml:

toml
[mcp_servers.frame]command = "uvx"args = ["frame-mcp"]

Cursor

Create .cursor/mcp.json:

json
{  "mcpServers": {    "frame": {      "command": "uvx",      "args": ["frame-mcp"]    }  }}

VS Code

Create .vscode/mcp.json:

json
{  "servers": {    "frame": {      "type": "stdio",      "command": "uvx",      "args": ["frame-mcp"]    }  }}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json under the mcpServers key:

json
{  "mcpServers": {    "frame": {      "command": "uvx",      "args": ["frame-mcp"]    }  }}

Gemini CLI

Add to ~/.gemini/settings.json under the mcpServers key:

json
{  "mcpServers": {    "frame": {      "command": "uvx",      "args": ["frame-mcp"]    }  }}

Zed

Add to Zed settings.json under context_servers:

json
{  "context_servers": {    "frame": {      "command": {        "path": "uvx",        "args": ["frame-mcp"]      }    }  }}

Tools

ToolPurposeRead only
scanScan a file or directory for vulnerabilities and return findings as JSON; ai adds LLM detection and triage, hunt_authz the agentic authorization hunt.yes
write_baselineScan a path and record the findings as a baseline file.no
verifyRe-scan the files behind earlier findings and report whether each is fixed.yes
fixGenerate and verify fixes for findings. Returns a diff by default.no
exploitDrive an agent to exploit a live, authorized target.no
packs_listList the framework packs a scan would load.yes
packs_checkValidate framework pack files.yes
solveCheck a separation logic entailment P |- Q.yes

A security-review prompt chains scan (with the AI layer), verify, and an offer to fix.

AI features and environment variables

The scan tool with ai=true, along with fix and exploit, call an LLM through an OpenAI-compatible endpoint. Configure it with these environment variables in the MCP client that launches the server:

VariablePurpose
FRAME_LLM_BASE_URLBase URL of the LLM endpoint, for example a local server or a hosted API.
FRAME_LLM_API_KEYAPI key for the endpoint, when it requires one.
FRAME_LLM_MODELModel name to request.

These are inherited from the server process environment and forwarded to each frame subprocess. Every other setting (streaming, timeouts, agent budgets, the hunt's budgets) is a key of the [llm] / [hunt] tables in the project's .frame.toml, which each frame command reads. The plain scan (taint analysis plus verification) needs none of them.

Exploit authorization

The exploit tool drives an autonomous agent that sends live traffic to a target. Run it only against systems you own or are explicitly authorized to test. Unauthorized testing of systems you do not control may be illegal.

License

Apache-2.0. See LICENSE.

来源:README.md,提交 7cb15e2

工具

8

scan

Scan source for vulnerabilities

Scan a file or directory for security vulnerabilities with Frame. Runs taint analysis plus separation logic verification and returns the findings as JSON. Set ``ai=True`` to add the LLM detection and triage layer (needs the FRAME_LLM_* environment variables). ``changed_ref`` scans only files that differ from a git ref; ``files`` restricts the scan to a list of files; ``baseline`` reports only findings absent from a baseline file; ``packs`` loads extra framework packs. ``hunt_authz=True`` adds the agentic authorization hunt (IDOR, missing authorization, privilege escalation; needs a model): every handler gets a verdict, and the result's ``hunt`` section lists how it ended and what it left unresolved. A hunt runs one agent per group of handlers and can take hours on a large application; it is bounded by its step budgets, not by a timeout. This tool does not modify any files.

输入参数aipath必填rootfilespacksfail_onbaselinelanguagehunt_authzchanged_refmin_severityno_cross_file

write_baseline

Write a scan baseline file

Scan ``path`` and record the findings as a baseline file. Writes ``baseline_file`` to disk (creating or overwriting it) and uses ``--fail-on none`` so the current state is accepted. Later scans can pass this file as ``baseline`` to report only new findings.

输入参数path必填baseline_file必填

verify

Verify earlier findings are fixed

Re-scan the files behind earlier findings and report their status. ``findings_json`` is the JSON produced by ``scan`` (a JSON string or the parsed object). Each finding comes back as fixed, file_removed, present, suppressed, uncertain or unverifiable. Pass ``ids`` (finding fingerprints) to check only specific findings. This tool does not modify any files.

输入参数idsfindings_json必填

fix

Generate verified security fixes

Generate and verify fixes for scan findings. By default this returns a unified diff and does not touch any files. Set ``in_place=True`` to write the patches to the source files. Each patch is verified by re-scanning the patched code. This tool needs the FRAME_LLM_* environment variables (FRAME_LLM_BASE_URL, FRAME_LLM_MODEL, and an API key when the endpoint requires one).

输入参数path必填in_placefindings_json必填

exploit

Drive an exploitation agent against a target

Drive an LLM agent to exploit a live target. Authorized use only. Run this only against systems you own or are explicitly authorized to test. ``target`` is a URL such as http://app:8080. Optionally prime the agent with ``findings_json`` from ``scan``, a plain-language ``goal``, a ``success_check`` shell command (exit 0 means solved), and ``max_steps``. Needs the FRAME_LLM_* environment variables.

输入参数goaltarget必填max_stepsfindings_jsonsuccess_check

packs_list

List loadable framework packs

List the framework packs a scan would load. Packs teach Frame a framework's sources, sinks, sanitizers and entry points. Pass ``path`` to include a project directory's .frame/packs.

输入参数path

packs_check

Validate framework pack files

Validate one or more framework pack .toml files or directories.

输入参数files必填

solve

Check a separation logic entailment

Check whether a separation logic entailment ``P |- Q`` is valid. Example entailment: ``x |-> 5 |- x |-> 5``. Set ``model=True`` to return a countermodel when the entailment is invalid.

输入参数modelentailment必填

版本历史

2
  1. v0.2.0最新Nov 6, 2026
  2. v0.1.0Oct 29, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分