api.html•36.4 kB
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>API 文档 - Memory Bank</title>
<link rel="stylesheet" href="lib/bootstrap/bootstrap.min.css">
<link rel="stylesheet" href="lib/highlight/github.min.css">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-primary">
<div class="container">
<a class="navbar-brand" href="/">Memory Bank MCP 服务器</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item">
<a class="nav-link" href="index.html">首页</a>
</li>
<li class="nav-item">
<a class="nav-link" href="projects.html">项目管理</a>
</li>
<li class="nav-item">
<a class="nav-link" href="tutorial.html">使用教程</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="api.html">API 文档</a>
</li>
<li class="nav-item">
<a class="nav-link" href="about.html">关于</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container mt-5">
<div class="row">
<div class="col-lg-3">
<div class="sticky-top pt-4">
<div class="list-group">
<a href="#rest-api" class="list-group-item list-group-item-action">REST API</a>
<a href="#project-api" class="list-group-item list-group-item-action">项目管理接口</a>
<a href="#document-api" class="list-group-item list-group-item-action">文档管理接口</a>
<a href="#rule-api" class="list-group-item list-group-item-action">规则管理接口</a>
<a href="#mcp-api" class="list-group-item list-group-item-action">MCP 工具接口</a>
<a href="#van-api" class="list-group-item list-group-item-action">VAN 模式接口</a>
<a href="#plan-api" class="list-group-item list-group-item-action">PLAN 模式接口</a>
<a href="#creative-api" class="list-group-item list-group-item-action">CREATIVE 模式接口</a>
<a href="#implement-api" class="list-group-item list-group-item-action">IMPLEMENT 模式接口</a>
<a href="#reflect-api" class="list-group-item list-group-item-action">REFLECT 模式接口</a>
<a href="#archive-api" class="list-group-item list-group-item-action">ARCHIVE 模式接口</a>
</div>
</div>
</div>
<div class="col-lg-9">
<div class="card shadow-sm mb-5">
<div class="card-body">
<h1 class="mb-4">API 文档</h1>
<section id="rest-api" class="mb-5">
<h2>REST API 概览</h2>
<p>Memory Bank MCP 服务器提供了一套完整的 REST API,用于管理项目、文档和规则。所有 API 都返回 JSON 格式的响应,遵循一致的响应格式。</p>
<h4>响应格式</h4>
<div class="code-example">
<pre><code class="language-javascript">{
"status": "success", // 或 "error"
"data": {
// 返回的数据
},
"message": "操作成功" // 或错误信息
}</code></pre>
</div>
<h4>错误处理</h4>
<p>当 API 请求失败时,返回的响应将包含错误信息:</p>
<div class="code-example">
<pre><code class="language-javascript">{
"status": "error",
"message": "详细的错误信息",
"code": "ERROR_CODE" // 错误代码
}</code></pre>
</div>
</section>
<section id="project-api" class="mb-5">
<h2>项目管理接口</h2>
<div class="api-method">
<h3>
<span class="method-badge method-get">GET</span>
<span class="endpoint">/api/projects</span>
</h3>
<p>获取所有项目列表</p>
<div class="api-params">
<h5>请求参数</h5>
<p>无</p>
</div>
<div class="api-example">
<h5>请求示例</h5>
<div class="code-example">
<pre><code class="language-javascript">fetch('/api/projects')
.then(response => response.json())
.then(data => console.log(data));</code></pre>
</div>
<h5>响应示例</h5>
<div class="code-example">
<pre><code class="language-javascript">{
"status": "success",
"data": [
{
"id": "project-123",
"name": "示例项目",
"description": "这是一个示例项目",
"createdAt": "2023-11-30T08:15:30Z",
"updatedAt": "2023-11-30T10:22:45Z"
},
{
"id": "project-456",
"name": "测试项目",
"description": "用于测试的项目",
"createdAt": "2023-11-29T14:25:10Z",
"updatedAt": "2023-11-29T16:30:22Z"
}
]
}</code></pre>
</div>
</div>
</div>
<div class="api-method">
<h3>
<span class="method-badge method-post">POST</span>
<span class="endpoint">/api/projects</span>
</h3>
<p>创建新项目</p>
<div class="api-params">
<h5>请求参数</h5>
<ul>
<li><code>name</code> (必填) - 项目名称</li>
<li><code>description</code> (可选) - 项目描述</li>
</ul>
</div>
<div class="api-example">
<h5>请求示例</h5>
<div class="code-example">
<pre><code class="language-javascript">fetch('/api/projects', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: '新项目',
description: '这是一个新项目'
})
})
.then(response => response.json())
.then(data => console.log(data));</code></pre>
</div>
<h5>响应示例</h5>
<div class="code-example">
<pre><code class="language-javascript">{
"status": "success",
"data": {
"id": "project-789",
"name": "新项目",
"description": "这是一个新项目",
"createdAt": "2023-12-01T09:45:12Z",
"updatedAt": "2023-12-01T09:45:12Z",
"documents": [
"projectbrief.md",
"tasks.md",
"activeContext.md"
]
}
}</code></pre>
</div>
</div>
</div>
<div class="api-method">
<h3>
<span class="method-badge method-get">GET</span>
<span class="endpoint">/api/projects/:id</span>
</h3>
<p>获取项目详情</p>
<div class="api-params">
<h5>路径参数</h5>
<ul>
<li><code>id</code> - 项目ID</li>
</ul>
</div>
<div class="api-example">
<h5>请求示例</h5>
<div class="code-example">
<pre><code class="language-javascript">fetch('/api/projects/project-123')
.then(response => response.json())
.then(data => console.log(data));</code></pre>
</div>
<h5>响应示例</h5>
<div class="code-example">
<pre><code class="language-javascript">{
"status": "success",
"data": {
"id": "project-123",
"name": "示例项目",
"description": "这是一个示例项目",
"createdAt": "2023-11-30T08:15:30Z",
"updatedAt": "2023-11-30T10:22:45Z"
}
}</code></pre>
</div>
</div>
</div>
<div class="api-method">
<h3>
<span class="method-badge method-put">PUT</span>
<span class="endpoint">/api/projects/:id</span>
</h3>
<p>更新项目</p>
<div class="api-params">
<h5>路径参数</h5>
<ul>
<li><code>id</code> - 项目ID</li>
</ul>
<h5>请求参数</h5>
<ul>
<li><code>name</code> (可选) - 新项目名称</li>
<li><code>description</code> (可选) - 新项目描述</li>
</ul>
</div>
<div class="api-example">
<h5>请求示例</h5>
<div class="code-example">
<pre><code class="language-javascript">fetch('/api/projects/project-123', {
method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: '更新的项目名称',
description: '更新的项目描述'
})
})
.then(response => response.json())
.then(data => console.log(data));</code></pre>
</div>
<h5>响应示例</h5>
<div class="code-example">
<pre><code class="language-javascript">{
"status": "success",
"data": {
"id": "project-123",
"name": "更新的项目名称",
"description": "更新的项目描述",
"updatedAt": "2023-12-01T11:30:25Z"
}
}</code></pre>
</div>
</div>
</div>
<div class="api-method">
<h3>
<span class="method-badge method-delete">DELETE</span>
<span class="endpoint">/api/projects/:id</span>
</h3>
<p>删除项目</p>
<div class="api-params">
<h5>路径参数</h5>
<ul>
<li><code>id</code> - 项目ID</li>
</ul>
</div>
<div class="api-example">
<h5>请求示例</h5>
<div class="code-example">
<pre><code class="language-javascript">fetch('/api/projects/project-123', {
method: 'DELETE'
})
.then(response => response.json())
.then(data => console.log(data));</code></pre>
</div>
<h5>响应示例</h5>
<div class="code-example">
<pre><code class="language-javascript">{
"status": "success",
"data": {
"success": true,
"message": "项目删除成功"
}
}</code></pre>
</div>
</div>
</div>
</section>
<section id="document-api" class="mb-5">
<h2>文档管理接口</h2>
<div class="api-method">
<h3>
<span class="method-badge method-get">GET</span>
<span class="endpoint">/api/projects/:projectId/documents</span>
</h3>
<p>获取项目文档列表</p>
<div class="api-params">
<h5>路径参数</h5>
<ul>
<li><code>projectId</code> - 项目ID</li>
</ul>
</div>
<div class="api-example">
<h5>请求示例</h5>
<div class="code-example">
<pre><code class="language-javascript">fetch('/api/projects/project-123/documents')
.then(response => response.json())
.then(data => console.log(data));</code></pre>
</div>
<h5>响应示例</h5>
<div class="code-example">
<pre><code class="language-javascript">{
"status": "success",
"data": [
{
"id": "doc-001",
"name": "projectbrief.md",
"type": "projectbrief",
"updatedAt": "2023-11-30T09:20:15Z"
},
{
"id": "doc-002",
"name": "tasks.md",
"type": "tasks",
"updatedAt": "2023-11-30T10:15:30Z"
},
{
"id": "doc-003",
"name": "activeContext.md",
"type": "activeContext",
"updatedAt": "2023-11-30T11:05:45Z"
}
]
}</code></pre>
</div>
</div>
</div>
<div class="api-method">
<h3>
<span class="method-badge method-get">GET</span>
<span class="endpoint">/api/projects/:projectId/documents/:type</span>
</h3>
<p>获取文档内容</p>
<div class="api-params">
<h5>路径参数</h5>
<ul>
<li><code>projectId</code> - 项目ID</li>
<li><code>type</code> - 文档类型</li>
</ul>
</div>
<div class="api-example">
<h5>请求示例</h5>
<div class="code-example">
<pre><code class="language-javascript">fetch('/api/projects/project-123/documents/tasks')
.then(response => response.json())
.then(data => console.log(data));</code></pre>
</div>
<h5>响应示例</h5>
<div class="code-example">
<pre><code class="language-javascript">{
"status": "success",
"data": {
"id": "doc-002",
"name": "tasks.md",
"content": "# 任务列表\n\n## 待办任务\n- [ ] [高] 实现用户认证\n- [ ] [中] 添加日志记录\n\n## 进行中任务\n- [-] 完善错误处理 (60%)\n\n## 已完成任务\n- [x] 设计数据模型\n- [x] 创建项目结构",
"type": "tasks",
"updatedAt": "2023-11-30T10:15:30Z",
"html": "<h1>任务列表</h1>..."
}
}</code></pre>
</div>
</div>
</div>
<div class="api-method">
<h3>
<span class="method-badge method-put">PUT</span>
<span class="endpoint">/api/projects/:projectId/documents/:type</span>
</h3>
<p>更新文档内容</p>
<div class="api-params">
<h5>路径参数</h5>
<ul>
<li><code>projectId</code> - 项目ID</li>
<li><code>type</code> - 文档类型</li>
</ul>
<h5>请求参数</h5>
<ul>
<li><code>content</code> (必填) - 文档内容</li>
</ul>
</div>
<div class="api-example">
<h5>请求示例</h5>
<div class="code-example">
<pre><code class="language-javascript">fetch('/api/projects/project-123/documents/tasks', {
method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
content: "# 任务列表\n\n## 待办任务\n- [ ] [高] 实现用户认证\n- [ ] [中] 添加日志记录\n- [ ] [低] 优化性能\n\n## 进行中任务\n- [-] 完善错误处理 (60%)\n\n## 已完成任务\n- [x] 设计数据模型\n- [x] 创建项目结构"
})
})
.then(response => response.json())
.then(data => console.log(data));</code></pre>
</div>
<h5>响应示例</h5>
<div class="code-example">
<pre><code class="language-javascript">{
"status": "success",
"data": {
"id": "doc-002",
"name": "tasks.md",
"type": "tasks",
"updatedAt": "2023-12-01T14:25:45Z",
"message": "文档更新成功"
}
}</code></pre>
</div>
</div>
</div>
</section>
<div class="text-center my-5">
<button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#moreApiDocs" aria-expanded="false">
查看更多API文档
</button>
</div>
<div class="collapse" id="moreApiDocs">
<section id="rule-api" class="mb-5">
<h2>规则管理接口</h2>
<p>规则管理接口用于创建、查询、更新和删除项目规则,包括全局规则和项目特定规则。</p>
<div class="api-method">
<h3>
<span class="method-badge method-get">GET</span>
<span class="endpoint">/api/projects/:projectId/rules</span>
</h3>
<p>获取项目规则列表</p>
<div class="api-params">
<h5>路径参数</h5>
<ul>
<li><code>projectId</code> - 项目ID</li>
</ul>
</div>
<div class="api-example">
<h5>请求示例</h5>
<div class="code-example">
<pre><code class="language-javascript">fetch('/api/projects/project-123/rules')
.then(response => response.json())
.then(data => console.log(data));</code></pre>
</div>
<h5>响应示例</h5>
<div class="code-example">
<pre><code class="language-javascript">{
"success": true,
"data": [
{
"id": "rule-001",
"name": "命名规范",
"description": "项目命名规范",
"content": "所有类名使用PascalCase,变量和方法使用camelCase",
"type": "coding",
"scope": "project",
"priority": "high",
"createdAt": "2023-11-30T09:15:30Z",
"updatedAt": "2023-11-30T09:15:30Z"
},
{
"id": "rule-002",
"name": "提交规范",
"description": "Git提交规范",
"content": "提交信息格式:[类型] 描述,类型包括feat, fix, docs, style等",
"type": "workflow",
"scope": "project",
"priority": "medium",
"createdAt": "2023-11-30T10:20:15Z",
"updatedAt": "2023-11-30T10:20:15Z"
}
]
}</code></pre>
</div>
</div>
</div>
<div class="api-method">
<h3>
<span class="method-badge method-get">GET</span>
<span class="endpoint">/api/rules/:id</span>
</h3>
<p>获取规则详情</p>
<div class="api-params">
<h5>路径参数</h5>
<ul>
<li><code>id</code> - 规则ID</li>
</ul>
</div>
<div class="api-example">
<h5>请求示例</h5>
<div class="code-example">
<pre><code class="language-javascript">fetch('/api/rules/rule-001')
.then(response => response.json())
.then(data => console.log(data));</code></pre>
</div>
<h5>响应示例</h5>
<div class="code-example">
<pre><code class="language-javascript">{
"success": true,
"data": {
"id": "rule-001",
"name": "命名规范",
"description": "项目命名规范",
"content": "所有类名使用PascalCase,变量和方法使用camelCase",
"type": "coding",
"scope": "project",
"projectId": "project-123",
"priority": "high",
"createdAt": "2023-11-30T09:15:30Z",
"updatedAt": "2023-11-30T09:15:30Z"
}
}</code></pre>
</div>
</div>
</div>
<div class="api-method">
<h3>
<span class="method-badge method-post">POST</span>
<span class="endpoint">/api/rules</span>
</h3>
<p>创建新规则</p>
<div class="api-params">
<h5>请求参数</h5>
<ul>
<li><code>name</code> (必填) - 规则名称</li>
<li><code>description</code> (可选) - 规则描述</li>
<li><code>content</code> (必填) - 规则内容</li>
<li><code>type</code> (必填) - 规则类型(如coding, workflow, documentation等)</li>
<li><code>scope</code> (必填) - 规则范围(global或project)</li>
<li><code>projectId</code> (当scope为project时必填) - 项目ID</li>
<li><code>priority</code> (可选) - 规则优先级(high, medium, low)</li>
</ul>
</div>
<div class="api-example">
<h5>请求示例</h5>
<div class="code-example">
<pre><code class="language-javascript">fetch('/api/rules', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: "代码审查规则",
description: "代码审查标准和流程",
content: "每个PR必须至少有一名审查者审核通过才能合并",
type: "workflow",
scope: "project",
projectId: "project-123",
priority: "high"
})
})
.then(response => response.json())
.then(data => console.log(data));</code></pre>
</div>
<h5>响应示例</h5>
<div class="code-example">
<pre><code class="language-javascript">{
"success": true,
"data": {
"id": "rule-003",
"name": "代码审查规则",
"description": "代码审查标准和流程",
"content": "每个PR必须至少有一名审查者审核通过才能合并",
"type": "workflow",
"scope": "project",
"projectId": "project-123",
"priority": "high",
"createdAt": "2023-12-01T14:30:25Z",
"updatedAt": "2023-12-01T14:30:25Z"
}
}</code></pre>
</div>
</div>
</div>
<div class="api-method">
<h3>
<span class="method-badge method-put">PUT</span>
<span class="endpoint">/api/rules/:id</span>
</h3>
<p>更新规则</p>
<div class="api-params">
<h5>路径参数</h5>
<ul>
<li><code>id</code> - 规则ID</li>
</ul>
<h5>请求参数</h5>
<ul>
<li><code>name</code> (可选) - 规则名称</li>
<li><code>description</code> (可选) - 规则描述</li>
<li><code>content</code> (可选) - 规则内容</li>
<li><code>type</code> (可选) - 规则类型</li>
<li><code>priority</code> (可选) - 规则优先级</li>
</ul>
</div>
<div class="api-example">
<h5>请求示例</h5>
<div class="code-example">
<pre><code class="language-javascript">fetch('/api/rules/rule-001', {
method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: "更新的命名规范",
content: "所有类名使用PascalCase,变量和方法使用camelCase,常量使用UPPER_SNAKE_CASE",
priority: "high"
})
})
.then(response => response.json())
.then(data => console.log(data));</code></pre>
</div>
<h5>响应示例</h5>
<div class="code-example">
<pre><code class="language-javascript">{
"success": true,
"data": {
"id": "rule-001",
"name": "更新的命名规范",
"description": "项目命名规范",
"content": "所有类名使用PascalCase,变量和方法使用camelCase,常量使用UPPER_SNAKE_CASE",
"type": "coding",
"scope": "project",
"projectId": "project-123",
"priority": "high",
"updatedAt": "2023-12-01T15:45:10Z"
}
}</code></pre>
</div>
</div>
</div>
<div class="api-method">
<h3>
<span class="method-badge method-delete">DELETE</span>
<span class="endpoint">/api/rules/:id</span>
</h3>
<p>删除规则</p>
<div class="api-params">
<h5>路径参数</h5>
<ul>
<li><code>id</code> - 规则ID</li>
</ul>
</div>
<div class="api-example">
<h5>请求示例</h5>
<div class="code-example">
<pre><code class="language-javascript">fetch('/api/rules/rule-001', {
method: 'DELETE'
})
.then(response => response.json())
.then(data => console.log(data));</code></pre>
</div>
<h5>响应示例</h5>
<div class="code-example">
<pre><code class="language-javascript">{
"success": true,
"data": {
"success": true,
"message": "规则删除成功"
}
}</code></pre>
</div>
</div>
</div>
</section>
<section id="mcp-api" class="mb-5">
<h2>MCP 工具接口</h2>
<p>Memory Bank MCP 服务器提供了一套符合 Model Context Protocol 协议的工具接口,可被大模型直接调用。</p>
</section>
<section id="van-api" class="mb-5">
<h2>VAN 模式接口</h2>
<p>VAN 模式接口用于项目验证与初始化,确保项目基础设施完备,验证关键文件存在性和完整性。</p>
</section>
</div>
</div>
</div>
</div>
</div>
</div>
<footer class="footer mt-auto py-3 bg-light">
<div class="container text-center">
<p class="mb-1">Memory Bank MCP Server © 2023 版权所有</p>
<p class="mb-0 text-muted">遵循MCP协议,为项目文档管理提供支持</p>
</div>
</footer>
<script src="lib/bootstrap/bootstrap.bundle.min.js"></script>
<script src="lib/highlight/highlight.min.js"></script>
<script src="lib/highlight/javascript.min.js"></script>
<script>
document.addEventListener('DOMContentLoaded', () => {
hljs.highlightAll();
// 平滑滚动
document.querySelectorAll('.list-group-item').forEach(link => {
link.addEventListener('click', (e) => {
e.preventDefault();
const targetId = link.getAttribute('href');
const targetElement = document.querySelector(targetId);
window.scrollTo({
top: targetElement.offsetTop - 100,
behavior: 'smooth'
});
});
});
});
</script>
</body>
</html>