SQLMap MCP Server (FastMCP) 是一个基于 FastMCP 构建的模型上下文协议(MCP)服务器,它将 SQLMap 命令行工具以 MCP 函数的形式暴露出来,用于自动化 SQL 注入测试和数据库侦察。
此 MCP 服务器通过标准化接口提供对 SQLMap 强大的 SQL 注入测试功能的编程访问。它基于 FastMCP 构建,简单易用,允许 AI 助手和其他 MCP 客户端执行自动化安全测试、数据库枚举和漏洞评估。
基本扫描
数据库枚举
数据检索
系统信息
高级访问
高级选项
# 使用 Homebrew (macOS)
brew install sqlmap
# 使用 pip
pip install sqlmap
# 或者从 GitHub 克隆
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
git clone
cd sqlmap-mcp
# 使用 uv (推荐)
uv sync
# 或者使用 pip
pip install -e .
sqlmap --version
python server.py
将此服务器添加到你的 MCP 客户端配置中:
{
"mcpServers": {
"sqlmap": {
"command": "python",
"args": ["/path/to/sqlmap-mcp/server.py"],
"env": {}
}
}
}
sqlmap_help
:显示 SQLMap 帮助信息。
advanced
(布尔值):显示高级帮助(使用 -hh)sqlmap_scan_url
:扫描目标 URL 的 SQL 注入漏洞。
url
(字符串):要扫描的目标 URLdata
(字符串):POST 数据字符串cookie
(字符串):HTTP Cookie 头部值level
(整数,1 - 5):要执行的测试级别risk
(整数,1 - 3):要执行的测试风险technique
(字符串):要使用的 SQL 注入技术sqlmap_enumerate_databases
:枚举目标上的数据库。
url
(字符串):目标 URLdata
(字符串):POST 数据字符串cookie
(字符串):HTTP Cookie 头部值sqlmap_enumerate_tables
:枚举特定数据库中的表。
url
(字符串):目标 URLdatabase
(字符串):要枚举的数据库名称data
(字符串):POST 数据字符串cookie
(字符串):HTTP Cookie 头部值sqlmap_enumerate_columns
:枚举特定表中的列。
url
(字符串):目标 URLdatabase
(字符串):数据库名称table
(字符串):要枚举的表名称data
(字符串):POST 数据字符串cookie
(字符串):HTTP Cookie 头部值sqlmap_dump_table
:从特定表中转储数据。
url
(字符串):目标 URLdatabase
(字符串):数据库名称table
(字符串):要转储的表名称columns
(字符串):要转储的特定列(逗号分隔)where
(字符串):WHERE 子句以限制结果limit
(整数):要转储的行数限制data
(字符串):POST 数据字符串cookie
(字符串):HTTP Cookie 头部值sqlmap_get_banner
:检索数据库标识信息。
url
(字符串):目标 URLdata
(字符串):POST 数据字符串cookie
(字符串):HTTP Cookie 头部值sqlmap_get_current_user
:检索当前数据库用户。
url
(字符串):目标 URLdata
(字符串):POST 数据字符串cookie
(字符串):HTTP Cookie 头部值sqlmap_get_current_db
:检索当前数据库名称。
url
(字符串):目标 URLdata
(字符串):POST 数据字符串cookie
(字符串):HTTP Cookie 头部值sqlmap_read_file
:从数据库服务器文件系统中读取文件。
url
(字符串):目标 URLfile_path
(字符串):要读取的文件路径data
(字符串):POST 数据字符串cookie
(字符串):HTTP Cookie 头部值sqlmap_execute_command
:在数据库服务器上执行操作系统命令。
url
(字符串):目标 URLcommand
(字符串):要执行的操作系统命令data
(字符串):POST 数据字符串cookie
(字符串):HTTP Cookie 头部值sqlmap_advanced_scan
:使用自定义选项执行高级 SQLMap 扫描。
url
(字符串):目标 URLdata
(字符串):POST 数据字符串cookie
(字符串):HTTP Cookie 头部值user_agent
(字符串):自定义用户代理头部proxy
(字符串):要使用的代理tor
(布尔值):使用 Tor 匿名网络random_agent
(布尔值):使用随机用户代理level
(整数,1 - 5):测试级别risk
(整数,1 - 3):测试风险technique
(字符串):SQL 注入技术dbms
(字符串):强制后端数据库管理系统timeout
(整数):请求超时时间(秒)threads
(整数,1 - 10):并发线程数{
"name": "sqlmap_scan_url",
"arguments": {
"url": "http://example.com/vuln.php?id=1",
"level": 2,
"risk": 2
}
}
{
"name": "sqlmap_enumerate_databases",
"arguments": {
"url": "http://example.com/vuln.php?id=1"
}
}
{
"name": "sqlmap_advanced_scan",
"arguments": {
"url": "http://example.com/vuln.php?id=1",
"proxy": "http://127.0.0.1:8080",
"level": 3,
"risk": 2,
"threads": 5,
"random_agent": true
}
}
sqlmap-mcp/
├── server.py # 主 FastMCP 服务器实现
├── pyproject.toml # 项目配置和依赖
├── README.md # 本文件
└── .gitignore # Git 忽略规则
要使用 FastMCP 添加新的 SQLMap 功能:
@app.tool()
装饰的新函数。示例:
@app.tool()
async def my_new_tool(url: str, param: Optional[str] = None) -> str:
"""描述此工具的用途"""
args = ["-u", url]
if param:
args.extend(["--param", param])
result = await sqlmap_executor.execute_sqlmap(args)
return result.output if result.success else f"Error: {result.error}"
# 测试服务器
python server.py
# 使用简单的 MCP 客户端进行测试
# (使用你喜欢的 MCP 客户端测试工具)
通过修改服务器配置或添加日志记录语句来启用调试日志。
本项目遵循与 SQLMap 相同的许可证(GPLv2)。详情请参阅 LICENSE 文件。
对于问题和疑问:
免责声明:此工具仅用于教育和授权的安全测试目的。用户有责任确保在任何系统上使用此工具之前获得适当的授权。