Token导航 LogoToken导航

MCP Server · 开发工具

codesacan (Cocodedk)

CodeScan是一个静态代码分析工具,用于解析Python源代码,提取结构和调用图信息,并将其存储到Neo4j图数据库中,适用于代码库探索、依赖分析和可视化。

stdio官方级别未说明来源级核验工具 20
PythonCursor开发工具

快速开始

作者 / 组织
cocodedk
提供方
cocodedk
运行时
Python

工具数量

20

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

1

仓库热度

收录来源

1 个

MCP World

选型结论

codesacan (Cocodedk) 属于开发工具类 MCP Server,公开资料标注 20 个工具,通过stdio 本地进程接入,适配 Cursor,有可以直接复制的安装命令;接入前先确认权限范围。

分类

开发工具

传输方式

stdio

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

安装命令

python scanner.py --project-dir /path/to/your/project

客户端配置示例

{
  "mcpServers": {
    "codesacan": {
      "command": "python",
      "args": [
        "scanner.py",
        "--project-dir",
        "/path/to/your/project"
      ]
    }
  }
}

按公开安装命令拼出来的示例,字段名和参数以仓库 README 为准;带 YOUR_API_KEY 这类占位符的位置记得换成自己的值。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Python,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 20 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

CodeScan:集成Neo4j的Python静态代码分析器

网站

概述

scanner.py 是一个静态代码分析工具,旨在解析Python源代码,提取结构和调用图信息,并将其存储在Neo4j图数据库中。该工具可通过环境变量进行高度配置,旨在使用具有GraSS样式的Neo4j浏览器进行高级代码库探索、依赖性分析和可视化。

特性

  • 基于AST的解析:使用Python ast 用于遍历和分析源代码文件的模块。
  • 类和函数提取:标识所有类、独立函数和类方法,包括它们的文件位置和行号。
  • 调用图构造:检测函数调用,包括参数名称/值,并创建 CALLS 图中的关系。
  • 节点标签:为节点分配多个标签以进行高级可视化(例如。, :Function, :MainFunction, :ClassFunction, :ReferenceFunction).
  • 参考节点处理:为扫描代码库中未定义的调用函数创建特殊节点。
  • 测试检测和覆盖:自动识别测试组件并建立测试覆盖关系:

- 用适当的标记标记测试文件、函数和类(:Test, :TestFunction, :TestClass) - 创建 TESTS 测试代码与其测试的生产代码之间的关系 - 针对不同项目结构和测试框架的可配置测试模式

  • 可配置的目录遍历:跳过指定的目录(例如virtualenvs, .git,测试文件夹)以实现高效扫描。
  • 相对路径存储:存储相对于项目目录的文件路径,以提高可移植性。
  • 基于环境的配置:从读取Neo4j连接和项目设置 .env 文件。
  • GraSS兼容:专为与Neo4j浏览器的GraSS样式表一起使用而设计,用于自定义节点/关系着色。
  • 进度可视化:使用tqdm进度条显示扫描进度和元素发现。
  • 统计数据收集:收集并显示有关扫描代码库的详细统计信息。
  • 详细程度控制:提供安静和详细的模式来控制输出细节。

设置您的环境

环境文件设置

CodeScan使用 .env 配置文件。按照以下步骤进行设置:

  1. 复制示例环境文件以创建您自己的:
   cp example.env .env
  1. 编辑 .env 文件并更新 PROJECT_DIR 变量指向要扫描的项目的路径:
   PROJECT_DIR=/absolute/path/to/your/project/

例如:

- Linux/macOS: PROJECT_DIR=/home/username/projects/my-python-project/ - 窗户: PROJECT_DIR=C:/Users/username/projects/my-python-project/

  1. 根据需要调整其他设置:

- Neo4j连接详细信息(用户名、密码、端口) - 日志选项

环境文件的替代方案

而不是使用 .env 文件,您也可以在运行扫描程序时直接指定项目目录:

python scanner.py --project-dir /path/to/your/project

建筑

1.AST导线测量

  • 这 CodeAnalyzer 类子类 ast.NodeVisitor.
  • 访问 ClassDef 和 FunctionDef 节点以提取类/函数元数据。
  • 访问 Call 节点,以提取调用关系和参数信息。

2.节点和关系创建

  • 文件节点:已标记 :File,为特定文件类型添加额外标签:

- :TestFile 用于测试文件 - :ExampleFile 例如文件 - 物业包括 path, type, is_test, is_example

  • 类节点:已标记 :Class,属性包括 name, file, line, end_line.
  • 功能节点:已标记 :Function,带有附加标签:

