内容
# 摸摸鱼
*[阅读中文版](README.zh-CN.md)*

摸摸鱼是一款安卓应用,它可以将闲置的手机变成一个本地MCP感知服务器,为Claude Code提供服务。它通过Streamable HTTP暴露相机、麦克风、状态和看门狗工具,当安装权重时,在设备上运行Qwen3-VL与阿里巴巴MNN,并将原始音视频保存在手机上。
**关键词:** 安卓MCP服务器,Claude Code手机相机,设备端AI监控,Qwen3-VL MNN安卓,Streamable HTTP MCP,本地视觉语言推理,开发者看门狗。
## 什么是摸摸鱼?
摸摸鱼,也称为摸摸鱼,让Claude Code询问安卓设备看到了或听到了什么,而无需将原始相机和麦克风流发送到云服务。该应用在`http://PHONE_IP:8765/mcp`托管一个MCP端点,用Bearer Token保护它,并为`phone_look`、`phone_listen`、`phone_perceive`、`phone_status`和`phone_watch_start`等工具返回结构化的感知结果。
## 为什么使用它?
| 需求 | 摸摸鱼提供 |
| --- | --- |
| 给Claude Code物理世界上下文 | 安卓相机和麦克风暴露为MCP工具 |
| 保持原始媒体本地 | 设备端捕获,本地启发式回退,可选设备端Qwen3-VL/MNN推理 |
| 监控桌面、打印机、板子或房间 | 看门狗任务,定期检查和SSE警报 |
| 运行无需模型权重 | 启发式降级模式,用于设置、配对和连接测试 |
| 添加完整的视觉语言推理 | 从应用私有存储加载转换后的Qwen3-VL-2B MNN权重 |
## 快速开始
1. 在Android Studio中打开[`android-app/`](android-app/)。
2. 在物理安卓设备上运行应用。
3. 授予相机、麦克风和通知权限。
4. 点击**启动MCP服务**,并复制应用中的Claude命令。
5. 在电脑上,相同Wi-Fi网络:
```bash
claude mcp add --transport http --scope project momofish \
http://PHONE_IP:8765/mcp \
--header "Authorization: Bearer TOKEN"
```
然后询问Claude Code:
```text
使用phone_look描述手机相机看到的内容。
```
参见[Claude Code设置](docs/claude-code-setup.md)了解配对、令牌和SSE行为。
## 模型文件不包含在内
本仓库故意**不包含**模型权重。Qwen3-VL/MNN模型文件较大,必须单独安装在安卓设备上。
预期设备路径:
```text
/data/data/com.momofish.monitor/files/mnn_models/qwen3-vl-2b/
```
参见[模型设置](docs/model-setup.md)了解adb传输步骤和[MNN本地编译](docs/mnn-build.md)了解`libMNN.so`说明。
## MCP工具
| 工具 | 用途 |
| --- | --- |
| `phone_look` | 对当前相机帧提出视觉问题 |
| `phone_listen` | 询问最近的麦克风/音频上下文 |
| `phone_perceive` | 结合视觉和音频感知 |
| `phone_status` | 读取服务、模型和待处理警报状态 |
| `phone_watch_start` | 启动定期监控,带有警报规则 |
| `phone_watch_stop` | 停止看门狗任务 |
| `phone_watch_list` | 列出活动看门狗任务 |
| `phone_look_raw` | 返回base64 JPEG回退帧 |
模式位于[`mcp-schemas/`](mcp-schemas/)。
## 架构
```text
Claude Code -- MCP Streamable HTTP/SSE --> Android Ktor 服务器 (:8765/mcp)
|
+-- CameraX 帧捕获
+-- AudioRecord 环形缓冲区
+-- Qwen3-VL via MNN 当安装时
+-- 启发式回退 当权重不存在时
+-- 看门狗警报和待处理警报存储
```
阅读完整的[架构指南](docs/architecture.md)。
## SEO和GEO说明
本README使用普通的答案块、基于问题的标题、表格和明确的实体名称,以便搜索引擎和AI答案引擎可以准确引用该项目。仓库还包含[`llms.txt`](llms.txt),为AI爬虫和编码助手提供简明的指导。
建议的GitHub主题:`android`、`kotlin`、`mcp`、`claude-code`、`qwen3-vl`、`mnn`、`on-device-ai`、`computer-vision`、`jetpack-compose`。
## 仓库布局
```text
android-app/ Kotlin 安卓应用,MCP服务器,捕获,推理,UI
mcp-schemas/ MCP工具的JSON模式
prompts/ 视觉语言、安全和看门狗提示
docs/ 架构、设置、故障排除、教程
DOCUMENTS/ 教程图像和演练资产
skills/eyes-on-phone/ 代码代理技能,用于使用手机工具
demo-scripts/ 演示助手说明
```
## 文档
- [教程](./DOCUMENTS/tutorial.md)
- [架构](docs/architecture.md) / [架构](docs/architecture.zh-CN.md)
- [Claude Code设置](docs/claude-code-setup.md) / [Claude Code配置](docs/claude-code-setup.zh-CN.md)
- [模型设置](docs/model-setup.md) / [模型配置](docs/model-setup.zh-CN.md)
- [配对](docs/pairing.md) / [配对与认证](docs/pairing.zh-CN.md)
- [高级隧道](docs/advanced-tunnel.md) / [远程访问](docs/advanced-tunnel.zh-CN.md)
- [故障排除](docs/troubleshooting.md) / [故障排查](docs/troubleshooting.zh-CN.md)
- 教程:[开发板](docs/tutorials/dev-board.md),[3D打印](docs/tutorials/3d-print.md),[智能家居](docs/tutorials/smart-home.md)
## 隐私和安全
- 每个MCP请求都需要Bearer令牌。
- 默认的纯文本HTTP端点用于受信任的LAN使用。
- 在没有TLS隧道和访问控制的情况下,不要将端口`8765`暴露给公共互联网。
- 模型权重、本地捕获、构建输出和生成的工件从上传中排除。
## 许可证
MIT