关于 nyc-restroom-mcp
nyc-restroom-mcp 是查询纽约市公共厕所及 NYC Parks 最新检查状态的 MCP 服务,面向寻找附近厕所或核实设施信息的用户。它读取 NYC Open Data,并支持无坐标时尝试检测位置。
主要功能
- 01按位置查找开放的公共厕所
- 02按距离排序并显示开放时间
- 03查询无障碍设施与换尿布台信息
- 04查询 NYC Parks 最近检查评级
- 05未提供坐标时尝试检测位置
适用场景
- 01查找附近当前开放的厕所
- 02寻找无障碍厕所或带换尿布台的设施
- 03核实某处厕所的最新检查结果
MCP 相关
提供 `find_restrooms` 和 `get_restroom_status` 两个只读工具,从 NYC Open Data 查询厕所及检查信息。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y nyc-restroom-mcpSOCRATA_APP_TOKEN密钥Optional NYC Open Data (Socrata) app token for higher rate limitsCORELOCATION_CMDOptional path to the CoreLocationCLI binary for precise on-device location (macOS only; falls back to IP geolocation when absent)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
2收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | 要返回的厕所数量上限,按距离升序排序。 |
| latitude | number | 否 | 搜索中心的纬度。省略 latitude 和 longitude 可根据自动检测的当前位置进行搜索。 |
| open_now | boolean | 否 | 为 true 时,排除当前确认已关闭的厕所。营业时间无法解析的厕所会保留并标记为 "unknown",而不会进行猜测。 |
| longitude | number | 否 | 搜索中心的经度。省略 latitude 和 longitude 可根据自动检测的当前位置进行搜索。 |
| radius_meters | number | 否 | 搜索半径,单位为米。默认值为 800;超过 5000 的值会限制为 5000。 |
详细介绍
nyc-restroom-mcp
问 Claude“最近的公共卫生间在哪里?”,即可获得真实答案。
这是一个 MCP 服务,是一个小型插件,可为 AI 助手(如 Claude Desktop 或 Claude Code)提供新能力。它可以实时搜索纽约市官方公共卫生间数据,数据来自 NYC Open Data。安装后,你可以询问:
- “帮我找找 Union Square 附近现在开放的公共卫生间。”
- “我附近哪些卫生间可供轮椅使用?”
- “Jaime Campiz Playground 的卫生间真的干净吗?”(它会查询最新的 NYC Parks 检查报告)
它提供两个工具:
| 工具 | 功能 |
|---|---|
find_restrooms | 按距离从近到远列出某个地点附近开放的公共卫生间,并提供开放时间、无障碍设施和换尿布台信息。 |
get_restroom_status | 按名称或坐标查询某个卫生间,包括其最近一次 NYC Parks 检查评级(如有)。 |
如果你没有提供地点,它可以自动检测你的位置(详见下文)。所有操作均为只读:它只会获取城市公开数据。
安装
你需要 Node.js 20 或更高版本。除了为你的应用添加以下代码片段外,无需下载或进行其他设置。
Claude Code(一条命令):
claude mcp add nyc-restroom -- npx -y nyc-restroom-mcp
Claude Desktop:前往 Settings -> Developer -> Edit Config,并将以下内容添加到
claude_desktop_config.json:
{
"mcpServers": {
"nyc-restroom": {
"command": "npx",
"args": ["-y", "nyc-restroom-mcp"]
}
}
}
其他 MCP 客户端的使用方式也一样:让它以本地(stdio)服务的形式启动
npx -y nyc-restroom-mcp。
使用须知
- 自动定位。 如果你询问附近的卫生间,却没有说明自己在哪里,服务会尝试确定你的位置:首先尝试从设备获取(仅限 macOS,需先执行
brew install corelocationcli并授予其“定位服务”访问权限),否则根据你的 IP 地址进行粗略估算。如果两种方式都不可用,或者你在 NYC 以外,服务会直接要求你提供明确坐标,而不是猜错位置。 - 隐私。 只有在你未提供坐标时才会进行定位,而且你的位置信息绝不会写入日志。提供明确坐标后,完全不会进行位置查询。
- 实时数据。 每个回答都直接来自 NYC Open Data(并使用短时内存缓存),因此结果会与市政府记录一样及时。只有由 NYC Parks 管理的卫生间才会有检查报告;图书馆和其他卫生间会如实说明没有检查数据。
- 更多详情。 docs/ 目录介绍了完整的工具参考、位置检测、数据来源、配置和安全模型。每项设计决策背后的考量见 DECISIONS.md。
可选设置
如有需要,可将以下内容设为环境变量(大多数人用不到):
| 变量 | 用途 |
|---|---|
SOCRATA_APP_TOKEN | 免费的 NYC Open Data 应用令牌,可提高速率限制。 |
LOG_LEVEL | error、warn 或 info(默认值为 info)。日志仅写入 stderr。 |
此外还有一些用于测试和高级设置的变量;请参阅 docs/configuration.md。
贡献
欢迎在 DanielOrtiz0220/nyc-restroom-mcp 提交问题和拉取请求。
开发使用 Bun(1.1+):
git clone https://github.com/DanielOrtiz0220/nyc-restroom-mcp.git
cd nyc-restroom-mcp
bun install
bun test # full unit + end-to-end suite, runs completely offline
bun run typecheck # tsc --noEmit
bun run lint # eslint, zero warnings allowed
bun run build # compile src/ to dist/ (what the npm package ships)
若要在 MCP 客户端中运行本地副本,而不是使用已发布的包:
claude mcp add nyc-restroom -- bun "$(pwd)/src/index.ts"
其他实用命令:bun run test:live 会针对真实的 NYC Open Data API 运行一个冒烟测试(需要网络),bun test --coverage 会报告覆盖率(src/lib/ 中的行覆盖率需达到 85% 以上)。提交 PR 前,请确保 bun test、bun run typecheck 和 bun run lint 均通过。完整的开发指南(测试架构、项目结构、需保留的不变量)见 docs/development.md,DECISIONS.md 说明了项目如此设计的原因。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。