项目简介
本项目 'AI待办事项日历助手MCP服务器' 是一个现代化的、AI驱动的待办事项和日历管理应用后端,它实现了 Model Context Protocol (MCP) 协议,能够以标准化的方式向支持MCP协议的LLM客户端提供上下文信息和工具能力。
后端基于Node.js和Express框架,使用TypeScript开发,集成了OpenAI Assistant API和Google Calendar API,前端提供响应式的Web界面。用户可以通过自然语言与AI助手对话,管理待办事项和日历事件,并利用Google日历进行同步。
核心特点:
- MCP协议支持: 实现了MCP服务器的核心功能,可以作为LLM客户端的后端,提供工具注册、执行和上下文管理。
- AI驱动: 使用OpenAI GPT-3.5 Turbo模型,提供智能对话和自然语言处理能力。
- 待办事项管理: 支持添加、删除、列出和切换完成状态的待办事项。
- Google日历集成: 可以同步待办事项到Google日历,并管理日历事件。
- 工具审批系统: 对于敏感操作,需要用户审批,保证安全性。
- 多语言支持: 支持英语和土耳其语。
主要功能点
-
资源管理 (Resources):
- 待办事项 (Todos):通过内置的SQLite数据库管理用户的待办事项,提供增删改查功能。
- 日历事件 (Calendar Events):在本地数据库中管理日历事件,并支持与Google日历同步。
-
工具注册和执行 (Tools):
- 内置工具: 预置了一系列与待办事项和日历相关的工具,例如:
- 'add_todo': 添加待办事项
- 'get_todos': 获取所有待办事项
- 'remove_todo': 删除指定ID的待办事项
- 'toggle_todo': 切换待办事项完成状态
- 'add_todo_to_calendar': 将待办事项添加到本地日历
- 'get_calendar_events': 获取本地日历事件
- 'add_todo_to_google_calendar': 将待办事项添加到Google日历
- 'get_google_calendar_events': 获取Google日历事件
- 'setup_google_calendar': 设置Google日历集成
- 'authenticate_google_calendar': 验证Google日历身份
- 'check_google_calendar_auth': 检查Google日历验证状态
- 'add_event_to_google_calendar': 直接添加事件到Google日历
- 工具执行: 通过 'executeToolCalls' 函数处理工具调用请求,并与数据库和Google日历API交互。
- 工具审批: 前端界面实现了工具审批流程,用户可以选择允许或拒绝工具执行。
- 内置工具: 预置了一系列与待办事项和日历相关的工具,例如:
-
Prompt 模板 (Prompts):
- 虽然仓库没有显式定义Prompt模板,但助手的 'instructions' 字段 ('src/openai.ts') 可以被视为一种硬编码的Prompt模板,定义了AI助手的行为模式。
-
MCP协议通信:
- JSON-RPC over HTTP: 通过 '/mcp' 路径接收和响应符合MCP协议的JSON-RPC请求。
- 能力声明: 通过 '/mcp/tools' 路径声明服务器支持的工具列表。
- 健康检查: 通过 '/mcp/health' 路径提供服务器健康状态检查接口。
- 会话管理: 通过 'conversation_id' 元数据进行简单的会话管理。
安装步骤
-
克隆仓库
git clone https://github.com/mertadali/Mcp-Server_OpenAI-Chat.git cd Mcp-Server_OpenAI-Chat -
安装依赖
npm install -
配置环境变量
在项目根目录下创建 '.env' 文件,并填入以下信息:
OPENAI_API_KEY=你的OpenAI API密钥 PORT=3000 CLIENT_ID=你的Google客户端ID CLIENT_SECRET=你的Google客户端密钥 GOOGLE_REDIRECT_URI=http://localhost:3000/google/callback MCP_ENABLED=true # 启用MCP协议支持注意:
- 'OPENAI_API_KEY': 需要从OpenAI平台获取API密钥。
- 'CLIENT_ID', 'CLIENT_SECRET', 'GOOGLE_REDIRECT_URI': 用于Google日历集成的OAuth 2.0客户端凭据,需要在Google Cloud Console中创建项目并启用Google Calendar API,然后配置OAuth 2.0凭据。 'GOOGLE_REDIRECT_URI' 需要设置为 'http://localhost:3000/google/callback' (如果服务器运行在localhost:3000)。
- 'MCP_ENABLED=true': 必须设置为 'true' 才能启用MCP服务器功能。
-
构建和运行服务器
# 构建TypeScript代码 npm run build # 运行服务器 (MCP 模式) npm run dev:mcp或者
# 运行服务器 (开发模式,不启用MCP,仅传统API) npm run dev要作为MCP服务器运行,必须使用 'npm run dev:mcp' 命令启动。
服务器配置 (MCP客户端配置)
MCP客户端需要配置以下服务器信息才能连接到本MCP服务器。请将以下JSON配置信息添加到你的MCP客户端配置中。
{ "serverName": "AI Todo Calendar MCP Server", "command": "npm", "args": ["run", "dev:mcp"] }
配置参数说明:
- 'serverName': MCP服务器的名称,可以自定义,用于在客户端界面上标识服务器。
- 'command': 启动MCP服务器的命令,这里使用 'npm' (Node包管理器)。
- 'args': 启动命令的参数,这里使用 '["run", "dev:mcp"]' 来执行 'package.json' 中定义的 'dev:mcp' 脚本,该脚本会启动启用MCP协议的服务器。
注意: 'command' 和 'args' 是MCP客户端用来启动和连接MCP服务器的关键配置。 请确保配置与实际服务器启动命令一致。 本例中假设MCP客户端和MCP服务器在同一台机器上,并且Node.js环境和npm命令可用。 如果MCP服务器部署在远程服务器或使用其他启动方式,请相应修改 'command' 和 'args'。
基本使用方法
-
启动MCP服务器: 按照上述安装步骤启动MCP服务器 ('npm run dev:mcp')。
-
配置MCP客户端: 在支持MCP协议的LLM客户端中,例如 Claude 客户端 (如果存在支持MCP协议的Claude客户端),添加上述 '服务器配置 (MCP客户端配置)' 中的JSON信息。
-
连接MCP服务器: 在MCP客户端中选择配置好的服务器,建立连接。
-
通过LLM客户端与AI助手对话: 使用LLM客户端的对话界面,以自然语言与AI助手进行交互,例如:
- '添加一个“购买牛奶”的待办事项'
- '显示我所有的待办事项'
- '将ID为 2 的待办事项标记为已完成'
- '明天下午2点添加一个“团队会议”到日历'
- '显示下周的日历事件'
AI助手会根据用户的指令,调用相应的工具来管理待办事项和日历,并可能请求用户授权进行敏感操作(如访问Google日历)。
传统API使用: 除了MCP协议,该项目也提供了传统的REST API ('/api/*' 路径),可以通过前端Web界面 ('public/index.html') 或其他HTTP客户端直接访问,进行基本的聊天和工具调用。 但传统API 不符合MCP协议标准,此处主要关注MCP服务器功能。
Google日历集成: 要使用Google日历集成功能,需要在Google Cloud Console中配置OAuth 2.0凭据,并正确配置 '.env' 文件中的 'CLIENT_ID', 'CLIENT_SECRET', 'GOOGLE_REDIRECT_URI'。 首次使用Google日历相关功能时,可能需要进行OAuth 2.0授权流程。
信息
分类
生产力应用