代码注释管理工具

Context-Todos是一款基于Model Context Protocol (MCP)的服务器,用于扫描和管理代码库中的TODO/FIXME/HACK/XXX注释,提供查询、监控和分析功能。

  • by Eeymoo
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Eeymoo/context-todos

使用说明

上下文全部

简体中文 |英语

A. 模型上下文协议(MCP) 扫描和管理代码库中TODO/FIXME/HAK/XXX注释的服务器。

它的作用

Context Todos可帮助您在整个项目中跟踪和管理代码注释。它扫描源文件以查找常见的注释标签,并提供工具通过MCP协议查询、监视和分析它们。

特性

  • 扫描文件:从单个文件中提取TODO注释
  • 扫描目录:递归扫描目录中所有支持的文件
  • 列表扩展:查看所有支持的文件扩展名
  • 观看模式:实时监控文件更改(最大/实验室模式)
  • TODO数据库:所有TODO项目的持久存储(最大/实验室模式)
  • 统计:按标签和文件获取TODO统计信息(实验室模式)

支持的TODO标签

标签 用法
TODO 需完成的一般任务
FIXME 需要修复的代码
HACK 临时解决方法
XXX 警告或有问题的代码

TODO评论大会

我们建议对TODO注释使用结构化格式,以提高可读性并实现更好的分类:

TODO: Brief description
TODO(category): Brief description with category

这 (category) 部分是 optional 但是 推荐 为了更好的组织。这两种格式都有效,将被检测到。

推荐类别

类别 目的
bug 需要修复的Bug
performance 性能改进
security 安全相关问题
ux 用户体验改善
refactor 代码重构需求
docs 文档更新
test 缺失或改进的测试
feat 要实现的新功能
build 构建/CI相关问题

按语言举例

JavaScript/Types/Node.js

// Simple format
// TODO: Add error handling for network timeouts

// With category
/*
 * TODO(performance): Replace synchronous readdirSync with async fs.promises.readdir
 * to avoid blocking the event loop when scanning large projects.
 * See: https://nodejs.org/api/fs.html#fs_fspromises_readdir_path_options
 */

python

# Simple format
# TODO: Add type hints to this function

# With category
# TODO(security): Sanitize user input before database query
# Consider using parameterized queries instead of string formatting.

锈

// Simple format
// TODO: Implement Clone trait for this struct

// With category
/*
 * TODO(security): Add input validation to prevent buffer overflow
 * attacks in the packet parser.
 */

Java

// Simple format
// TODO: Extract magic numbers to constants

// With category
/*
 * TODO(performance): Cache the computed results to avoid
 * recalculating on every request.
 * Consider using Caffeine or Guava cache.
 */

C

// Simple format
// TODO: Add unit tests for edge cases

// With category
/*
 * TODO(performance): Replace raw pointers with smart pointers
 * to prevent memory leaks and improve ownership semantics.
 */

支持的文件扩展名

类别 扩展
JavaScript/TypeScript .ts, .tsx, .js, .jsx, .mjs, .cjs
python .py
红宝石 .rb
Java .java
去吧 .go
生锈 .rs
C/C++ .c, .cpp, .h, .hpp
C .cs
PHP .php
Swift .swift
Kotlin/Scala .kt, .scala
壳牌 .sh, .bash
前端 .css, .scss, .less, .html, .vue, .svelte
配置 .yaml, .yml, .toml, .ini, .cfg
数据库 .sql, .lua
其他 .r, .m, .mm, .pl, .pm, .ex, .exs, .erl, .hs, .elm, .clj, .cljs, .tf, .hcl, .dockerfile

如何使用

快速入门(npx)

# Run directly with npx (Stable Standard)
npx @eeymoo/context-todos mcp

# Stable Max (with watching)
npx @eeymoo/context-todos mcp --max

# Labs Standard
npx @eeymoo/context-todos mcp --labs

# Labs Max (all features including experimental)
npx @eeymoo/context-todos mcp --labs --max

安装

# Install globally
npm install -g @eeymoo/context-todos

# Or with pnpm
pnpm add -g @eeymoo/context-todos

# Then run
context-todos mcp

配置MCP客户端

添加到您的MCP客户端配置中(例如,Claude Desktop、Cursor等):

{
  "mcpServers": {
    "context-todos": {
      "command": "npx",
      "args": ["-y", "@eeymoo/context-todos", "mcp"]
    }
  }
}

或者使用最大/实验室模式:

{
  "mcpServers": {
    "context-todos": {
      "command": "npx",
      "args": ["-y", "@eeymoo/context-todos", "mcp", "--max"]
    }
  }
}

