内容
nyc-restroom-mcp
询问 Claude “最近的公共厕所在哪里?”,它会给你一个确切的答案。
这是一个 [MCP](https://modelcontextprotocol.io) 服务器,一个小型插件,为 AI 助手(如 或 Claude Code)赋予。该插件允许 AI 搜索纽约官方公共厕所数据,直接NYC Open Data](https://opendata.cityofnewyork.us/) 获取。安装后,您可以询问以下问题:
- “在附近找一个现在开放的公共厕所。”
- “哪些靠近我的厕所是轮椅可达的?”
- “Jaime Campiz Playground 的厕所真的干净吗?”(它会查找最新的 NYC 公园检查报告)
它添加了两个工具:
| 工具 | 功能 |
| --------------------- | -------------------------------------------------------------------------------------------------------------- |
| `find_restrooms` | 列出附近的开放公共厕所,按距离排序,提供营业时间、残疾人通行情况和婴儿换尿布台信息。 |
| `get_restroom_status` | 通过名称或坐标查找一个厕所,包括其最近的 NYC 公园检查评分(如果存在)。 |
如果您不提供位置,它可以自动检测(下文)。所有操作都是只读的:它只会获取城市数据。
## 安装
您需要 [Node.js](https://nodejs.org) 20 或更新版本。除了适用于您的应用程序的代码片段外,无需下载或设置。
**Claude Code**(一条命令):
```bash
claude mcp add nyc-restroom -- npx -y nyc-restroom-mcp
```
**Claude Desktop**:前往设置 -> 开发者 -> 编辑配置,并在 `claude_desktop_config.json` 中添加以下内容:
```json
{
"mcpServers": {
"nyc-restroom": {
"command": "n "args": ["-y", "nyc-restroom"]
}
}
}
MCP 客户端都以相同的方式工作:启动 `npx -y nyc-restroom-mcp本地(stdio)服务器。
## 需要知道的事项
- **自动定位。** 如果您询问附近的厕所时没有指定位置,服务器会尝试自动确定:首先从您的设备(仅限 macOS,如果您运行 `brew install corelocationcli` 并授予其位置服务权限),否则会根据您的 IP 地址进行粗略猜测。如果两者都不起作用,或者您在纽约市以外,服务器会直接询问明确的坐标。
- **隐私。** 您省略坐标时进行位置检测,并且您的位置永远不会被写入日志中。如果您提供明确的坐标,则不会进行位置查找。
-数据。** 每个答案都直接来自 NYC Open Data(带有短暂的内存缓存),因此结果与城市自身的记录一样最新。检查报告仅适用于 NYC 公园管理的厕所;图书馆和其他厕所会诚实地表示没有检查数据。
- **更多详情。** [docs/) 目录涵盖了完整的 [工具参考](docs/tools.md)、[位置检测](docs/location.md数据源](docs/data-sources.md)、[配置](docs/configuration.md) 和 [安全模型](docs/security.md)。每个设计决策背后的原因都在 [DECISIONS.md](DECISIONS.md) 中。
### 可选设置
如果需要,请将以下内容设置为环境变量(大多数人不需要):
| 变量 | 用途 |
| ------------------- | -------------------------------------------------------------------- |
| `SOCRATA_APP_TOKEN` | 一个免费的 NYC Open Data 应用程序令牌,用于更高的速率限制。 |
| `LOG_LEVEL` | `error`、`warn` 或 `info`(默认为 `info`)。日志仅输出到 stderr。 |
更多变量用于测试和高级设置;请参阅 [docs/configuration.md](docs/configuration.md)。
## 贡献
欢迎在 [DanielOrtiz0220/nyc-restroom-mcp](https://github.com/DanielOrtiz0220/nyc-restcp) 上提交问题和拉取请求。
开发使用 [Bun](https://bun.sh)(1.1+):
```bash
git clone https://github.com/DanielOrtiz0220/nyc-restroom-mcp.gityc-restroom-mcp
bun install
bun test # 完整的单元测试 + 端到端测试套件,完全离线运行
bun run typecheck # tsc --noEmit
bun # eslint,零警告
bun run build # 编/ 到 dist/(npm发布内容)
```
要在 MCP 客户端中运行本地副本而不是已发布的包:
```bash
claude mcp add nyc-restroom -- bun "$(pwd)/src/index.ts"
```
其他有用命令:`bun run test:live` 对真实的 NYC Open Data API 运行一次烟雾测试(需要网络),`bun test --coverage` 报告覆盖率(`src/lib/` 中需要 85%+ 的行覆盖率)。在打开拉取请求之前,请确保 `bun test`、`bun run typecheck` 和 `bun run lint` 都通过。完整的开发指南(测试架构结构、要保留的不变性)位于 [docs/development/development.md) 中,[DECISIONS.md](IONS.md) 解释了事物为何如此设计。
## [MIT](LICENSE)