代码分析服务器

CodeQL MCP Server是一个用于代码分析的服务器,支持多种编程语言,通过PostgreSQL图数据库实现快速查询,适用于安全扫描和代码模式识别。

  • by thousandmiles
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 thousandmiles/codeql-mcp-server

使用说明

CodeQL MCP服务器

用于CodeQL代码分析的MCP服务器,带有PostgreSQL图形数据库,查询速度快100倍。

特性

岩心分析

  • 创建用于代码分析的CodeQL数据库
  • 使用内置查询套件运行安全扫描
  • 支持JavaScript/TypeScript、Python、Java、C/C++、C#、Go、Ruby、Swift
  • 用于快速重复查询的数据库缓存

图形数据库(快速查询模式)

  • 为即时查询构建PostgreSQL图索引
  • 比直接CodeQL查询快100-600倍
  • 分析调用链和类层次结构
  • 识别热点和代码模式

快速开始

1.基本设置

./scripts/install-codeql.sh

2.PostgreSQL设置(可选-用于快速查询)

./scripts/setup-database.sh

3.验证

./scripts/check-env.sh

用法

基本工作流程

# 1. Create CodeQL database
create_database /path/to/project javascript myproject

# 2. Run security analysis
analyze_security myproject

# 3. Find functions (slow)
find_function myproject "handler"

快速工作流(使用PostgreSQL)

# 1. Create CodeQL database
create_database /path/to/project javascript myproject

# 2. Build graph index (one-time operation)
build_graph_index myproject

# 3. Fast queries using graph index
find_function_graph myproject "handler"
find_callers_graph myproject "logger"
find_call_chain_graph myproject "main" "execute" 5
get_class_hierarchy_graph myproject "Router"
get_graph_stats myproject

可用工具

数据库管理

  • create_database -从源代码创建CodeQL数据库
  • list_databases -列出所有缓存的数据库
  • delete_database -删除数据库
  • upgrade_database -升级数据库架构
  • get_database_info -获取数据库元数据

分析工具

  • run_query -运行CodeQL查询或查询套件
  • analyze_security -运行安全分析
  • find_patterns -查找代码模式
  • get_metrics -获取代码度量

图形数据库工具(需要图形索引)

  • build_graph_index -构建PostgreSQL索引(一次性操作)
  • find_function_graph -使用图索引查找函数
  • find_callers_graph -查找调用函数的人
  • find_call_chain_graph -查找函数之间的调用路径
  • get_class_hierarchy_graph -获取类继承树
  • get_graph_stats -获取数据库统计信息和热点

导出工具

  • export_results -将SARIF结果导出为CSV/JSON/Markdown

性能比较

操作 CodeQL Direct 图形索引模式 加速
查找功能 15-30s <100ms ~300x
查找呼叫者 20-40s <100ms ~400x
呼叫链 30-60s <200ms ~150x
类层次结构 25-50s <100ms ~300x

PostgreSQL安装详细信息

这 setup-postgres.sh 脚本:

  1. 安装PostgreSQL(如果需要)
  2. 创建 codeql_graph 数据库
  3. 创建 codeql 用户
  4. 使用索引初始化架构
  5. 测试连接

连接字符串: postgresql://codeql:codeql123@localhost/codeql_graph

测试

交互式测试

npx @modelcontextprotocol/inspector $(which node) build/index.js

自动化测试

# Run all tests
./tests/test-all.sh

# Or run individual language tests
./tests/javascript/test-rocketchat.sh  # JavaScript/TypeScript (Rocket.Chat)
./tests/python/test-flask.sh           # Python (Flask)

看 测试/README.md 了解详情。

建筑

CodeQL Database (one-time creation)
       ↓
PostgreSQL Graph Index (optional, fast queries)
       ↓
MCP Tools (100-600x faster with index)

语言支持

图形索引支持

提取查询按语言组织 queries/export/<language>/:

语言 核心分析 图形索引 查询目录 状态
JavaScript/TypeScript ✅ ✅ queries/export/javascript/ 已测试✓
python✅ ✅ queries/export/python/ 已测试✓
Java✅ ❌ queries/export/java/ 计划中
C/C++ ✅ ❌ queries/export/cpp/ 计划中
去吧✅ ❌ queries/export/go/ 计划中
C#/Ruby✅ ❌ queries/export/csharp/, queries/export/ruby/ 计划中

每个语言目录应包含:

  • extract-functions.ql -提取所有函数定义
  • extract-calls.ql -提取函数调用图
  • extract-classes.ql -提取类定义
  • extract-methods.ql -提取类方法关系

脚本

所有实用程序脚本都在 ./scripts/:

  • install-codeql.sh -安装CodeQL CLI和依赖项
  • setup-database.sh -为图索引设置PostgreSQL数据库
  • check-env.sh -验证是否安装了所有要求
  • schema.sql -PostgreSQL模式定义

测试

# Use MCP Inspector to test tools
npx @modelcontextprotocol/inspector $(which node) build/index.js

许可证

麻省理工学院