习惯跟踪器MCP服务器
模型上下文协议(MCP)服务器实现,使Claude等AI助手能够通过智能对话跟踪、存储和分析用户习惯和日常活动。
项目目的
本项目旨在帮助理解MCP结构,并作为未来项目的实践。
概述
Habit Tracker MCP Server为AI助手提供了一个结构化的界面,用于与本地习惯跟踪数据库进行交互。用户可以通过与克劳德的自然对话记录日常活动(锻炼、阅读、用水量等),人工智能可以检索和分析这些数据,以提供见解和跟踪能力。
主要特点
- 会话习惯记录:通过与克劳德的自然语言互动添加习惯
- 持久化存储:使用LowDB的基于JSON的本地数据库
- 灵活跟踪:通过可定制的单元支持任何类型的习惯
- 数据检索:通过AI助手查询和分析存储的习惯
- 带时间戳的条目:为每个习惯条目自动记录时间戳
技术架构
核心组件
- MCP 服务器 (
index.js)
- 使用实现模型上下文协议服务器 @modelcontextprotocol/sdk - 处理工具注册和执行 - 通过stdio传输管理与Claude的通信 - 提供两个主要工具: add_habit 和 get_habits
- 数据库层 (
db.js)
- 使用LowDB实现基于JSON的轻量级数据持久化 - 管理 data.json 用于存储习惯的文件 - 通过以下方式提供异步数据库访问 getDb() 功能 - 使用默认结构初始化:习惯数组和用户配置文件
- 数据存储 (
data.json)
- 存储所有习惯条目的JSON文件 - 模式包括:id、名称、金额、单位、日期 - 由LowDB自动创建和管理
技术栈
- 运行时:Node.js(ES模块)
- 框架:模型上下文协议SDK v1.25.3
- 数据库:LowDB v7.0.1(基于JSON文件的数据库)
- 运输:MCP通信的标准I/O(stdio)
可用工具
1.add_habit
在跟踪器中添加新习惯或日常活动。
参数:
name(字符串,必填):活动名称(例如,“饮水”、“运动”、“阅读”)amount(数字,必填):活动的数值unit(字符串,必填):计量单位(例如,“升”、“分钟”、“页”)
示例用法:
User: "I drank 2 liters of water today"
Claude: [Calls add_habit with name="Drinking Water", amount=2, unit="Liters"]
Response: "Successfully saved: 2 Liters Drinking Water"2.获取栖息地
从数据库中检索存储的习惯和活动。
参数:
limit(number,可选):要检索的记录数
示例用法:
User: "Show me my recent habits"
Claude: [Calls get_habits]
Response: Returns JSON array of habit entries with timestamps安装
先决条件
- 已安装Node.js 14+
- npm或yarn包管理器
- Claude桌面应用程序(用于MCP集成)
设置步骤
- 克隆仓库
git clone https://github.com/EnesEfeTokta/Habit-Tracker-MCP.git
cd Habit-Tracker-MCP- 安装依赖项
npm install- 配置Claude桌面
将服务器配置添加到Claude Desktop配置文件中:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"habit-tracker": {
"command": "node",
"args": ["/absolute/path/to/Habit-Tracker-MCP/index.js"]
}
}
}- 重新启动克劳德桌面
关闭并重新打开Claude Desktop以加载MCP服务器。
用法
配置后,与Claude自然互动以跟踪您的习惯:
添加习惯:
- “我今天锻炼了30分钟”
- “记录8杯水”
- “我读了25页书”
检索数据:
- “让我看看我的习惯”
- “我记录了哪些活动?”
- “显示我最近的习惯条目”
Claude将自动使用适当的MCP工具来存储和检索您的数据。
数据结构
习惯输入模式
{
"id": 1234567890,
"name": "Drinking Water",
"amount": 2,
"unit": "Liters",
"date": "2026-02-02T07:00:00.000Z"
}数据库模式
{
"habits": [
// Array of habit entries
],
"userProfile": {
"name": "User"
}
}发展
项目结构
Habit-Tracker-MCP/
├── index.js # Main MCP server implementation
├── db.js # Database layer with LowDB
├── data.json # JSON database file
├── package.json # Node.js dependencies and metadata
├── package-lock.json # Dependency lock file
├── LICENSE # GPL-3.0 License
└── README.md # This file在发展中奔跑
node index.js服务器将启动并输出:“Habit Tracker MCP服务器正在运行!”
扩展服务器
要添加新工具,请执行以下操作:
- 在中注册该工具
ListToolsRequestSchema处理器 - 在中实现工具逻辑
CallToolRequestSchema处理器 - 如果需要,请在中更新数据库架构
db.js
示例-添加删除工具:
// In ListToolsRequestSchema handler
{
name: "delete_habit",
description: "Deletes a habit entry by ID",
inputSchema: {
type: "object",
properties: {
id: { type: "number", description: "ID of the habit to delete" }
},
required: ["id"]
}
}
// In CallToolRequestSchema handler
if (request.params.name === "delete_habit") {
const { id } = request.params.arguments;
const index = db.data.habits.findIndex(h => h.id === id);
if (index !== -1) {
db.data.habits.splice(index, 1);
await db.write();
return { content: [{ type: "text", text: "Habit deleted successfully" }] };
}
return { content: [{ type: "text", text: "Habit not found" }] };
}安全考虑
- 本地存储:所有数据都存储在本地
data.json - 无需认证:这是一个没有身份验证机制的仅本地服务器
- 数据隐私:习惯数据保留在本地计算机上,不会向外传输
- 建议备份:考虑备份
data.json定期
故障排除
服务器未启动
- 确保已安装Node.js:
node --version - 验证是否安装了依赖项:
npm install - 检查端口冲突或权限问题
Claude未检测到服务器
- 验证中的绝对路径
claude_desktop_config.json - 确保配置后重新启动Claude Desktop
- 检查Claude Desktop日志中的错误消息
数据不持久
- 验证项目目录中的写入权限
- 检查是否
data.json正在创建/更新 - 确保在中初始化数据库
db.js正在工作
许可证
此项目根据GNU通用公共许可证v3.0获得许可。请参阅 许可证 文件以获取详细信息。
贡献
欢迎投稿!请随时提交拉取请求。
仓库
了解更多
______________________________________________________________________
*使用模型上下文协议构建,以演示无缝的AI数据库集成。*
