内容
# nestjs-dev-logs-mcp
一个MCP服务器,用于向AI编码代理(Claude Code,Cursor,Codex)公开NestJS开发服务器日志。读取由NestJS开发服务器生成的日志文件,并通过7个MCP工具提供结构化、可过滤的访问。
## 设置
### 1. 将NestJS日志输出到文件
```bash
# 选项A:通过tee管道(保留终端输出)
nest start --watch 2>&1 | tee /tmp/nest-dev.log
# 选项B:重定向到文件
nest start --watch > /tmp/nest-dev.log 2>&1
```
### 2. 构建服务器
```bash
npm install
npm run build
```
### 3. 配置MCP客户端
**Claude Code** (`~/.claude/claude_desktop_config.json` 或项目 `.mcp.json`):
```json
{
"mcpServers": {
"nestjs-logs": {
"command": "node",
"args": ["dist/index.js"],
"cwd": "/path/to/nestjs-dev-logs-mcp",
"env": {
"NEST_LOG_PATH": "/tmp/nest-dev.log"
}
}
}
}
```
**Cursor** (`.cursor/mcp.json`):
```json
{
"mcpServers": {
"nestjs-logs": {
"command": "node",
"args": ["/path/to/nestjs-dev-logs-mcp/dist/index.js"],
"env": {
"NEST_LOG_PATH": "/tmp/nest-dev.log"
}
}
}
}
```
## 环境变量
| 变量 | 默认值 | 描述 |
| --- | --- | --- |
| `NEST_LOG_PATH` | `/tmp/nest-dev.log` | NestJS日志文件路径 |
| `NEST_LOG_FORMAT` | `auto` | `auto`、`text` 或 `json` |
| `NEST_LOG_MAX_LINES` | `10000` | 每查询最大扫描行数 |
| `NEST_LOG_TAIL_BYTES` | `1048576` | 从文件末尾读取字节数(1MB) |
## 工具
### `get_recent_errors`
获取最近的错误和异常日志。
- `since_minutes` — 仅限最近N分钟的错误
- `module` — 按NestJS模块名称过滤
- `limit` — 最大返回错误数(默认20,最大100)
### `get_request_logs`
获取HTTP请求日志。
- `status_code` — 按确切状态码过滤
- `status_range` — 按范围过滤:`2xx`、`3xx`、`4xx`、`5xx`
- `path_pattern` — 匹配请求路径的正则表达式
- `method` — 按HTTP方法过滤
- `min_duration_ms` — 仅限慢于N毫秒的请求
- `since_minutes`、`limit`
### `get_db_queries`
获取数据库查询日志(TypeORM、Prisma、Mongoose)。
- `min_duration_ms` — 仅限慢查询
- `failed_only` — 仅限失败查询
- `table_pattern` — 匹配表名的正则表达式
- `since_minutes`、`limit`
### `get_di_errors`
获取NestJS依赖注入解析错误。
- `since_minutes`、`limit`
### `tail_logs`
获取日志文件的最后N行(原始访问的逃生通道)。
- `lines` — 行数(默认50,最大500)
- `grep` — 过滤行的正则表达式
### `get_log_summary`
健康检查 — 按严重程度、错误模式、状态码分布计数。
- `since_minutes`
### `truncate_logs`
清除日志文件。使用文件截断(而非删除),以便NestJS继续写入。
- `confirm` — 必须为 `true`
## 支持的日志格式
**NestJS文本**(默认记录器):
```
[Nest] 12345 - 04/16/2026, 10:30:00 AM LOG [HTTP] GET /api/users 200 12ms
```
**nestjs-pino JSON**(推荐用于完整请求数据):
```json
{"level":30,"time":1713254465000,"msg":"GET /api/users 200","req":{"method":"GET","url":"/api/users"},"res":{"statusCode":200},"responseTime":12}
```
格式通过采样行自动检测。使用 `NEST_LOG_FORMAT` 覆盖。
## 开发
```bash
npm run dev # 使用tsx运行(热重载)
npm test # vitest
npm run test:watch # vitest --watch
npm run build # tsc → dist/
```
## 多个日志文件
对于多个NestJS服务,配置每个日志文件的单独MCP服务器条目:
```json
{
"mcpServers": {
"api-logs": {
"command": "node",
"args": ["dist/index.js"],
"env": { "NEST_LOG_PATH": "/tmp/api-dev.log" }
},
"worker-logs": {
"command": "node",
"args": ["dist/index.js"],
"env": { "NEST_LOG_PATH": "/tmp/worker-dev.log" }
}
}
}
```