Skip to main content
Glama
xuewolai

ima-mcp-server

by xuewolai
README.md
# ima-mcp-server

将 [IMA 知识库](https://ima.qq.com) 官方 OpenAPI 封装为标准 **MCP(Model Context Protocol)** 服务器,可在任何支持 MCP 的 agent 软件中检索、浏览、读取知识库内容。

## 特性

- ✅ 标准 MCP 协议(stdio 传输),兼容所有 MCP 客户端
- ✅ 8 个知识库工具:搜索、浏览、读取原文、读取笔记正文、添加网页
- ✅ 凭证灵活配置(环境变量 / 配置文件)
- ✅ 零外部服务依赖,纯 Node.js 运行

## 可用工具

| 工具 | 功能 |
|---|---|
| `search_knowledge_base` | 搜索知识库列表(空 query 返回全部,含订阅库) |
| `get_knowledge_base` | 获取知识库详情(描述、推荐问题) |
| `get_knowledge_list` | 浏览知识库内容(根目录/文件夹,分页) |
| `search_knowledge` | 在知识库内按关键词搜索文档 |
| `get_media_info` | 获取条目原文/下载链接;**笔记类自动返回正文**(`note_content`) |
| `get_note_content` | 读取笔记正文(纯文本),传入 note_id |
| `get_addable_knowledge_base_list` | 获取可添加内容的知识库列表 |
| `import_urls` | 将网页/微信文章添加到知识库 |

> **笔记读取说明**:IMA 笔记正文通过 `openapi/note/v1/get_doc_content` 读取。`get_media_info` 命中笔记(`media_id` 以 `note_` 开头)时会自动附带 `note_content` 字段;也可用 `get_note_content` 传 note_id 直读。微信文章/网页/文件类则返回可访问 URL。

## 前置要求

- **Node.js ≥ 18**(内置 fetch)
- **IMA OpenAPI 凭证**:在 https://ima.qq.com/agent-interface 获取 Client ID 和 API Key

## 安装

```bash
git clone <repo> ima-mcp-server
cd ima-mcp-server
npm install
```

或直接将 `server.mjs` + `package.json` 拷贝到本地后 `npm install`。

## 凭证配置(三选一)

### 方式 A:环境变量(推荐,配置在 MCP 客户端中)

```
IMA_CLIENT_ID=你的_client_id
IMA_API_KEY=你的_api_key
```

### 方式 B:兼容 ima-skill 的环境变量名

```
IMA_OPENAPI_CLIENTID=你的_client_id
IMA_OPENAPI_APIKEY=你的_api_key
```

### 方式 C:配置文件

```bash
mkdir -p ~/.config/ima
echo "你的_client_id" > ~/.config/ima/client_id
echo "你的_api_key" > ~/.config/ima/api_key
```

优先级:方式 A > 方式 B > 方式 C

## 各 MCP 客户端配置

以下配置中的路径请替换为你的实际路径。

### Claude Desktop

配置文件位置:
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "ima": {
      "command": "node",
      "args": ["C:\\Users\\你的用户名\\ima-mcp-server\\server.mjs"],
      "env": {
        "IMA_CLIENT_ID": "你的_client_id",
        "IMA_API_KEY": "你的_api_key"
      }
    }
  }
}
```

### Cursor

配置文件:`~/.cursor/mcp.json`(全局)或项目内 `.cursor/mcp.json`

```json
{
  "mcpServers": {
    "ima": {
      "command": "node",
      "args": ["/Users/你的用户名/ima-mcp-server/server.mjs"],
      "env": {
        "IMA_CLIENT_ID": "你的_client_id",
        "IMA_API_KEY": "你的_api_key"
      }
    }
  }
}
```

### Cline (VS Code)

在 Cline 设置 → MCP Servers → 添加:

```json
{
  "ima": {
    "command": "node",
    "args": ["/path/to/ima-mcp-server/server.mjs"],
    "env": {
      "IMA_CLIENT_ID": "你的_client_id",
      "IMA_API_KEY": "你的_api_key"
    },
    "disabled": false,
    "autoApprove": []
  }
}
```

### VS Code Copilot / Continue

```json
{
  "mcpServers": {
    "ima": {
      "command": "node",
      "args": ["/path/to/ima-mcp-server/server.mjs"],
      "env": {
        "IMA_CLIENT_ID": "你的_client_id",
        "IMA_API_KEY": "你的_api_key"
      }
    }
  }
}
```

### WorkBuddy

编辑 `~/.workbuddy/mcp.json`,在 `mcpServers` 中添加上述 `ima` 条目,然后在连接器管理页面点击「Trust」启用。

## 验证

配置完成后,在 agent 软件中尝试:

> "列出我的所有知识库"

如果返回知识库列表,说明配置成功。

也可手动测试协议:

```bash
node test-protocol.mjs
```

## 故障排查

| 问题 | 解决方案 |
|---|---|
| `未找到 IMA 凭证` | 检查环境变量或配置文件是否正确设置 |
| `IMA API 错误 [xxx]` | 查看 msg 内容;常见为凭证无效或权限不足 |
| Claude Desktop 未显示工具 | 重启 Claude Desktop;检查 `claude_desktop_config.json` 路径与 JSON 格式 |
| Windows 路径需双反斜杠 | JSON 中 `\\` 表示一个 `\`,如 `C:\\Users\\name\\...` |
| Node 版本不足 | 升级到 18+,`node -v` 确认 |

## 与 ima-skill 的关系

| 维度 | ima-mcp-server(本项目) | ima-skill(WorkBuddy 内置) |
|---|---|---|
| 协议 | 标准 MCP,跨 agent 通用 | WorkBuddy skill 格式 |
| 适用范围 | Claude Desktop、Cursor、Cline 等 | 仅 WorkBuddy 生态 |
| 认证 | OpenAPI clientId/apiKey | 同(或 WorkBuddy OAuth 连接器) |
| 功能范围 | 8 个知识库工具(读取 + 笔记正文 + 添加网页) | 完整(含文件上传、笔记管理) |
| 传输 | stdio | 脚本调用 |

如需在 WorkBuddy 内使用完整功能(含文件上传),继续使用 ima-skill;如需在其它 agent 软件中使用,用本项目。

## 安全说明

- 凭证仅作为 HTTP 头发送至 `ima.qq.com`,不发送至任何其它域名
- 凭证不会被记录到日志或文件
- `import_urls` 的 URL 由 IMA 服务端抓取,本地不发送文件内容

## License

MIT

TDQS

A4.1/5.0

Scored across 8 tools

Disambiguation4/5

Tools are mostly distinct: listing knowledge bases, getting details, browsing content, searching, and importing URLs each have clear roles. There is some overlap between get_media_info and get_note_content since both can return note text, but they accept different ID types and are described specifically.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (get_, search_, import_). The verbs and objects are predictable, and even longer names like get_addable_knowledge_base_list fit the pattern clearly.

Tool Count5/5

With 8 tools, the server is well-scoped for its purpose. Each tool covers a distinct part of the knowledge base workflow without redundancy or bloat.

Completeness4/5

The server covers listing, searching, retrieving, and importing content, which is a coherent set. Missing create/delete/update operations for knowledge bases or folders, but for a read/import-focused server this is a minor gap rather than a critical failure.

Maintenance

ActivityStale
ResponsivenessNo issues