发展

# Clone the repository
git clone https://github.com/eeymoo/context-todos.git
cd context-todos

# Install dependencies
pnpm install

# Build
pnpm build

# Run in development
pnpm dev

服务器模式

该产品有两类功能:

  • 稳定:具有生产就绪功能 Standard 和 Max 变体
  • 实验室:实验功能,也有 Standard 和 Max 变体
类别 模式 命令行界面 描述 工具
稳定 标准 (默认) 基本扫描工具 scan-file, scan-directory, list-supported-extensions
稳定 最大 --max 标准+文件监视和数据库 全部标准+ watch, unwatch, list-todos
实验室 标准 --labs 实验标准模式 与稳定标准相同
实验室 Max --labs --max 所有功能,包括实验 全部最大+ get-todo-stats
# Stable Standard (default)
npx @eeymoo/context-todos mcp

# Stable Max (with watching)
npx @eeymoo/context-todos mcp --max

# Labs Standard
npx @eeymoo/context-todos mcp --labs

# Labs Max (all features)
npx @eeymoo/context-todos mcp --labs --max

输出格式

使用 --format 更改输出格式的选项:

# Default format (toon) - compact single-line format
npx @eeymoo/context-todos mcp --format toon

# JSON format - structured JSON output
npx @eeymoo/context-todos mcp --format json

# Pretty format - human-readable with indentation
npx @eeymoo/context-todos mcp --format pretty
格式 描述
toon 压缩单行格式(默认)
json 用于编程的完整JSON结构
pretty 带缩进的多行格式

文件筛选

使用 --filter 要排除与特定模式匹配的文件:

# Exclude test files
npx @eeymoo/context-todos mcp --filter "*.test.ts,*.spec.ts"

# Exclude test directories and config files
npx @eeymoo/context-todos mcp --filter "__tests__/**,*.config.ts"

# Combine with gitignore (enabled by default)
npx @eeymoo/context-todos mcp --use-gitignore --filter "*.test.ts"
选项 描述
--filter <patterns> 要排除的逗号分隔的glob模式
--use-gitignore 使用.gitignore过滤文件(默认值:true)
--gitignore-path <path> 自定义gitignore文件路径

MCP工具

scan-file

扫描单个文件以查找TODO注释。

{
  "name": "scan-file",
  "arguments": {
    "path": "/path/to/file.ts"
  }
}

scan-directory

递归扫描目录中的TODO注释。

{
  "name": "scan-directory",
  "arguments": {
    "path": "/path/to/project",
    "extensions": [".ts", ".js"]
  }
}

list-supported-extensions

列出所有支持的文件扩展名。

{
  "name": "list-supported-extensions",
  "arguments": {}
}

watch (最大值/实验室--最大值)

开始查看目录中的文件更改。

{
  "name": "watch",
  "arguments": {
    "path": "/path/to/project",
    "extensions": [".ts", ".js"]
  }
}

unwatch (最大值/实验室--最大值)

别看了。

{
  "name": "unwatch",
  "arguments": {}
}

list-todos (最大值/实验室--最大值)

列出数据库中所有跟踪的TODO。

{
  "name": "list-todos",
  "arguments": {
    "tag": "TODO",
    "file": "src/index.ts"
  }
}

get-todo-stats (仅限实验室)

获取按标签和文件分组的TODO统计信息。

{
  "name": "get-todo-stats",
  "arguments": {}
}

使用提示

连接此服务器后,建议使用MCP客户端(如Claude Desktop、Cursor、Codex)的提示:

查看代码注释

Scan the "src" directory for all TODO/FIXME/HACK/XXX comments and review them.
For each item, assess its priority (high/medium/low), category (bug, performance,
security, refactor, docs, test, feat, build), and recommend an action.
Group results by tag and give a prioritized action list.

生成TODO报告

Scan the current project and generate a report including: total number of
annotations, breakdown by tag and category, top 5 hotspot files, and notable
FIXME/XXX items that may need immediate attention. Output as markdown.

写一个结构良好的TODO

Help me write a TODO comment for: "<describe what needs to be done>".
Use category "<category>" and <language> syntax.

从数据库中进行分类(最大值/labs--最大值)

List all FIXME items from the database, sorted by most recently updated.
For each, suggest the smallest fix to resolve it.

脚本

pnpm dev           # Run in development mode
pnpm build         # Build for production
pnpm test          # Run tests
pnpm test:watch    # Run tests with watch mode
pnpm inspector     # Run with MCP inspector (for debugging)

需求

  • Node.js>=18.0.0
  • pnpm(推荐)

许可证

麻省理工学院