🚀 SQLite MCP追蹤器服務器
SQLite MCP追蹤器服務器是一個基於Model Context Protocol (MCP) 的服務器,它通過標準化的工具和資源,提供了基於SQLite的任務和項目跟蹤功能,能夠有效助力軟件開發全生命週期的管理與跟蹤。
🚀 快速開始
要使用此服務器,首先需要進行安裝和數據庫初始化:
npm install
運行服務器:
npm start
或者在開發模式下運行(支持自動重啟):
npm run dev
在使用其他工具之前,你必須先初始化數據庫,有兩種方式可供選擇:
選項1:MCP工具(推薦給AI代理使用)
- 調用
initialize 工具,並提供當前工作目錄的路徑(例如:"/Users/username/project")
- 該工具將在指定目錄下創建
.project_tracker.db 文件,並設置好所有必要的表
選項2:HTTP API(適用於Web應用程序)
- 啟動服務器:
npm start
- 調用
POST /api/initialize 接口,並提供如下請求數據:{"currentProjectLocation": "/path/to/project"}
- API將創建
.project_tracker.db 文件並建立數據庫連接
✨ 主要特性
- SDLC實體管理:實現完整的軟件開發生命週期跟蹤
- 全流程支持:支持Epics、用戶故事、任務、缺陷、測試用例等,覆蓋完整的SDLC工作流程
- 集成Wiki系統:集成了用於項目文檔的Wiki系統,支持實體鏈接,標題限制為256個字符
- 評論系統:利益相關者可對所有實體進行反饋和協作,同時顯示評論數量
- Epic依賴關係:Epics可以依賴其他Epics(類似於用戶故事的依賴關係)
- 工作流強制約束:確保利益相關者的正確所有權和狀態轉換
- 自動狀態變更:已關閉故事中的缺陷會重新打開該故事,進入QA階段的故事將重新打開其父Epics
- 審計跟蹤:跟蹤所有權和狀態轉換
- 數據驗證:全面的輸入驗證和外鍵約束檢查
- 布爾字段處理:對存檔字段進行正確的布爾轉換(使用true/false而非0/1)
- HTTP API:提供REST端點,用於數據庫初始化、SDLC實體和Wiki頁面的操作
- Web UI:具有標籤式的儀表板界面,包含SDLC跟蹤器和Wiki部分,並顯示實體數量
- 錯誤處理:為無效操作和約束違規提供清晰的錯誤消息
- SQLite後端:使用SQLite和better-sqlite3進行高效操作
📦 安裝指南
npm install
💻 使用示例
運行服務器
npm start
或者在開發模式下運行:
npm run dev
初始化數據庫
選項1:MCP工具
initialize /Users/username/project
選項2:HTTP API
npm start
curl -X POST -H "Content-Type: application/json" -d '{"currentProjectLocation": "/path/to/project"}' http://localhost:3000/api/initialize
連接到MCP客戶端
Claude Code
claude mcp add --transport stdio my-tracker "npm start"
OpenCode
在OpenCode的MCP配置文件中添加以下內容:
{
"mcpServers": {
"sdlc-tracker": {
"command": "npm",
"args": ["start"],
"cwd": "/path/to/your/project"
}
}
}
OpenAI Codex
在 ~/.codex/config.toml 文件中添加以下內容:
[[mcp]]
name = "sdlc-tracker"
command = "npm"
args = ["start"]
cwd = "/path/to/your/project"
Windsurf
在Windsurf的MCP設置中使用stdio傳輸協議,並設置命令為 npm start。
Cursor
- 打開Cursor設置
- 導航到MCP部分
- 添加新服務器,配置如下:
- 傳輸協議:stdio
- 命令:
npm start
- 工作目錄:
/path/to/your/project
VS Code
- 安裝一個MCP擴展(如 "MCP" 或 "Claude Code")
- 配置為stdio傳輸協議
- 將命令設置為
npm start
訪問Web UI
npm start
示例響應
任務依賴智能提示
{
"success": true,
"entity_type": "task",
"entity_id": 5,
"old_status": "Review",
"new_status": "Closed",
"workflow_suggestions": [
{
"entity_type": "task",
"entity_id": 7,
"suggested_action": "start_task",
"reason": "All dependencies for task \"Implement API\" are now completed",
"suggested_status": "In Progress"
}
]
}
缺陷狀態智能提示
{
"success": true,
"entity_type": "bug",
"entity_id": 3,
"old_status": "In Progress",
"new_status": "Fixed",
"workflow_suggestions": [
{
"entity_type": "bug",
"entity_id": 3,
"suggested_action": "qa_verification",
"reason": "Bug has been marked as fixed and should be verified by QA",
"suggested_status": "In Progress"
}
]
}
用戶故事驗證
{
"content": ["Please ask product manager to add acceptance criteria"],
"structuredContent": {
"success": false,
"entity_type": "user_story",
"entity_id": 1,
"error": "Please ask product manager to add acceptance criteria"
},
"isError": true
}
📚 詳細文檔
可用工具
數據庫管理
initialize:在指定的項目目錄中初始化SDLC跟蹤器數據庫。你必須提供當前工作目錄的路徑(例如:"/Users/username/project")。
Epic管理
create_epics:創建多個Epics,需提供標題、描述和產品經理分配信息
list_epics:列出Epics,可選擇按狀態過濾(默認排除已存檔的Epics)
dependencies_resolved:按依賴關係解決狀態過濾Epics(true/false)
update_epic:更新Epic的標題、描述、狀態、分配和階段信息
archive_epic:存檔Epics(僅限產品經理操作)
用戶故事管理
create_user_stories:創建多個用戶故事,需提供Epic關聯、驗收標準和故事點信息
list_user_stories:列出用戶故事,可按Epic、狀態或分配人過濾(默認排除已存檔的用戶故事)
dependencies_resolved:按依賴關係解決狀態過濾用戶故事(true/false)
update_user_story_content:更新用戶故事的標題、描述和故事點信息(所有利益相關者均可操作)
update_user_story_acceptance_criteria:更新用戶故事的驗收標準(僅限產品經理操作)
archive_user_story:存檔用戶故事(僅限產品經理操作)
任務管理
create_tasks:創建多個任務,需提供用戶故事關聯、時間估計和架構師/開發人員分配信息
list_tasks:列出任務,可選擇按用戶故事、狀態、分配人以及依賴關係過濾
depends_on:過濾依賴於特定任務ID的任務
depended_by:過濾被特定任務ID依賴的任務
has_dependencies:過濾有(true)或沒有(false)任何依賴關係的任務
dependencies_resolved:按依賴關係解決狀態過濾任務(true/false)
缺陷跟蹤
create_bugs:創建多個缺陷報告,需提供嚴重級別、報告人和分配人信息
list_bugs:列出缺陷,可選擇按狀態、嚴重級別、報告人、分配人過濾
測試用例管理
create_test_cases:創建多個測試用例,需提供前置條件、步驟、預期結果和測試人員/產品經理分配信息
list_test_cases:列出測試用例,可選擇按狀態、分配人過濾
工作流管理
update_entity_status:更新任何SDLC實體的狀態和/或分配信息,同時記錄審計跟蹤並提供智能工作流建議
manage_story_dependencies:批量添加或刪除多個用戶故事的依賴關係
manage_epic_dependencies:批量添加或刪除多個Epics的依賴關係
manage_task_dependencies:批量添加或刪除多個任務的依賴關係(任務必須屬於同一個用戶故事)
- 自動狀態變更:在已關閉的故事中創建的缺陷會自動將故事重新打開到QA階段,進入QA階段的故事將自動重新打開其父Epics
智能工作流建議
系統在整個SDLC過程中提供智能工作流指導:
- 任務關閉智能:當任務狀態變為“已關閉”時,系統會自動檢查用戶故事中的所有任務是否都已關閉
- 用戶故事推進:如果所有任務都已關閉,且用戶故事尚未處於QA/UAT/已關閉狀態,系統會建議將用戶故事狀態改為“QA”
- 任務依賴智能:當任務關閉時,系統會檢查依賴任務,並在所有依賴關係都滿足的情況下建議將其狀態改為“進行中”
- 缺陷狀態智能:當缺陷狀態發生變化時,系統會提供針對性的建議:
- “已修復”的缺陷:建議進行QA驗證
- “已關閉”的缺陷:檢查是否存在迴歸測試,若缺失則建議創建
- “未解決”的缺陷:若分配給測試人員,建議重新分配給開發人員
- 自動狀態變更:除了建議之外,系統還會自動處理工作流轉換:
- 在已關閉的故事中創建的缺陷會自動將故事重新打開到“QA”狀態
- 進入“QA”階段的故事將自動將其父Epics從“已關閉”狀態重新打開到“打開”狀態
- 用戶故事驗證:防止在沒有驗收標準和測試用例的情況下將用戶故事狀態改為“進行中”
- 主動指導:幫助團隊維持正確的SDLC工作流,無需手動跟蹤
評論支持
create_comments:在任何SDLC實體上創建評論,用於利益相關者反饋
get_comments:檢索特定SDLC實體的評論
Wiki管理
create_wiki_page:創建Wiki頁面,需提供Markdown內容、標籤和類別分類信息(標題限制為256個字符)
update_wiki_page:更新Wiki頁面的內容、元數據和標籤(標題限制為256個字符)
list_wiki_pages:列出Wiki頁面,可按類別、狀態、標籤或搜索詞過濾
get_wiki_page:獲取詳細的Wiki頁面內容,包含鏈接的實體信息
manage_wiki_links:添加或刪除Wiki頁面與SDLC實體之間的鏈接
archive_wiki_page:存檔Wiki頁面(將其狀態改為已存檔)
知識圖譜生成
get_knowledge_graph:為已初始化的項目生成並返回知識圖譜,分析Python、JavaScript/TypeScript和Java文件,提取導入、類、函數和依賴關係信息
HTTP API
端點
GET /api/status:獲取數據庫初始化狀態和服務器信息
POST /api/initialize:使用項目位置初始化數據庫
- 請求:
{"currentProjectLocation": "/path/to/project"}
- 響應:數據庫連接狀態
GET /api/epics:列出所有Epics,包含評論數量和依賴關係信息
GET /api/epic/:id:獲取特定Epic的詳細信息
GET /api/story/:id:獲取特定用戶故事的詳細信息
GET /api/task/:id:獲取特定任務的詳細信息
GET /api/bug/:id:獲取特定缺陷的詳細信息
GET /api/test-case/:id:獲取特定測試用例的詳細信息
GET /api/comments/:entityType/:entityId:獲取任何實體的評論信息
GET /api/wiki:列出所有Wiki頁面,包含元數據和標籤信息
GET /api/wiki/:id:獲取特定Wiki頁面的完整內容和鏈接的實體信息
GET /api/wiki/search?q=term:按標題或內容搜索Wiki頁面
GET /api/get-knowledge-graph:為已初始化的項目生成並檢索知識圖譜數據
特性
- 評論計數:所有實體都包含
comment_count 字段
- 依賴信息:Epics和用戶故事包含依賴關係數組
- 布爾字段:存檔字段使用正確的布爾值(true/false)
- JSON響應:所有端點都返回結構化的JSON數據
可用資源
database_schema:提供數據庫架構和表結構信息
知識圖譜
知識圖譜工具會分析項目代碼庫,創建代碼庫的結構化表示:
支持的語言
- Python (.py):提取導入、類、函數和函數調用信息
- JavaScript/TypeScript (.js, .ts, .jsx, .tsx):提取ES6/CommonJS導入、類、函數和調用信息
- Java (.java):提取導入、類、方法和方法調用信息
輸出格式
知識圖譜以 .kg.json 文件的形式保存在項目根目錄下,包含以下內容:
{
"t": "Project tree structure as text",
"f": [
{
"f": "relative/file/path",
"i": ["import1", "import2"],
"c": ["Class1", "Class2"],
"fn": ["function1", "function2"],
"ca": ["call1", "call2"]
}
]
}
使用方法
- 自動排除構建目錄、node_modules和生成的文件
- 需要先初始化項目(與其他工具相同)
- 在運行時生成知識圖譜,不存儲文件
- 可用於代碼分析、依賴關係可視化和項目理解
數據庫架構
initialize 工具會在指定目錄下創建一個SQLite數據庫文件 .project_tracker.db,幷包含完整的SDLC架構:
核心SDLC實體
| 表名 |
字段 |
詳情 |
| Epics Table |
id |
主鍵(自增) |
|
title |
Epic標題(必填) |
|
description |
Epic描述(可選) |
|
status |
Epic狀態('New', 'Open', 'Closed') |
|
created_by |
創建者利益相關者(枚舉類型) |
|
owner |
當前所有者('product') |
|
assigned_to |
分配對象(僅限 'product') |
|
created_at/updated_at |
時間戳 |
|
closed_at |
關閉時間戳 |
|
archived |
布爾標誌,用於軟刪除 |
|
dependencies |
此Epic依賴的Epic ID數組 |
|
dependent_epics |
依賴此Epic的Epic ID數組 |
|
dependencies_resolved |
布爾值,指示所有依賴關係是否都為 'Closed' 狀態 |
|
comment_count |
此Epic的評論數量 |
| User Stories Table |
id |
主鍵(自增) |
|
epic_id |
外鍵,關聯Epics(可選) |
|
title |
用戶故事標題(必填) |
|
description |
用戶故事描述(可選) |
|
acceptance_criteria |
驗收標準(可選) |
|
status |
狀態('New', 'In Progress', 'QA', 'UAT', 'Closed') |
|
created_by/current_owner/assigned_to |
利益相關者分配(枚舉類型) |
|
story_points |
故事點估計(可選) |
|
phase |
階段名稱(可選,可為空) |
|
phase_status |
階段完成狀態(可選,默認為 'New') |
|
created_at/updated_at/qa_at/closed_at |
時間戳 |
|
archived |
布爾標誌,用於軟刪除 |
|
dependencies |
此用戶故事依賴的用戶故事ID數組 |
|
dependent_stories |
依賴此用戶故事的用戶故事ID數組 |
|
dependencies_resolved |
布爾值,指示所有依賴關係是否都為 'Closed' 狀態 |
|
comment_count |
此用戶故事的評論數量 |
| Tasks Table |
id |
主鍵(自增) |
|
user_story_id |
外鍵,關聯用戶故事(可選) |
|
title |
任務標題(必填) |
|
description |
任務描述(可選) |
|
status |
狀態('New', 'In Progress', 'Review', 'Closed') |
|
created_by/current_owner/assigned_to |
利益相關者分配('architect', 'developer') |
|
estimated_hours/actual_hours |
時間跟蹤(可選) |
|
phase |
階段名稱(可選,可為空) |
|
phase_status |
階段完成狀態(可選,默認為 'New') |
|
created_at/updated_at/closed_at |
時間戳 |
|
dependencies_resolved |
布爾值,指示所有依賴關係是否都為 'Closed' 狀態 |
|
comment_count |
此任務的評論數量 |
| Bugs Table |
id |
主鍵(自增) |
|
user_story_id/task_id |
外鍵(可選) |
|
title |
缺陷標題(必填) |
|
description |
缺陷描述(可選) |
|
severity |
嚴重級別('Critical', 'High', 'Medium', 'Low') |
|
status |
狀態('Open', 'In Progress', 'Review', 'Fixed', 'Closed') |
|
reported_by/assigned_to/created_by/current_owner |
利益相關者分配(枚舉類型) |
|
phase |
階段名稱(可選,可為空) |
|
phase_status |
階段完成狀態(可選,默認為 'Open') |
|
created_at/updated_at/fixed_at/closed_at |
時間戳 |
|
comment_count |
此缺陷的評論數量 |
| Test Cases Table |
id |
主鍵(自增) |
|
user_story_id |
外鍵,關聯用戶故事(可選) |
|
title |
測試用例標題(必填) |
|
description/preconditions/steps/expected_result |
測試詳情 |
|
status |
狀態('New', 'Passed', 'Failed') |
|
created_by/current_owner/assigned_to |
利益相關者分配('tester', 'productmanager') |
|
phase |
階段名稱(可選,可為空) |
|
phase_status |
階段完成狀態(可選,默認為 'New') |
|
created_at/updated_at/last_run_at/last_run_by |
時間戳 |
|
comment_count |
此測試用例的評論數量 |
| Story Dependencies Table |
id |
主鍵(自增) |
|
dependent_story_id |
外鍵,關聯用戶故事(依賴其他故事的故事) |
|
dependency_story_id |
外鍵,關聯用戶故事(被依賴的故事) |
|
created_at |
依賴關係創建時間戳 |
|
created_by |
創建依賴關係的利益相關者 |
|
Constraints |
無自依賴關係,無重複依賴關係,級聯刪除 |
| Epic Dependencies Table |
id |
主鍵(自增) |
|
dependent_epic_id |
外鍵,關聯Epics(依賴其他Epic的Epic) |
|
dependency_epic_id |
外鍵,關聯Epics(被依賴的Epic) |
|
created_at |
依賴關係創建時間戳 |
|
created_by |
創建依賴關係的利益相關者 |
|
Constraints |
無自依賴關係,無重複依賴關係,級聯刪除 |
| Task Dependencies Table |
id |
主鍵(自增) |
|
dependent_task_id |
外鍵,關聯任務(依賴其他任務的任務) |
|
dependency_task_id |
外鍵,關聯任務(被依賴的任務) |
|
created_at |
依賴關係創建時間戳 |
|
created_by |
創建依賴關係的利益相關者 |
|
Constraints |
無自依賴關係,無重複依賴關係,級聯刪除,同一用戶故事驗證 |
| Comments Table |
id |
主鍵(自增) |
|
entity_type |
實體類型('epic', 'user_story', 'task', 'bug', 'test_case') |
|
entity_id |
外鍵,關聯實體 |
|
comment_text |
評論內容(必填) |
|
author |
評論作者利益相關者(枚舉類型) |
|
created_at/updated_at |
時間戳 |
| Wiki Pages Table |
id |
主鍵(自增) |
|
title |
Wiki頁面標題(必填,唯一) |
|
content |
Markdown內容(必填) |
|
category |
類別分類('technical', 'process', 'requirements', 'architecture', 'other') |
|
tags |
用於組織的標籤字符串數組 |
|
created_by/updated_by |
創建/更新頁面的利益相關者 |
|
created_at/updated_at |
時間戳 |
| Wiki Links Table |
id |
主鍵(自增) |
|
wiki_page_id |
外鍵,關聯Wiki頁面 |
|
entity_type |
鏈接的實體類型('epic', 'user_story', 'task', 'bug', 'test_case') |
|
entity_id |
外鍵,關聯鏈接的實體 |
|
created_at |
鏈接創建時間戳 |
|
created_by |
創建鏈接的利益相關者 |
審計跟蹤表
- 所有權轉換:跟蹤所有利益相關者之間的所有權變更
- 狀態轉換:跟蹤所有狀態變更,並記錄時間戳和執行者
索引
- 所有外鍵和常用過濾列上的性能索引
- 用於高效實體類型查詢的複合索引
- 用於快速基於實體過濾的評論實體索引
SDLC工作流
服務器實現了完整的軟件開發生命週期,並確保利益相關者的正確所有權:
實體狀態與轉換
- Epics:New → Open → Closed(由產品經理負責)
- 用戶故事:New → In Progress → QA → UAT → Closed(產品經理 → 架構師 → 開發人員 → 測試人員 → 產品經理)
- 驗證:在沒有驗收標準和測試用例的情況下,不能將狀態改為 '進行中'
- 任務:New → In Progress → Review → Closed(架構師 → 開發人員 → 架構師)
- 缺陷:Open → In Progress → Review → Fixed → Closed(任何利益相關者都可能參與)
- 驗證:只能從 '進行中' 狀態設置為 '審核中',不能直接跳轉到 '已修復' 狀態
- 測試用例:New, Passed, Failed(測試人員 → 產品經理 → 測試人員)
利益相關者
- productmanager:產品管理
- programmanager:項目管理
- architect:解決方案架構
- developer:開發團隊
- tester:質量保證
故事依賴關係
故事可以依賴其他故事,以模擬複雜的項目關係:
- 多對多關係:一個故事可以依賴多個故事,多個故事也可以依賴一個故事
- 依賴驗證:防止循環依賴和自依賴
- 智能排序:
list_user_stories 接口會首先返回依賴關係最少的故事
- 批量管理:可以在單個操作中添加/刪除多個故事的依賴關係
- 可視化指示:UI中顯示依賴計數,並提供可點擊的鏈接
Epic依賴關係
Epics可以依賴其他Epics,以模擬複雜的項目關係:
- 多對多關係:一個Epic可以依賴多個Epics,多個Epics也可以依賴一個Epic
- 依賴驗證:防止循環依賴和自依賴
- 批量管理:可以在單個操作中添加/刪除多個Epics的依賴關係
- 可視化指示:UI中顯示依賴計數,並提供可點擊的鏈接
- API支持:提供完整的REST API支持Epic依賴關係管理
任務依賴關係
任務可以依賴同一用戶故事中的其他任務,以模擬任務執行順序:
- 同一用戶故事約束:任務只能依賴同一用戶故事中的其他任務
- 依賴驗證:防止循環依賴、自依賴和跨故事依賴
- 批量管理:可以在單個操作中添加/刪除多個任務的依賴關係
- 可視化指示:UI中顯示依賴計數,並提供可點擊的鏈接
- API支持:提供完整的MCP API支持任務依賴關係管理
依賴關係解決狀態
所有列表操作(list_epics, list_user_stories, list_tasks)都包含一個 dependencies_resolved 布爾字段,用於指示實體的所有依賴關係是否都處於 'Closed' 狀態:
- 動態計算:在列出實體時即時計算
- 過濾支持:所有列表操作都支持
dependencies_resolved 過濾參數
- 工作流可見性:幫助團隊識別可開始工作的實體
- API集成:在MCP工具和REST API端點中均可使用
階段管理
實體可以分配到自定義階段,用於項目組織:
- 階段:自定義階段名稱(例如:"Planning", "Development", "Testing", "Deployment")
- 階段狀態:階段內的當前狀態(例如:"Not Started", "In Progress", "Completed", "Blocked")
- 可選:階段是完全可選的,不影響核心工作流轉換
- 靈活:階段名稱為自由文本,允許自定義特定於項目的階段
- 過濾:所有列表操作都支持按
phase 和 phase_status 參數過濾
- 設置:階段可以在實體創建時設置,也可以通過
update_entity_status 接口更新
用戶故事權限與存檔
用戶故事具有受限的更新權限和存檔功能:
- 內容更新:所有利益相關者都可以更新標題、描述和故事點信息
- 驗收標準:只有產品經理可以更新驗收標準
- 存檔:只有產品經理可以存檔用戶故事,並記錄存檔原因
- 已存檔的故事:默認視圖中隱藏,可通過
include_archived: true 參數訪問
- 審計跟蹤:所有內容和驗收標準的更改都會被完整審計
評論系統
- 任何利益相關者都可以在任何SDLC實體上添加評論
- 支持線程討論和對需求、實現和問題的反饋
- 維護完整的審計跟蹤,記錄作者和時間戳
審計跟蹤
所有所有權和狀態轉換都會記錄在審計表中,以實現完整的可追溯性。
項目文件夾訪問
出於安全原因,MCP服務器需要使用項目目錄路徑進行顯式初始化。在使用其他工具之前,必須首先調用 initialize 工具,並提供當前工作目錄的路徑。
示例用法
連接到MCP客戶端後,你可以執行以下操作:
數據庫初始化
- "使用路徑 '/Users/username/my-project' 初始化數據庫"
Epic管理
- "創建Epics:'用戶認證系統' 和 '支付處理'"
- "列出所有打開的Epics"
用戶故事創建
- "為Epic 1創建用戶故事:'作為用戶,我希望使用電子郵件/密碼登錄'(5個故事點)和 '作為用戶,我希望重置我的密碼'(3個故事點)"(注意:Epic ID會進行驗證 - 無效引用會返回清晰的錯誤消息)
- "為Epic 1創建帶有階段的用戶故事:'實現用戶儀表盤'(8個故事點),階段為 'Development',階段狀態為 'Planning'"
- "列出分配給開發人員且正在進行中的用戶故事"
- "列出處於 'Development' 階段的用戶故事"
任務分解
- "為用戶故事1創建任務:'實現密碼哈希'(4小時)和 '創建登錄界面'(6小時),並分配給開發人員"(注意:用戶故事引用會進行驗證)
- "為用戶故事1創建帶有階段的任務:'編寫單元測試'(3小時),階段為 'Testing',階段狀態為 'Not Started'"
- "列出正在進行中的任務"
- "列出處於 'Testing' 階段且狀態為 'Not Started' 的任務"
- "將任務1的狀態更新為 '已關閉'"
- "將任務2的階段更新為 'Testing',階段狀態更新為 '進行中'"
故事依賴關係
- "添加依賴關係:故事2依賴於故事1,故事3依賴於故事2"
- "移除依賴關係:故事3不再依賴於故事