信标MCP
beacon-mcp 是一个个人本地TypeScript模型上下文协议服务器,它将一小部分个人和操作数据源转换为MCP工具。
它揭示了:
- 天气查询
- 交通通勤估算
- Gmail收件箱查询
- 谷歌日历事件查询
- FineApp管理员审核日志查找
- 综合上述内容的综合晨间简报
服务器运行超时 stdio,因此它可以直接连接到MCP兼容客户端,如Codex、Claude Desktop或自定义MCP主机。
它的作用
Beacon旨在回答实际的日常启动和操作问题,例如:
- “今天下午斯泰伦博斯的天气怎么样?”
- “明天早上8点开车要多久?”
- “显示我未读的重要电子邮件。”
- “我今天有什么会议?”
- “今天早上FineApp管理员审核日志中发生了什么?”
- “给我一个完整的上午简报。”
工具
Beacon注册了这些MCP工具:
| 工具 | 目的 |
|---|---|
get_weather | 地点、日期范围或特定时间的天气 |
get_commute | 两个地址之间的行车时间和交通量 |
get_emails | Gmail搜索,包括查询、标签、未读过滤器和限制 |
get_calendar_events | 日期或日期范围的日历事件 |
get_fineapp_audit_updates | 使用过滤器查找FineApp管理员审核日志 |
get_morning_brief | 汇总天气、通勤、电子邮件、日历和审计摘要 |
资源
Beacon还公开了MCP资源:
beacon://server/infobeacon://tools/{name}
这些为支持资源的MCP客户端提供了轻量级的服务器和工具元数据。
需求
- Node.js 20+
- npm
- 要使用的集成的API凭据
安装
npm install
cp .env.example .env填写 .env 使用您需要的凭据和默认值。
环境变量
| 变量 | 必需 | 目的 |
|---|---|---|
WEATHER_API_KEY | 天气 | WeatherAPI密钥 |
WEATHER_LOCATION | 否 | 默认天气位置。默认为 Stellenbosch |
GOOGLE_MAPS_API_KEY | 通勤 | 谷歌路线API键 |
GMAIL_CLIENT_ID | 对于Gmail/日历 | 谷歌OAuth客户端ID |
GMAIL_CLIENT_SECRET | 对于Gmail/日历 | 谷歌OAuth客户端密码 |
GMAIL_REFRESH_TOKEN | 对于Gmail/日历 | 用于生成访问令牌的Google刷新令牌 |
GOOGLE_CALENDAR_ID | 否 | 日历ID。默认为 primary |
FINEAPP_API_BASE_URL | 否 | FineApp API基础URL |
FINEAPP_ADMIN_TOKEN | 对于FineApp | 管理员审核访问的承载令牌 |
HOME_ADDRESS | 否 | 默认通勤起点。默认为 Home |
CAMPUS_ADDRESS | 否 | 默认通勤目的地。默认为 Campus |
TIMEZONE | 否 | 默认时区。默认为 Africa/Johannesburg |
跑
发展:
npm run dev构建:
npm run build启动已编译的服务器:
npm run startMCP客户端配置
示例MCP服务器条目指向开发中的TypeScript源代码:
{
"mcpServers": {
"beacon": {
"command": "npx",
"args": ["tsx", "/absolute/path/to/beacon-mcp/src/index.ts"],
"env": {
"WEATHER_API_KEY": "your-key",
"GOOGLE_MAPS_API_KEY": "your-key",
"GMAIL_CLIENT_ID": "your-client-id",
"GMAIL_CLIENT_SECRET": "your-client-secret",
"GMAIL_REFRESH_TOKEN": "your-refresh-token",
"FINEAPP_ADMIN_TOKEN": "your-token",
"TIMEZONE": "Africa/Johannesburg"
}
}
}
}使用编译版本的示例:
{
"mcpServers": {
"beacon": {
"command": "node",
"args": ["/absolute/path/to/beacon-mcp/dist/index.js"]
}
}
}输入注释
- 预计天气日期
YYYY-MM-DD. - 通勤
departureAt接受:
- 带时区的完整ISO时间戳 - YYYY-MM-DD HH:mm - 像这样的短语 today at 8am 或 tomorrow at 8am
- Gmail搜索使用标准的Gmail查询语法以及可选的标签和未读过滤。
- 日历查找接受单个
date或adateFrom/dateTo范围。
发展
可用脚本:
npm run dev
npm run build
npm run test
npm run test:coverage
npm run format
npm run format:check项目结构
src/
index.ts stdio entrypoint
server.ts MCP server construction
tools/ MCP tool registration
resources/ MCP resources and templates
providers/ external API integrations
schemas/ zod input/output schemas
utils/ env and time helpers
tests/ server, provider, and tool tests备注
- 服务器仅对配置了所需凭据的工具成功。
- Gmail和谷歌日历都使用相同的谷歌OAuth刷新令牌流。
- 晨间简报并行运行多个提供者,并返回汇总的组合有效载荷。