- :MainFunction 对于名为的函数 main - :ClassFunction 类内部的方法 - :ReferenceFunction 用于已调用但未定义的函数 - 属性: name, file, line, end_line, is_reference, length

  • 常量节点:已标记 :Constant,属性包括 name, value, type, file, line, end_line, scope
  • 关系:

- CONTAINS:来自 File 到 Class, Function,或 Constant (文件内容) - CONTAINS:来自 Class 到 Function (班级成员资格) - CALLS:从调用者到被调用者,具有属性 line (呼叫站点), args (参数名称/值)

3.参考节点处理

  • 如果一个函数被调用但未在扫描的代码库中定义 :ReferenceFunction 节点已创建。
  • 稍后定义函数时,所有 CALLS 与参考节点的关系被重定向到实际功能节点。

4.测试覆盖率检测

  • 测试文件、函数和类根据可配置模式自动识别
  • 测试组件收到适当的标签(:Test, :TestFunction, :TestClass)
  • TESTS 通过以下方式在测试函数和生产代码之间创建关系:

- 命名模式:名为的测试函数 test_foo 可能测试功能 foo - 进口分析:测试函数通常导入它们测试的模块/函数 - 呼叫分析:测试函数调用的函数可能正在测试中

  • 所有检测模式都可以针对不同的项目结构和框架进行配置

5.配置

  • 所有连接和项目设置都是从 .env 文件使用 python-dotenv.
  • 示例变量:

- NEO4J_USER, NEO4J_PASSWORD, NEO4J_HOST, NEO4J_PORT_BOLT, PROJECT_DIR

  • 目录的忽略列表是硬编码的,但可以扩展。

6.使用方法

先决条件
  • Python 3.8+
  • Neo4j 5.x(推荐使用Docker)
  • 安装依赖项:
  pip install -r requirements.txt
运行Neo4j
  • 使用Docker Compose启动Neo4j:
  docker-compose up -d
  • Neo4j浏览器将在 http://localhost:7400 (或按配置)。
运行扫描仪
  • 确保您的 .env 文件已配置(请参阅“设置环境”部分)。
  • 运行扫描仪:
  python scanner.py
  • 脚本将:

- 清空Neo4j数据库 - 遍历项目目录 - 用类、函数和调用关系填充图形

输出控制

控制扫描仪输出的详细程度:

# Minimal output (only errors)
python scanner.py --quiet

# Detailed output showing all elements found
python scanner.py --verbose
在Neo4j浏览器中可视化
  • 使用提供的 .grass 用于自定义节点/关系着色的文件。
  • 示例查询:

- MATCH (n) RETURN n (所有节点) - MATCH (n)-[r]->(m) RETURN n, r, m (所有关系) - MATCH (f:Function) WHERE f.line > 100 RETURN f (按行功能) - MATCH ()-[r:CALLS {line: 42}]->() RETURN r (拨打特定线路) - MATCH (f:Function) RETURN f.name, f.file, f.length ORDER BY f.length DESC LIMIT 10 (查找最长函数) - MATCH (f:File)-[:CONTAINS]->(n) RETURN f.path, count(n) ORDER BY count(n) DESC LIMIT 10 (包含大多数元素的文件) - MATCH (f:File)-[:CONTAINS]->(n) WHERE n:Class OR n:Function RETURN f.path, labels(n), count(n) GROUP BY f.path, labels(n) ORDER BY f.path, labels(n) (按类型统计每个文件中的元素数)

高级详细信息

  • 参数提取:扫描程序从函数调用中提取参数名和常量值,并将其作为字符串存储在 args 财产 CALLS 关系。
  • Dunder方法跳过:特殊方法(例如。, __init__, __str__)为了清楚起见,忽略了。
  • 内置和stdlib调用过滤:图中不包括对Python内置模块和标准库模块的调用。
  • 错误处理:会报告并跳过语法错误和不可解码的文件。
  • 可扩展性:忽略列表、节点/关系属性和标签逻辑可以很容易地扩展到更高级的用例中。

MCP服务器和游标集成

CodeScan包括一个MCP(模型上下文协议)服务器,用于高级代码图查询和与Cursor IDE等工具的集成。

MCP服务器(codescan_mcp_server.py)

此服务器通过MCP协议公开存储在Neo4j中的代码图,使其可供兼容的客户端访问。它提供了列出文件、函数、类、调用关系和未解析引用的工具。

