local-time-mcp
An introductory MCP server that provides local time tools like getting current time, formatting, computing time differences, and listing timezones.
README
Local Time MCP Server (Node.js)
一个用于学习 MCP(Model Context Protocol)的入门级 Server,提供本地时间相关的工具。
📖 MCP 文档:
- docs/mcp核心概念.md —— MCP 是什么:角色、原语、真实报文、设计思想
- docs/mcp端到端流程.md —— MCP 怎么发生:从配置到关闭的完整流程
这是什么?
MCP 是一种让 AI 助手(如 WorkBuddy/CodeBuddy、Claude Desktop 等)调用外部工具的协议。 这个项目演示了从零编写一个 Node.js MCP Server → 配置到 AI 助手 → 实际使用的完整流程。
MCP 是语言无关的协议(stdio 传输 = 标准输入输出 + JSON-RPC)。本仓库使用官方
@modelcontextprotocol/sdk 实现。
┌─────────────┐ stdio ┌─────────────────┐
│ AI 助手 │ ←───────────→ │ MCP Server │
│ (WorkBuddy) │ JSON-RPC │ (server.js) │
│ │ │ │
│ "现在几点?" │ ──调用工具──→ │ get_current_time│
│ │ ←─返回结果─── │ () │
└─────────────┘ └─────────────────┘
提供的工具
| 工具名 | 功能 | 示例调用场景 |
|---|---|---|
get_current_time |
获取当前时间(支持时区) | "现在几点了?" "东京现在几点?" |
format_time |
格式化指定时间点 | "把2026年1月1日格式化一下" |
time_diff |
计算两个时间点的差值 | "距离2026年春节还有多久?" |
list_timezones |
列出可用时区 | "有哪些亚洲时区?" |
通过 npm 安装(推荐)
已发布到 npm,可直接用 npx 一键运行,无需克隆本仓库:
npx local-time-mcp-server@latest
或全局安装后使用:
npm install -g local-time-mcp-server
local-time-mcp-server
需要 Node.js 18+ 环境。
从源码运行
1. 安装依赖
需要 Node.js 18+ 环境(已安装 Node 20 亦可)。
cd local-time-mcp
npm install # 安装 @modelcontextprotocol/sdk
2. 直接测试(不走 MCP 协议)
npm test # 等价于 node test_server.js
这会直接调用工具逻辑,验证功能是否正确。
3. 启动 MCP Server
node server.js
MCP Client 会作为子进程启动它;你也可以直接运行以查看是否报错。
配置到 WorkBuddy / CodeBuddy
编辑 MCP 配置文件 ~/.workbuddy/mcp.json(不存在则新建),添加:
方式一:通过 npx 运行(推荐,无需克隆仓库)
{
"mcpServers": {
"local-time": {
"type": "stdio",
"command": "npx",
"args": ["local-time-mcp-server@latest"]
}
}
}
方式二:本地源码路径
{
"mcpServers": {
"local-time": {
"type": "stdio",
"command": "node",
"args": ["D:/MyProjects/local-time-mcp/server.js"]
}
}
}
注意:
- 方式二中
args的server.js路径必须替换为你在本机克隆/存放该项目的实际路径。- 如果你的
node不在 PATH 中,请用完整路径,如"command": "D:/Software/Node/node.exe"。
信任并启用
- 打开 WorkBuddy,进入右上角连接器管理页面
- 找到
local-time连接器,点击 Trust(信任) - 现在你可以在对话中使用它了!
试试看
在 WorkBuddy 中直接问:
- "现在本地几点了?"
- "纽约现在几点?"
- "距离 2026 年 12 月 31 日还有多少天?"
- "列出所有亚洲时区"
GitHub 集成
推送到 GitHub
# 初始化 git 仓库
cd local-time-mcp
git init
git add .
git commit -m "Initial commit: local time MCP server (Node.js)"
# 在 GitHub 上创建仓库后
git remote add origin https://github.com/<你的用户名>/local-time-mcp.git
git branch -M main
git push -u origin main
从 GitHub 克隆后配置
其他人(或你在另一台机器上)克隆后,只需:
npm install- 把
mcp_config_example.json中的路径改成克隆后的实际路径 - 写入
~/.workbuddy/mcp.json
发布到 npm
本包已支持发布到 npm,配置了 bin、files、engines、repository 等发布字段。
发布后即可通过 npx local-time-mcp-server@latest 一键运行,参见「通过 npm 安装」。
自动发布(GitHub Actions)
本项目已配置 CI/CD 自动发布:每次打一个 v* 版本 tag 并推送,就会自动测试并发布到 npm,版本号由 tag 自动决定,无需手动改 package.json。
# 1. 提交并推送你的代码改动
git add .
git commit -m "feat: xxx"
git push
# 2. 打版本 tag(版本号去掉 v 就是 npm 版本号,如 v1.0.2 → 1.0.2)
git tag v1.0.2
git push origin v1.0.2
推送 tag 后,GitHub Actions 会自动:
npm test运行测试(失败则中止)- 自动把
package.json/server.js的版本号改为 tag 版本(如1.0.2) npm publish发布到 npm- 把版本号变更提交回仓库,保持同步
手动发布(不依赖 CI)
npm test # 发布前校验(prepublishOnly 会自动执行)
npm login # 登录 npm 账号(首次)
npm publish # 发布
因为账号启用了 Security Key 类型的 2FA,命令行发布需使用 勾选 "Bypass 2FA" 的 Publish token(详见下文「CI 密钥配置」),GitHub Actions 发布已通过 token 自动处理。
CI 密钥配置(一次性)
首次启用自动发布前,需要在 GitHub 仓库配置一个密钥 NPM_TOKEN:
- 在 npm 官网生成一个 Publish 类型、勾选 "Bypass 2FA" 的 token:https://www.npmjs.com/settings/~/tokens
- 在 GitHub 仓库 → Settings → Secrets and variables → Actions → 新建 repository secret,Name 填
NPM_TOKEN,Value 填入刚才的 token - 之后每次打
v*tag 即可自动发布
项目结构
local-time-mcp/
├── server.js # MCP Server 主程序(核心,npm bin 入口)
├── test_server.js # 工具逻辑测试脚本(不走 MCP 协议)
├── package.json # 依赖、脚本与 npm 发布配置(bin/files/engines)
├── mcp_config_example.json # WorkBuddy/CodeBuddy 配置示例
├── .github/
│ └── workflows/
│ ├── ci.yml # 每次推送/PR 自动跑测试
│ └── publish.yml # 打 v* tag 自动发布到 npm
├── docs/
│ ├── mcp核心概念.md # MCP 是什么:角色、原语、真实报文、设计思想
│ └── mcp端到端流程.md # MCP 怎么发生:从配置到关闭的完整流程
├── .gitignore
└── README.md
项目结构
local-time-mcp/
├── server.js # MCP Server 主程序(核心,npm bin 入口)
├── test_server.js # 工具逻辑测试脚本(不走 MCP 协议)
├── package.json # 依赖、脚本与 npm 发布配置(bin/files/engines)
├── mcp_config_example.json # WorkBuddy/CodeBuddy 配置示例
├── docs/
│ ├── mcp核心概念.md # MCP 是什么:角色、原语、真实报文、设计思想
│ └── mcp端到端流程.md # MCP 怎么发生:从配置到关闭的完整流程
├── .gitignore
└── README.md
MCP 协议工作原理(简要)
1. 启动:WorkBuddy 根据 mcp.json 中的 command+args 启动 server.js 子进程
2. 握手:通过 stdin/stdout 交换 JSON-RPC 消息,完成 initialize 握手
3. 发现:WorkBuddy 发送 tools/list 请求,Server 返回所有 server.tool() 注册的工具
4. 调用:用户提问 → LLM 判断需要调用哪个工具 → WorkBuddy 发送 tools/call
→ Server 执行对应函数 → 返回结果 → LLM 整合后回复用户
5. 退出:WorkBuddy 关闭时,子进程自动终止
扩展思路
- 增加日历工具:获取某天是星期几、是否节假日
- 增加定时提醒:结合 cron 实现定时通知
- 增加 Resource:暴露一个时间相关的只读资源
- 增加 Prompt:预设一些时间相关的 prompt 模板
- 切换传输方式:从 stdio 改为 SSE(Server-Sent Events)支持远程访问
- 完善 CI/CD:接入 GitHub Actions 在发版时自动发布到 npm
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。