发布看板MCP服务器
   
具有内置线束工程和持久内存的AI原生问题看板-- 每一项已完成的任务都会使下一项任务更快、更安全、更智能。
为什么存在
大多数AI编码代理在没有内存的情况下逐个问题地工作。他们犯同样的错误, 错过同样的边缘案例,忘记同样的陷阱——每一次。
这个项目解决了这个问题。它结合了多界面看板(Web UI、TUI、CLI) 带着一个 主控程序 AI代理连接到的服务器, 一 持久存储器系统 (FTS5全文搜索,BM25排名),a 时态知识图 (具有时间范围有效性的主谓宾语三元组),以及 实施的操作手册 工程利用:结构化质量 门、人在环检查点和复合学习系统 跨问题积累项目知识。
结果:随着时间的推移,你的人工智能代理在你的项目上表现得越来越好-- 而无需你付出任何额外的努力。
运作原理
You create issues ──► AI agent picks them up ──► Quality improves automatically
┌─────────────────────────────────────┐
│ The Compound Loop │
│ │
│ [pending] │
│ │ Load LEARNINGS.md │
│ │ Search memory (BM25) │
│ │ Check past mistakes + context │
│ ▼ │
│ [doing] │
│ │ Research → Implement → Review │
│ │ Two-pass quality gate │
│ ▼ │
│ [finished] │
│ │ Capture learnings ◄── gotchas │
│ │ Store memories ◄── context │
│ │ Knowledge persists │
│ ▼ │
│ ──► Next issue inherits knowledge │
└─────────────────────────────────────┘看板 pending → doing → finished 状态流直接映射到 复合工程循环: Plan → Work → 评估→ 复合物.学习 步骤是使每个循环在最后复合的原因。
快速开始
# Docker (recommended)
docker pull ghcr.io/alexiachen/issue-kanban-mcp:latest
docker run -d -p 9292:9292 -v kanban-data:/app/data ghcr.io/alexiachen/issue-kanban-mcp:latest
# Or build from source
git clone https://github.com/AlexiaChen/issue-kanban-mcp.git
cd issue-kanban-mcp
make build-all # builds server + tui + cli → ./bin/
make run # starts server on :9292打开http://localhost:9292--你在跑。
四个接口,一个后端
| 接口 | 二进制 | 最适合 |
|---|---|---|
| Web用户界面 | (嵌入服务器中) | 浏览器中的可视化看板管理 |
| 文本用户界面 | issue-kanban-tui | 带有键盘导航的终端原生看板 |
| 命令行界面 | issue-kanban-cli | 脚本编写、CI/CD集成、快速操作 |
| 主控程序 | (内置于服务器中) | AI代理(Claude、Copilot、Gemini等) |
所有四个接口都使用相同的REST API和SQLite数据库。1的变化 在其他人身上立即可见。
Web用户界面
打开http://localhost:9292.带有拖放功能的完整看板、项目管理、, 问题创建/编辑、优先级管理和5秒自动刷新。
文本用户界面
./bin/issue-kanban-tui --server http://localhost:9292终端中的三列看板。创建、编辑、删除和确定优先级 在不离开命令行的情况下出现问题。
命令行界面
./bin/issue-kanban-cli projects list
./bin/issue-kanban-cli issues list 1 --status=pending
./bin/issue-kanban-cli issues create 1 --title="Fix auth bug" --priority=high
./bin/issue-kanban-cli issues prioritize 3 # move to frontMCP(用于AI代理)
服务器通过STDIO或HTTP/SSE传输公开16个MCP工具(8个看板+4个内存+4个三元组)和4个MCP资源。 AI代理自主连接和处理问题。
______________________________________________________________________
利用:人工智能质量如何复合
本节解释了当AI代理处理问题时,幕后会发生什么。 您不需要配置任何这些——它内置于代理指令中。
该项目附带了 作战行动手册 (instructions/copilot-instructions.md) 它实现了三层线束工程:
1.质量门(每期)
在将任何问题标记为“已完成”之前,代理会运行 两次通过自我审查:
- 通过1(关键):SQL注入、竞争条件、XSS、未验证的输入,
LLM输出信任边界违规
- 通行证2(信息):死代码、测试缺口、幻数、完整性缺口
机械问题是自动修复的。审判的呼唤归于人类。
2.人在环路检查站
代理人 从不 标记未经人工批准的问题已完成:
Agent: "Issue #42 — review complete."
→ ✅ Mark as finished
→ 🔧 Improvements needed (describe what to change)这不是一个建议,而是工作流程中的一道硬门。
3.知识复合(LEARNINGS.md)
每个问题完成后,代理都会评估所学到的内容:
- 可能重复出现的错误模式
- 图书馆浪费时间
- 基于非显而易见推理的架构决策
- 人类纠正了什么(代理人的盲点)
学习内容记录在 LEARNINGS.md 带有触发关键字。开始之前 这 下一个 问题,代理加载此文件并将关键字与 新一期的标题和描述。相关学习会自动应用。
超过50个问题,这可以防止数小时的重复错误——你无需付出任何努力。
4.持久内存(BM25搜索)
除了基于文件的学习,代理还有 持久存储器系统 由...支持 SQLite FTS5,BM25排名。这提供了一种不同的知识:
| LEARNINGS.md | 存储系统 |
|---|---|
| 错误驱动模式 | 丰富的上下文知识 |
| 关键字触发匹配 | 全文BM25搜索 |
| Git跟踪,人工可编辑 | 数据库存储,可通过MCP查询 |
| 结构化条目(触发器→ 行动) | 自由形式(决定、事实、偏好、事件) |
它们如何在循环中协同工作:
- 每期发行前:代理加载LEARNINGS.md以避免gotcha,并且
搜索内存(memory_search)相关上下文——过去的决策、代码库 事实、用户偏好、架构模式。
- 每期之后:代理在learnings.md中捕获错误驱动的学习
AND存储更广泛的背景(做出的决定、发现的事实、记录的偏好) 通过 memory_store.
存储系统支持6类: decision, fact, event, preference, advice, general --每个都有优先级检索的重要性评分(1-10)。
5.时态知识图(三元组)
代理可以存储和查询 主谓宾语三元组 具有时间语义:
(auth-module, depends_on, jwt-library) valid: 2024-01-01 → ∞ (active)
(auth-module, status, "needs-refactor") valid: 2024-03-15 → 2024-04-01 (superseded)
(auth-module, status, "refactored") valid: 2024-04-01 → ∞ (active)- 时态查询:“3月20日的情况如何?”→ 时间点查找
- 自动失效:与一起储存时
replace_existing=true,老三人组
valid_to 设置为新的三元组 valid_from (交易)
[valid_from, valid_to)语义学:封闭的开放区间防止双重匹配
这为代理提供了一个结构化的、可查询的项目发展模型-- 不仅是现在的真实情况,还有当时的真实情况。
四层知识
| 层 | 文件 | 范围 | 它如何增长 |
|---|---|---|---|
| 知识图 | SQLite数据库(通过MCP) | 每个项目 | 代理存储时间三元组(实体关系) |
| 持久内存 | SQLite数据库(通过MCP) | 每个项目 | 代理在每次问题后存储上下文 |
| 工作记忆 | LEARNINGS.md | 每个项目 | 代理捕获错误驱动的模式 |
| 项目惯例 | AGENTS.md | 每个项目 | 由LEARNINGS.md推广(≥3场比赛) |
| 全球剧本 | ~/.copilot/copilot-instructions.md | 所有项目 | 跨项目模式 |
每次晋升都是人为控制的。代理人提议;你决定。
______________________________________________________________________
安装
Docker(推荐)
docker pull ghcr.io/alexiachen/issue-kanban-mcp:latest
docker run -d \
--name issue-kanban-mcp \
-p 9292:9292 \
-v kanban-data:/app/data \
ghcr.io/alexiachen/issue-kanban-mcp:latest来源
git clone https://github.com/AlexiaChen/issue-kanban-mcp.git
cd issue-kanban-mcp
make build-all # server + tui + cli → ./bin/服务器二进制文件是静态编译的(CGO_ENABLED=0)没有动态依赖关系。
______________________________________________________________________
运行模式
| 模式 | 命令 | 你得到什么 |
|---|---|---|
| HTTP | ./bin/issue-kanban-mcp -mcp=http | Web用户界面+REST API+MCP SSE |
| 工作室 | ./bin/issue-kanban-mcp -mcp=stdio | MCP over stdin/stdout(用于本地AI客户端) |
| 两者皆有 | ./bin/issue-kanban-mcp -mcp=both | 以上所有 |
只读模式(默认)
默认情况下,MCP服务器仅公开 6安全工具: project_list, issue_list, issue_update, memory_search, memory_list, triple_query这意味着AI代理可以读取问题, 更新状态、搜索记忆和查询知识图,但不能创建或删除任何内容。
要公开所有16个工具(包括创建/删除问题、内存和三元组):
./bin/issue-kanban-mcp -readonly=false______________________________________________________________________
MCP集成
克劳德桌面版
添加 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"issue-kanban": {
"command": "/path/to/issue-kanban-mcp",
"args": ["-mcp=stdio", "-db=/path/to/tasks.db"]
}
}
}GitHub Copilot命令行界面
添加 ~/.copilot/mcp-config.json:
STDIO(本地二进制):
{
"mcpServers": {
"issue-kanban": {
"type": "stdio",
"command": "/path/to/issue-kanban-mcp",
"args": ["-mcp=stdio", "-db=/path/to/tasks.db"],
"tools": ["*"]
}
}
}SSE(Docker或远程):
{
"mcpServers": {
"issue-kanban": {
"type": "sse",
"url": "http://localhost:9292/sse",
"tools": ["*"]
}
}
}或者使用交互式设置: copilot mcp add
部署Agent操作手册
为了使复合工程循环发挥作用,部署操作手册:
mkdir -p ~/.copilot
cp instructions/copilot-instructions.md ~/.copilot/copilot-instructions.md然后告诉你的AI代理: *“处理项目X中的所有问题”* --它处理其余的事情。
______________________________________________________________________
MCP工具
看板工具
| 工具 | 参数 | 模式 |
|---|---|---|
project_list | -- | 只读 |
issue_list | project_id, status? | 只读 |
issue_update | task_id, status | 只读 |
project_create | name, description? | 管理员 |
project_delete | project_id | 管理员 |
issue_create | project_id, title, description?, priority? | 管理员 |
issue_delete | task_id | 管理员 |
issue_prioritize | task_id | 管理员 |
内存工具
| 工具 | 参数 | 模式 |
|---|---|---|
memory_search | project_id, query, category?, limit? | 只读 |
memory_list | project_id, category?, limit? | 只读 |
memory_store | project_id, content, category?, summary?, tags?, importance? | 只读 |
memory_delete | project_id, memory_id | 管理员 |
三重工具(时态知识图)
| 工具 | 参数 | 模式 |
|---|---|---|
triple_query | project_id, subject?, predicate?, active_only?, at_time?, limit?, offset? | 只读 |
triple_store | project_id, subject, predicate, object, valid_from?, confidence?, source_memory_id?, replace_existing? | 只读 |
triple_invalidate | project_id, triple_id | 管理员 |
triple_delete | project_id, triple_id | 管理员 |
MCP资源
| URI | 描述 |
|---|---|
project://list | 所有有统计数据的项目 |
project://{id} | 项目详情 |
project://{id}/issues | 项目中的所有问题 |
issue://{id} | 问题详细信息 |
______________________________________________________________________
REST API
项目
| 方法 | 端点 | 描述 |
|---|---|---|
| 得到 | /api/projects | 列出所有项目 |
| 职位 | /api/projects | 创建项目 |
| 得到 | /api/projects/{id} | 获取项目 |
| 删除 | /api/projects/{id} | 删除项目 |
| 得到 | /api/projects/{id}/issues | 获取项目问题 |
| 得到 | /api/projects/{id}/stats | 获取项目统计信息 |
问题
| 方法 | 端点 | 描述 |
|---|---|---|
| 职位 | /api/issues | 创建问题 |
| 得到 | /api/issues/{id} | 获取问题 |
| 补丁 | /api/issues/{id} | 更新状态 |
| PUT | /api/issues/{id} | 编辑问题(仅待定) |
| 删除 | /api/issues/{id} | 删除问题 |
| 职位 | /api/issues/{id}/prioritize | 移到前面 |
回忆
| 方法 | 端点 | 描述 |
|---|---|---|
| 职位 | /api/projects/{id}/memories | 存储内存 |
| 得到 | /api/projects/{id}/memories | 列出回忆(category?, limit?) |
| 得到 | /api/projects/{id}/memories/search | 搜索记忆(q, category?, limit?) |
| 删除 | /api/projects/{id}/memories/{mid} | 删除内存 |
Triples(时态知识图)
| 方法 | 端点 | 描述 |
|---|---|---|
| 职位 | /api/projects/{id}/triples | 三人店(replace_existing? 自动失效) |
| 得到 | /api/projects/{id}/triples/{tid} | 获得三倍 |
| 得到 | /api/projects/{id}/triples | 查询三元组(subject?, predicate?, active_only?, at_time?) |
| 补丁 | /api/projects/{id}/triples/{tid} | 使三元组无效 |
| 删除 | /api/projects/{id}/triples/{tid} | 删除三元组 |
______________________________________________________________________
配置
| 标志/环境变量 | 默认值 | 描述 |
|---|---|---|
-port / PORT | 9292 | HTTP服务器端口 |
-db / DB_PATH | ./data/tasks.db | SQLite数据库路径 |
-mcp / MCP_MODE | http | stdio / http / both |
-readonly / MCP_READONLY | true | false 公开管理MCP工具 |
______________________________________________________________________
项目结构
cmd/
├── server/main.go # MCP + HTTP server
├── tui/main.go # Terminal UI
└── cli/main.go # Command-line interface
internal/
├── api/handlers.go # REST API (23 endpoints)
├── apiclient/client.go # Shared REST client (TUI & CLI)
├── mcp/
│ ├── server.go # MCP server setup
│ ├── tools.go # 16 MCP tools (8 kanban + 4 memory + 4 triple)
│ └── resources.go # 4 MCP resources
├── memory/
│ ├── models.go # Memory data model, categories, DTOs
│ ├── storage.go # Storage interface (6 methods)
│ ├── manager.go # Business logic (validation, dedup, BM25 search)
│ ├── mock_storage.go # Mock for unit tests
│ ├── triple_models.go # Triple (KG) data model, temporal semantics
│ ├── triple_storage.go # TripleStorage interface (6 methods)
│ ├── triple_manager.go # Triple business logic (validation, temporal)
│ └── mock_triple_storage.go # Mock for triple unit tests
├── queue/
│ ├── manager.go # Kanban business logic layer
│ ├── models.go # Project/Issue data models
│ └── mock_storage.go # Mock storage for tests
├── storage/sqlite.go # SQLite (pure Go, no CGO) — implements queue + memory + triple storage
├── tui/ # Bubbletea TUI
└── web/static/ # Embedded SPA
instructions/
└── copilot-instructions.md # Agent operational playbook
AGENTS.md # Project knowledge base
LEARNINGS.md # Compound learning memory______________________________________________________________________
发展
make test # Unit tests (mock storage, no DB required)
make test-coverage # Coverage report (HTML)
make e2e # End-to-end tests (starts server automatically)
make lint # golangci-lint
make fmt # gofmt
make dev # Auto-reload with air示例
make example-stdio # STDIO client demo
make example-client # SSE client demo (start server first with make run)______________________________________________________________________
智力根源
本项目中的线束工程方法来自:
- 复合工程 --这个想法
每个工作单元都应该通过明确的知识捕获使下一个更容易。
- 堆栈 --煮湖(AI制造
完整性低)、构建前搜索、用户主权、证据优先审查。
这些原则直接嵌入代理工作流程中,而不是作为哲学-- 作为操作步骤,代理自动执行。
许可证
麻省理工学院