可用工具

CodeScan通过MCP服务器提供各种代码分析工具:

  • 基本代码结构

- list_files -列出代码库中的所有文件及其类型 - file_contents -列出特定文件中的所有类、函数和常量 - list_functions -列出特定文件中的函数 - list_classes -列出特定文件中的类

  • 调用图分析

- callees -查找由特定函数调用的函数 - callers -查找调用特定函数的函数 - transitive_calls -查找函数之间的路径(一个函数是否最终调用另一个函数) - most_called_functions -列出调用最多的函数 - most_calling_functions -列出调用最多其他函数的函数

  • 测试覆盖率分析

- untested_functions -列出未经测试的函数 - untested_classes -列出没有测试的类 - test_coverage_ratio -获取总体测试覆盖率统计数据 - functions_tested_by -列出特定测试文件测试的函数 - tests_for_function -列出特定功能的测试

  • 其他分析

- recursive_functions -列出调用自己的函数 - classes_with_no_methods -列出没有任何方法的类 - classes_with_most_methods -列出方法最多的类 - function_call_arguments -列出调用特定函数时使用的参数 - repetitive_constants -查找在多个位置使用的具有相同值的常量 - repetitive_constant_names -查找在多个位置使用的具有相同名称但可能不同值的常量

运行MCP服务器

使用提供的shell脚本启动服务器(确保您的虚拟环境已激活并且Neo4j正在运行):

./run_mcp_stdio_server.sh

这将使用stdio传输启动MCP服务器,准备与Cursor或其他MCP客户端集成。

游标IDE集成

要将CodeScan的MCP服务器与Cursor IDE一起使用,请将以下内容添加到您的 .cursor/mcp.json (根据需要调整路径):

{
  "mcpServers": {
    "codescan_neo4j": {
      "command": "/path/to/codescan/run_mcp_stdio_server.sh",
      "args": []
    }
  }
}

配置后,重新启动Cursor并打开MCP工具面板。您应该看到CodeScan的工具(例如。, graph_summary, list_files, list_functions等等)可用于查询您的代码库。

故障排除
  • 确保Neo4j正在运行,并且可以使用您的凭据访问 .env 文件。
  • 如果工具未出现在Cursor中,请检查服务器日志是否有错误。
  • 必须从项目根目录启动服务器,才能正确解析相对路径。

相关文件:

  • codescan_mcp_server.py --MCP服务器实现
  • run_mcp_stdio_server.sh --启动服务器的Shell脚本

码头工人

docker pull ghcr.io/cocodedk/codesacan:latest
docker run ghcr.io/cocodedk/codesacan:latest

作者

巴巴克·班佩 — cocode.dk | 领英 |

许可证

阿帕奇-2.0 |©2026 科科德 |创建者: 巴巴克·班佩

工具与能力

工具数量

20

资源数量

0

提示词数量

0

能力标签

静态代码分析Python本地部署Neo4j代码可视化依赖分析测试覆盖

支持客户端

Cursor

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

让助手直接读代码

把仓库、提交记录和 issue 交给模型检索,补全和重构时不用来回复制文件。

在对话里跑命令

触发构建、测试和脚本,执行结果直接回到上下文,省去切终端。

接进开发流程

把 PR、CI 状态和代码审查接进助手,减少在几个工具之间跳。

选择建议

值得选的地方

  • 工具数量 20 个,一次接入能覆盖的操作比单点工具更全。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • stdio 方式要求本地装好 Python,换机器要重新装一遍。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在开发工具场景里让模型直接调用外部能力的人。
  • 已经在用 Cursor 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
codesacan (Cocodedk)

MCP World · 本页

20stdio有1 个2026-05-17
Git 838e2ec1

MCP World

12stdio有2 个2026-05-17
Markitdown MCP 2c653a5f

MCP World

1stdio有1 个2026-05-17
Context7 MCP C671e75a

MCP World

0stdio有1 个2026-05-17
Context7 831acf40

MCP World

0stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

codesacan (Cocodedk) 怎么安装?

公开资料给出的安装命令是 python scanner.py --project-dir /path/to/your/project,运行环境为 Python。装完后按客户端要求写进 MCP 配置,重启客户端生效。

codesacan (Cocodedk) 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Python;保存后完全退出客户端再打开,配置才会生效。

codesacan (Cocodedk) 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

codesacan (Cocodedk) 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

codesacan (Cocodedk) 支持哪些客户端?

公开资料标注支持 Cursor;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP