local-places

📍 本地智能地点发现助手

基于 Google Places API 的本地地点搜索代理,由知名开发者 steipete 开源,帮助用户快速发现周边餐厅、咖啡馆等场所。

收藏
5.5k
安装
1.2k
版本
v1.0.0
CLS 安全性认证2026-05-06
点击查看完整报告 >

使用说明

核心用法

Local Places 是一个轻量级的 FastAPI 服务,作为 Google Places API 的本地代理,提供三步式地点发现流程:首先通过文本解析获取地理坐标(如"Soho, London"),然后基于位置偏移搜索特定类型场所(餐厅、咖啡馆等),最后可获取详细地点信息。支持丰富的过滤条件包括营业时间、评分阈值、价格等级等,并采用分页机制处理大量结果。

显著优点

1. 架构简洁清晰:代码结构简单,仅包含 4 个核心文件,功能单一专注,易于理解和维护
2. 输入验证严格:使用 Pydantic 模型对所有参数进行边界检查,包括经纬度范围、评分增量、价格等级等,有效防止无效输入

3. 安全设计良好:API 密钥通过环境变量管理,无硬编码风险;错误处理完善,不向用户暴露内部细节

4. 开发者信誉可靠:由知名 iOS 开发者 Peter Steinberger(steipete)创建,代码完全开源可审计

5. 部署便捷:基于 uv 工具链,支持一键安装和启动,适合本地开发环境快速搭建

潜在缺点与局限性

1. 功能范围受限:仅支持单一类型过滤(无法同时搜索餐厅和咖啡馆),且依赖 Google Places API 的配额限制
2. 无内置保护机制:缺少速率限制、CORS 配置和请求审计日志,在生产环境直接使用存在风险

3. 网络依赖性强:所有功能完全依赖 Google Places API,服务可用性与 Google 服务绑定

4. 本地部署限制:设计为 localhost 运行,如需公网访问需额外配置反向代理和安全加固

适合的目标群体

  • 需要快速集成地点搜索功能的本地开发者和原型设计师
  • 构建基于位置服务的 AI Agent 或聊天机器人开发者
  • 希望避免直接处理 Google Places API 复杂认证流程的团队
  • 对代码透明度有要求、偏好自托管方案的技术用户

使用风险

1. API 配额成本:Google Places API 按调用量计费,高频使用可能产生意外费用
2. 服务可用性:Google API 服务中断或网络问题将直接导致功能失效

3. 环境配置依赖:需要正确配置 GOOGLE_PLACES_API_KEY,密钥泄露可能导致配额被盗用

4. 性能瓶颈:未实现缓存机制,重复查询会多次调用付费 API

安全解读

核心用法

local-places 是一个基于 FastAPI 的本地代理服务,封装 Google Places API 的搜索能力。采用两步式交互流程:首先通过 locations/resolve 端点将模糊位置文本(如"Soho, London")解析为精确坐标,再通过 places/search 端点进行地点检索,支持关键词查询、实时营业状态、评分阈值、价格区间等多维过滤。

部署后运行 uvicorn 服务在 127.0.0.1:8000,通过 REST API 与 MCP 客户端交互。所有请求强制使用 Pydantic 模型验证,包括类型约束(单一类型标签)、范围限制(评分 0-5、价格 0-4、半径>0)和分页控制(搜索 1-20 条、解析 1-10 条)。

显著优点

1. 架构安全:纯代理模式,不存储用户数据,API 密钥仅通过环境变量注入,无硬编码风险
2. 输入严格验证:全参数校验 + 自定义验证器,有效防御注入攻击

3. 依赖可信:FastAPI + httpx + uvicorn 均为成熟生态组件,无已知 CVE

4. 开发者信誉:作者 Peter Steinberger(steipete)为 PSPDFKit 创始人、知名 iOS 开发者,GitHub 高信誉账号

5. 合规友好:遵循 GDPR 数据最小化原则,仅传输功能必需数据

潜在缺点与局限性

  • 外部强依赖:核心功能完全依赖 Google Places API,存在配额限制、地区可用性及未来定价政策风险
  • 无内置限流:当前未实现速率限制,需配合反向代理或外部防护避免配额耗尽
  • 开发配置残留:OpenAPI 服务器 URL 默认值为 maxims-macbook-air:8000,生产环境需覆盖
  • 日志未脱敏:完整记录请求/响应体,存在敏感信息泄露风险
  • 单点服务:无高可用设计,本地部署模式不适合多实例场景

适合人群

  • 需要快速集成地点搜索能力但不愿直接暴露 Google API 密钥的开发者
  • 对数据隐私有要求、倾向于本地代理架构的 MCP 客户端用户
  • 已拥有 Google Places API 配额、熟悉 Python 部署的技术用户

常规风险

| 风险类型 | 等级 | 说明 |
|---------|------|------|
| API 配额耗尽 | 中 | Google Places API 按请求计费,高频使用需监控用量 |
| 密钥泄露 | 低 | 环境变量管理不当可能导致密钥外泄,建议使用密钥管理方案 |
| 服务可用性 | 中 | 依赖 Google 服务可用性,部分地区可能存在访问限制 |
| 日志敏感信息 | 低 | 需自行配置日志脱敏,避免长期存储用户查询记录 |

local-places 内容

src文件夹
local_places文件夹
手动下载zip · 7.1 kB
__init__.pytext/plain
请选择文件