MCP Todo服务器
一个模型上下文协议(MCP)服务器,使用SQLite和Drizzle ORM提供待办事项列表管理功能。
特性
- 创建、阅读、更新和删除待办事项
- 将待办事项标记为已完成
- 按完成状态和优先级筛选待办事项
- 优先级:低、中、高
- 具有自动初始化功能的SQLite数据库
安装
- 安装依赖项:
pnpm install- 运行数据库迁移:
pnpm db:migrate- 构建项目:
pnpm build用法
发展
pnpm dev生产
pnpm start可用工具
MCP服务器公开了以下可供MCP客户端使用的工具:
create_todo
创建一个新的待办事项。
参数:
title(string,必填):待办事项的标题description(字符串,可选):详细描述priority(枚举,可选):优先级-“低”、“中”或“高”(默认值:“中”)
list_todos
列出待办事项,并可选择过滤。
参数:
completed(布尔值,可选):按完成状态筛选priority(枚举,可选):按优先级筛选-“低”、“中”或“高”limit(number,可选):返回的最大待办事项数(默认值:20,最大值:100)
get_todo
通过ID获取特定待办事项。
参数:
id(number,必填):要检索的todo的ID
update_todo
更新现有待办事项。
参数:
id(数字,必填):要更新的待办事项的IDtitle(字符串,可选):新标题description(字符串,可选):新描述completed(布尔值,可选):完成状态priority(枚举,可选):新的优先级
delete_todo
按ID删除待办事项。
参数:
id(数字,必填):要删除的待办事项的ID
complete_todo
将待办事项标记为已完成。
参数:
id(数字,必填):标记为已完成的待办事项的ID
数据库模式
服务器使用具有以下模式的SQLite数据库:
CREATE TABLE todos (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
description TEXT,
completed INTEGER DEFAULT 0,
priority TEXT DEFAULT 'medium',
created_at TEXT DEFAULT (datetime('now')),
updated_at TEXT DEFAULT (datetime('now'))
);MCP客户端使用示例
以下是如何将此服务器与MCP客户端一起使用:
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
const transport = new StdioClientTransport({
command: "node",
args: ["dist/index.js"],
});
const client = new Client({
name: "todo-client",
version: "1.0.0",
});
await client.connect(transport);
// Create a todo
await client.callTool({
name: "create_todo",
arguments: {
title: "Buy groceries",
description: "Milk, eggs, bread",
priority: "high",
},
});
// List all todos
await client.callTool({
name: "list_todos",
arguments: {},
});文件
src/index.ts-主MCP服务器实现src/db/schema.ts-数据库架构定义src/db/index.ts-数据库连接和初始化drizzle.config.ts-喷淋ORM配置
发展
服务器使用:
- 模型上下文协议SDK 用于MCP功能
- 淋ORM 用于数据库操作
- 更好平方3 用于SQLite数据库
- 萨德 用于参数验证
- TypeScript 用于类型安全
数据库文件(todos.db)将在服务器启动时自动创建。
