TODO列表MCP服务器
一个模型上下文协议(MCP)服务器,为PostgreSQL后端的TODO项提供CRUD操作。服务器从转发的标头中提取用户信息,并为每个用户存储TODO项目。
特性
- ✅ 创建、读取、更新、删除TODO项目
- 🔍 按状态、优先级和文本搜索和筛选TODO
- 📊 获取TODO统计数据和完成率
- 🏷️ 优先级(低、中、高)
- 📅 到期日支持
- 👤 用户特定的TODO列表(从标题中提取)
- 🔗 TODO项目的资源链接
- 📝 TODO创建的提示模板
先决条件
- Node.js 18+
- PostgreSQL数据库
- npm或纱线
安装
- 克隆存储库:
git clone
cd go-mcp-todo-list- 安装依赖项:
npm install- 设置环境变量:
cp env.example .env编辑 .env 使用您的数据库配置:
DATABASE_URL=postgresql://username:password@localhost:5432/todo_db
PORT=3000
DB_POOL_MIN=2
DB_POOL_MAX=10- 创建PostgreSQL数据库:
CREATE DATABASE todo_db;用法
发展
npm run dev生产
npm run build
npm start服务器将在端口3000(或您的 .env 文件)。
API终点
MCP端点
POST /mcp-主MCP协议端点DELETE /mcp-清理会议
健康检查
GET /health-服务器运行状况
MCP工具
1.创建TODO
{
"method": "tools/call",
"params": {
"name": "create-todo",
"arguments": {
"title": "Buy groceries",
"description": "Milk, bread, eggs",
"priority": "medium",
"due_date": "2024-01-15T18:00:00Z"
}
}
}2.列出待办事项
{
"method": "tools/call",
"params": {
"name": "list-todos",
"arguments": {
"completed": false,
"priority": "high",
"search": "groceries",
"limit": 10,
"offset": 0
}
}
}3.获得一切
{
"method": "tools/call",
"params": {
"name": "get-todo",
"arguments": {
"id": "todo-id-here"
}
}
}4.更新一切
{
"method": "tools/call",
"params": {
"name": "update-todo",
"arguments": {
"id": "todo-id-here",
"title": "Updated title",
"completed": true,
"priority": "high"
}
}
}5.完成TODO
{
"method": "tools/call",
"params": {
"name": "complete-todo",
"arguments": {
"id": "todo-id-here"
}
}
}6.删除一切
{
"method": "tools/call",
"params": {
"name": "delete-todo",
"arguments": {
"id": "todo-id-here"
}
}
}7.获取统计数据
{
"method": "tools/call",
"params": {
"name": "get-todo-stats",
"arguments": {}
}
}8.获取资源
{
"method": "tools/call",
"params": {
"name": "get-todo-resources",
"arguments": {
"completed": false,
"limit": 5
}
}
}MCP提示
创建TODO模板
{
"method": "prompts/get",
"params": {
"name": "create-todo-template",
"arguments": {
"title": "New task",
"description": "Task description",
"priority": "medium",
"due_date": "2024-01-15"
}
}
}MCP资源
读取TODO资源
{
"method": "resources/read",
"params": {
"uri": "todo://todo-id-here"
}
}读取统计资源
{
"method": "resources/read",
"params": {
"uri": "todo://stats"
}
}用户认证
服务器从以下标头中提取用户信息:
X-Forwarded-User-用户IDX-Forwarded-Email-用户电子邮件X-Forwarded-Name-用户名
如果不提供这些标头,服务器将使用默认匿名值。
数据库模式
服务器会自动创建下表:
CREATE TABLE todo_items (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
title VARCHAR(255) NOT NULL,
description TEXT,
completed BOOLEAN DEFAULT FALSE,
priority VARCHAR(10) CHECK (priority IN ('low', 'medium', 'high')) DEFAULT 'medium',
due_date TIMESTAMP,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
user_id VARCHAR(255) NOT NULL,
user_email VARCHAR(255) NOT NULL,
user_name VARCHAR(255) NOT NULL
);会话管理
服务器支持基于会话的连接:
- 包含
mcp-session-id会话持久性标头 - DELETE请求时会自动清理会话
- 每个会话都会共享数据库连接
错误处理
服务器返回标准JSON-RPC 2.0错误响应:
-32601-未找到方法-32603-内部错误-32000-会话未初始化
发展
建筑
npm run build测试
npm testTypeScript
该项目是用TypeScript编写的,启用了严格的类型检查。
许可证
MIT许可证
