# 市民请集合智能助手 Java MCP 服务

这是给 `smqjh-agent` 使用的本机 Java MCP 服务，目录固定在：

`D:\Program Files\IdeaProjects\smqjh-agent\smqjh-mcp-server`

## 运行

本机未配置系统 Maven，使用 IDEA 内置 Maven：

```powershell
.\build.ps1
.\run.ps1
```

默认 MCP 地址：

```text
http://127.0.0.1:8765/mcp
```

健康检查：

```powershell
Invoke-RestMethod http://127.0.0.1:8765/mcp
```

列出工具：

```powershell
Invoke-RestMethod http://127.0.0.1:8765/mcp -Method Post -ContentType 'application/json' -Body '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
```

## 配置

启动时会按顺序加载：

1. 默认测试环境配置
2. 桌面端配置：`%APPDATA%\smqjh-admin-agent\config.json`
3. MCP 本地覆盖：`config/local.json`
4. 环境变量覆盖

`config/local.example.json` 是模板。不要把真实数据库密码或 DeepSeek Key 写进仓库；本机默认会读取桌面端已保存配置。

常用环境变量：

- `SMQJH_BASE_URL`
- `SMQJH_TENANT_CODE`
- `SMQJH_MCP_PORT`
- `SMQJH_MCP_TOKEN`
- `SMQJH_DB_HOST`
- `SMQJH_DB_NAME`
- `SMQJH_DB_USER`
- `SMQJH_DB_PASSWORD`
- `DEEPSEEK_API_KEY`

DeepSeek 已迁移到 MCP 侧托管。桌面端只连接 MCP，不再需要保存或展示 DeepSeek API Key；如需覆盖模型和 Key，可在 `config/local.json` 中配置：

```json
{
  "deepSeek": {
    "enabled": true,
    "baseURL": "https://api.deepseek.com",
    "apiKey": "sk-...",
    "model": "deepseek-v4-pro",
    "reasoningEffort": "high"
  }
}
```

## 已提供工具

- `smqjh.config.get`：读取本机运行配置，敏感字段脱敏。
- `smqjh.cloud.health`：调用验证码接口检查网关。
- `smqjh.database.readonly.query`：执行白名单内只读 SELECT。
- `smqjh.order.count.query`：订单数量和金额统计。
- `smqjh.product.lookup.summary`：商品资料查询。
- `smqjh.settlement.monthly.plan`：企业月结计划、接口参数和核对规则。
- `smqjh.ai.tool.plan`：MCP 侧 DeepSeek 工具规划。
- `smqjh.ai.tool.summarize`：MCP 侧 DeepSeek 工具结果总结。
- `smqjh.ai.chat`：MCP 侧 DeepSeek 普通对话。

## 租户规则

顶级 `admin` 账号不需要 `tenantCode`。非 admin 用户仍需要租户编码或租户上下文。

## 安全边界

数据库工具只允许 `SELECT`，并做了以下限制：

- 拒绝多语句、SQL 注释、写入/结构变更关键字。
- 拒绝访问系统库。
- 仅允许 smqjh 业务白名单表。
- 无 `LIMIT` 时自动补 `LIMIT 100`。
- 设置只读事务和查询超时。
