内容
center">
# Sinores MCP WhatsApp
### 自托管的 AI 代理 WhatsApp 网关
将 WhatsApp 号码连接到任何与 MCP 兼容的代理。<br />
从一个本地应用程序发送消息、读取历史记录和管理频道。
[](https://github.com/karl4th/sinores-wp-mcp/stargazers)
[](./LICENSE)
[](https://nodejs.org/)
[](https://modelcontextprotocol.io/)
[快速开始](#快速开始) · [连接 AI 代理](#连接-ai-代理) · [工作原理](#工作原理) · [配置](#配置)
</div>
---
Sinores Open 将 WhatsApp 号码转换为 AI 代理和应用程序可以使用的工具。它在一个 Node.js 应用程序中组合了 Web 控制台、REST API、MCP 服务器、WhatsApp 连接和本地数据库。
> **一个进程。一个端口。不需要 Docker、Postgres 或 Redis。**
## 功能
| | 功能 | 提供内容 |
|---|---|---|
| 🤖 | **MCP 服务器** | 连接 Codex、Claude 或任何与 MCP 兼容的代理 |
| 💬 | **消息传递** | 发送和接收 WhatsApp 文本消息 |
| 🗂️ | **消息历史** | 读取本地存储的对话,带有过滤器 |
| 📱 | **频道管理** | 使用熟悉的二维码流程链接 WhatsApp 号码 |
| 🖥️ | **Web 控制台** | 管理频道、检查状态和测试消息 |
| 🔌 | **REST API** | 将 WhatsApp 集成到后端和脚本中 |
| 💾 | **本地持久性** | 使用 SQLite 将数据和会话保存在您的机器上 |
| 🔐 | **简单身份验证** | 使用一个管理员令牌保护控制台和 API |
## 快速开始
### 要求
-.js](https://nodejs.org/) 22 或更新版本
-链接伴侣设备的 Whats账户
### 1.```bash
git clone https://github.com/karl4inores-wp-mcp.git
cd sinores-wp
npm install
cp . .env.local
```
###. 创建管理员令牌bash
openssl rand -hex
```
将生成的数值env.local` 中:
ADMIN_TOKEN=your-generated-token
```
### 3.ores
```bash
dev
```
打开 [http:3000](http://3000),使用管理员登录并创建一个频道。然后,从以下位置扫描其二维码:
**WhatsApp → 已链接设备 → 链接设备**
<details>
<summary><strong>类似生产环境的本地运行</strong></summary>
```bash
npm run build
npm start
```
</details>
## 代理
Sin以下地址公开了一个 Streamable 端点:
```text
http://localhost:/api/mcp
端点和管理员令您的 MCP 客户端:
```json
{
"mcpServers": {
"sinores": {
"url": "http://localhost:3000/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_ADMIN_TOKEN"
}
}
}
}
```
代理接收四个工具:
| 工具 | 描述 |
|---|---|
| `list_channels` | 列出已连接的频道及其当前状态 |
| `get_channel_status` | 获取特定频道的狀態 |
| `send_message` | 向电话号码发送文本消息 |
| `list_messages` | 读取带有方向和时间戳过滤器的消息历史记录 |
首先使用 `list_channels` 获取 `channelId`,然后将该 ID 用于其他工具。
## 工作原理
```mermaid
flowchart LR
代理["AI 代理"] -->|"MCP over HTTP"| Sinores["Sinores Open"]
应用程序["您的应用程序"] -->|"REST API"| Sinores
控制台["Web 控制台"] --> Sinores
Sinores --> WhatsApp["WhatsApp via Baileys"]
Sinores --> 数据库[("SQLite")]
```
Sinores 故意保持整个堆栈小巧:
- [Next.js](https://nextjs.org/) 提供控制台、REST 路由和 MCP 端点。
- [Baileys](https://github.com/WhiskeySockets/Baileys) 管理 WhatsApp 伴侣设备会话。
- [SQLite](https://sqlite.org/) 在 `./data` 中存储频道和消息历史记录。
- [Model Context Protocol SDK](https://modelcontextprotocol.io/) 从同一应用程序公开代理工具。
## 配置
| 变量 | 必需 | 默认值 | 用途 |
|---|:---:|---|---|
| `ADMIN_TOKEN` | 是 | — | 保护控制台、REST API 和 MCP 端点 |
| `CHANNEL_LIMIT` | 否 | `10` | WhatsApp 频道的 maximum 数量 |
| `DATA_DIR` | 否 | `./data` | SQLite 数据库和应用程序数据的位置 |
| `BAILEYS_AUTH_DIR` | 否 | `./data/baileys-auth` | WhatsApp 会话凭证的位置 |
| `COOKIE_SECURE` | 否 | 未设置 | 在通过 HTTPS 提供应用程序时设置为 `true` |
参见 [`.env.example`](./.env.example) 获取一个可以直接复制的配置文件。
## 开源或托管
| | Sinores Open | [Sinores Cloud](https://sinores.net) |
|---|---|---|
| 适合 | 开发者、原型、个人自动化 | 团队和生产工作负载 |
| 托管 | 您的机器或服务器 | 为您托管 |
| 数据库 | 本地 SQLite | 托管基础设施 |
| 身份验证 | 单个管理员令牌 | 多租户访问控制 |
| 运维 | 您维护它 | Sinores 维护它 |
| 许可证 | MIT | 商业服务 |
## 安全
- 将 `ADMIN_TOKEN` 当作密码。任何拥有它的人都可以访问每个已连接的频道。
- 永远不要提交 `.env.local`、`data` 目录或 Baileys 会话凭证。
- 在本地网络外部公开实例时,使用 HTTPS 并设置 `COOKIE_SECURE=true`。
- 尽可能使用单独的 WhatsApp 号码进行自动化。
> [!WARNING]
> Sinores 使用 Baileys,这是一个非官方的 WhatsApp Web API。它与 WhatsApp 或 Meta 无关。自动活动可能会导致帐户限制。请查看 WhatsApp 的条款并负责任地使用该项目。
## 贡献
欢迎提出问题和拉取请求。如果您发现了一个错误,有一个想法,或者使用 Sinores 构建了有趣的东西,[请提出问题](https://github.com/karl4th/sinores-wp-mcp/issues)。
如果 Sinores 帮助您构建了有用的东西,请考虑 [为仓库加星](https://github.com/karl4th/sinores-wp-mcp)。它帮助其他开发者发现该项目。
## 许可证
在 [MIT License](./LICENSE) 下分发。
---
<div align="center">
为开发者构建,将 AI 代理连接到现实世界。
[网站](https://sinores.net) · [报告错误](https://github.com/karl4th/sinores-wp-mcp/issues) · [给它加星](https://github.com/karl4th/sinores-wp-mcp)
</div>