devin-search-mcp 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AI_PROMPT.md CHANGED
@@ -1,41 +1,41 @@
1
- # AI Agent Integration & Deployment Guide
1
+ # AI 助手部署与调用操作指南 (AI Agent Guide)
2
2
 
3
- > **Notice for AI Assistants (Claude, Cursor, CodeBuddy, Windsurf, Cline, etc.):**
4
- > If the user asks you to "install", "deploy", "setup", or "configure" `devin-search-mcp`, follow the instructions below directly without prompting for manual user actions.
3
+ > **写给正在协助用户的 AI 助手(无论是 ClaudeCursorCodeBuddyWindsurf 还是 Cline):**
4
+ > 当用户对你说类似“安装 devin-search”、“配置 devin 搜索”、“接入这个 MCP”或者“帮我把 devin-search-mcp 配好”时,**请直接帮用户把配置写入对应的配置文件,不要把指令抛回给用户让他们自己去动手操作。**
5
5
 
6
6
  ---
7
7
 
8
- ## 1. What is `devin-search-mcp`?
8
+ ## 1. 这个 MCP 是干什么的?
9
9
 
10
- `devin-search-mcp` is an MCP (Model Context Protocol) server that brings **Devin AI's real-time Web Search and Web Fetch** capabilities into any MCP-compatible environment.
10
+ `devin-search-mcp` 是一个标准 MCP (Model Context Protocol) 插件。它把 Devin 内部高质量的**全网实时搜索 (`devin_web_search`)** 和**网页正文深度去噪抓取 (`devin_web_fetch`)** 能力抽出来给所有 AI 使用。
11
11
 
12
- It allows you (the AI) to:
13
- * **`devin_web_search`**: Search the live Internet with natural language for latest docs, libraries, GitHub repos, and bug solutions.
14
- * **`devin_web_fetch`**: Fetch and deeply read the clean text/Markdown of any URL (stripping ads, navbars, and script clutter).
15
- * **`extract_devin_key`**: Auto-detect local Devin credentials across macOS, Windows, and Linux.
16
- * **`devin_status`**: Check local Devin engine diagnostics.
12
+ 你可以使用的核心工具:
13
+ * **`devin_web_search`**:用自然语言搜索整个互联网。查最新发布的框架、新版本变更、GitHub Issue 或冷门报错方案。
14
+ * **`devin_web_fetch`**:输入一个 URL,帮你抓取干净的 Markdown 正文,自动剔除导航栏、广告和脚本代码。
15
+ * **`extract_devin_key`**:自动读取本地 Devin / Windsurf 登录 Token。
16
+ * **`devin_status`**:检查本地 Devin 引擎路径与健康状态。
17
17
 
18
18
  ---
19
19
 
20
- ## 2. Zero-Config Deployment (Auto-Setup)
20
+ ## 2. 自动化配置步骤(AI 请直接执行写入)
21
21
 
22
- ### Step 1: Detect Client Environment
22
+ ### 第一步:判断用户当前使用的宿主工具
23
23
 
24
- Identify which client configuration file the user is currently using:
24
+ 根据用户当前运行的环境或打开的工程,找到对应的 MCP 配置文件路径:
25
25
 
26
- | Client | Config File Location | Key |
26
+ | 客户端工具 | 配置文件存放路径 | 注入节点 |
27
27
  | :--- | :--- | :--- |
28
- | **CodeBuddy** | `.codebuddy/mcp.json` or Global Settings | `mcpServers` |
29
- | **Claude Desktop (macOS)** | `~/Library/Application Support/Claude/claude_desktop_config.json` | `mcpServers` |
28
+ | **CodeBuddy** | 当前工作区 `.codebuddy/mcp.json` 或全局设置 | `mcpServers` |
29
+ | **Cursor** | 当前工作区 `.cursor/mcp.json` 或用户全局 MCP 偏好 | `mcpServers` |
30
30
  | **Claude Desktop (Windows)** | `%APPDATA%\Claude\claude_desktop_config.json` | `mcpServers` |
31
+ | **Claude Desktop (macOS)** | `~/Library/Application Support/Claude/claude_desktop_config.json` | `mcpServers` |
31
32
  | **Claude Code (CLI)** | `~/.claude.json` | `mcpServers` |
32
- | **Cursor** | `.cursor/mcp.json` or Settings > MCP | `mcpServers` |
33
33
  | **Windsurf** | `~/.codeium/windsurf/mcp_config.json` | `mcpServers` |
34
- | **Cline (VS Code)** | Global Storage > `cline_mcp_settings.json` | `mcpServers` |
34
+ | **Cline (VS Code)** | 扩展全局存储目录中的 `cline_mcp_settings.json` | `mcpServers` |
35
35
 
36
- ### Step 2: Inject the Configuration
36
+ ### 第二步:将配置写入 JSON 文件
37
37
 
38
- Add the following block to the target config file under `"mcpServers"`:
38
+ 在目标文件的 `"mcpServers"` 对象下,直接添加如下标准条目:
39
39
 
40
40
  ```json
41
41
  {
@@ -49,11 +49,11 @@ Add the following block to the target config file under `"mcpServers"`:
49
49
  }
50
50
  ```
51
51
 
52
- *No API key is required in the environment if the user has Devin Desktop or Devin CLI installed locally (credentials are auto-discovered from `credentials.toml` or `state.vscdb`).*
52
+ *注意:只要用户的系统里装有 Devin Desktop 或已登录过 Devin,它会自动跨平台读取凭据,完全不需要在 `env` 里硬编码任何 API Key。*
53
53
 
54
- ### Step 3: Optional Custom Devin Path
54
+ ### 第三步:非常规路径特别处理(可选)
55
55
 
56
- If Devin is installed in a non-standard directory (e.g. `E:\Program\devin`), specify `DEVIN_PATH`:
56
+ 如果用户的 Devin Desktop 安装在特殊的非默认盘符(例如 Windows 上的 `E:\Program\devin`),你可以为其补充 `DEVIN_PATH` 环境变量:
57
57
 
58
58
  ```json
59
59
  {
@@ -69,49 +69,8 @@ If Devin is installed in a non-standard directory (e.g. `E:\Program\devin`), spe
69
69
 
70
70
  ---
71
71
 
72
- ## 3. Tool Usage Best Practices for AI Agents
73
-
74
- ### When to use `devin_web_search`:
75
- * When the user's inquiry requires up-to-date information (after model cutoff).
76
- * When looking up recent software releases, breaking changes, or library documentation.
77
- * When debugging obscure error messages or searching for GitHub Issues.
78
- * **Tuning parameters**:
79
- * Set `num_results: 3-5` for focused specific lookups.
80
- * Set `detailed: true` if the user wants an in-depth AI summary alongside sources.
81
-
82
- ### When to use `devin_web_fetch`:
83
- * When given a specific URL to analyze, read, summarize, or translate.
84
- * Use `extract_mode: "markdown"` for structured article reading.
85
- * Use `extract_mode: "text"` when dealing with raw configs or data dumps.
86
-
87
- ---
88
-
89
- ## 4. 🇨🇳 中文指南 (面向中文 AI 助手)
90
-
91
- > **给 AI 智能体(如 CodeBuddy、Cursor、Claude、Cline 等)的执行指令:**
92
- > 当用户要求“安装”、“配置”、“接入”或“部署” `devin-search-mcp` 时,直接根据用户当前的客户端类型,将如下配置写入配置文件,无需让用户手动操作。
93
-
94
- ### 客户端配置注入模板
95
-
96
- ```json
97
- {
98
- "devin-search": {
99
- "command": "npx",
100
- "args": [
101
- "-y",
102
- "devin-search-mcp"
103
- ]
104
- }
105
- }
106
- ```
107
-
108
- ### 工具推荐调用时机
109
-
110
- 1. **`devin_web_search`**:
111
- - 涉及超过大模型训练知识截止期的最新框架、版本更新;
112
- - 排查生僻的报错信息、查询 GitHub Issue 与最新 RFC;
113
- - 寻找最新的开源库和最佳实践。
114
- 2. **`devin_web_fetch`**:
115
- - 用户提供具体网址让 AI 阅读、总结或分析时调用;
116
- - 默认模式为 `markdown`,能自动剥离网页广告和无用噪声代码。
72
+ ## 3. 作为 AI,你在什么时候应该主动调用这些工具?
117
73
 
74
+ * **遇到时间跨度或新库问题**:当用户的提问涉及你的训练数据截止期之后的库(如 Next.js 15、Vue 3.5、React 19、Tailwind v4 等),**不要凭空猜测脑补,立刻调用 `devin_web_search` 查证最新官方文档**。
75
+ * **排查生僻报错**:当用户贴出冷门的编译错误或运行时异常,优先调用 `devin_web_search` 查询 GitHub Issue 和社区最新解决方案。
76
+ * **阅读长篇网页**:当用户给你一个网址让你“总结一下这个网页”或“看看这个文档说了啥”,调用 `devin_web_fetch` 并指定 `extract_mode: "markdown"`。
package/README.md CHANGED
@@ -4,108 +4,61 @@
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
5
5
  [![Node: >=18](https://img.shields.io/badge/Node.js->=18-green.svg)](https://nodejs.org/)
6
6
 
7
- [English](#-english) | [简体中文](#-简体中文)
7
+ [简体中文 (默认)](#-简体中文) | [English Version](#-english)
8
8
 
9
9
  ---
10
10
 
11
- ## 🌐 English
12
-
13
- AI-driven real-time Web Search and Web Fetch as an MCP tool — powered by Devin AI's developer-focused search gateway.
14
-
15
- Any MCP-compatible client (**Claude Code, Claude Desktop, Cursor, CodeBuddy, Windsurf, Cline**, etc.) can use this to search the open web with natural language and fetch clean webpage content without noise.
16
-
17
- ### How It Works
18
-
19
- ```text
20
- You: "What's new in Next.js 15 and how to migrate?"
21
-
22
-
23
- ┌────────────────────────────────────────────────────────┐
24
- │ Devin Search MCP │
25
- │ (Local MCP Server) │
26
- │ │
27
- │ 1. Auto-detects local Devin engine & credentials │
28
- │ 2. Translates query into optimal search parameters │
29
- │ 3. Invokes Devin's developer-tuned web_search engine │
30
- │ 4. Parses results with bracket-balanced repair │
31
- │ 5. Strips noise, navbars & ads (webfetch) │
32
- │ 6. Caches results in-memory with TTL │
33
- │ 7. Returns clean structured JSON / Markdown │
34
- └────────────────────────────────────────────────────────┘
35
-
36
-
37
- Found 5 relevant results.
38
- [1/5] Next.js 15 Release Notes (https://nextjs.org/blog/next-15)
39
- [2/5] Upgrade Guide: v14 to v15 (https://nextjs.org/docs/app/building-your-application/upgrading/version-15)
40
- [3/5] React 19 RC Integration Notes...
41
- ```
42
-
43
- ### Quick Setup
44
-
45
- Add to your MCP configuration (`claude_desktop_config.json`, `~/.claude.json`, or `.cursor/mcp.json`):
11
+ ## 🇨🇳 简体中文
46
12
 
47
- ```json
48
- {
49
- "mcpServers": {
50
- "devin-search": {
51
- "command": "npx",
52
- "args": [
53
- "-y",
54
- "devin-search-mcp"
55
- ]
56
- }
57
- }
58
- }
59
- ```
13
+ ### 这项目是干啥的?
60
14
 
61
- ### MCP Tools
15
+ Claude Code、Cursor 或 CodeBuddy 写代码时,最大的痛点就是**大模型不知道最新的技术变化**:
16
+ * 问个刚发布的库或者框架新版本(比如 Next.js 15、Vue 3.5、Tailwind v4),它往往开始胡说八道或者给出老旧废弃的 API。
17
+ * 丢给它一个技术文档链接让它看,要么它连不上网,要么抓回来一堆带导航栏、广告和乱七八糟脚本的脏文本。
62
18
 
63
- * **`devin_web_search`**: Real-time web search with natural language queries (`query`, `num_results`, `detailed`).
64
- * **`devin_web_fetch`**: Deep webpage content reader that strips ads, navbars, and cookie banners (`url`, `extract_mode`).
65
- * **`extract_devin_key`**: Auto-extract Devin / Windsurf API Key / Session Token from local installation.
66
- * **`devin_status`**: Diagnostic tool for local Devin engine path and login identity.
19
+ 其实 Devin Desktop(以及 Windsurf)客户端内置的那套 `web_search`(全网实时搜索)和 `webfetch`(智能网页正文提取)非常强,但官方只把它绑死在自己的客户端界面里。
67
20
 
68
- ---
21
+ 既然社区的 `@sammysnake/fast-context-mcp` 能把它的代码语义搜索抽成 MCP,**那为什么不把它的全网实时搜索与网页阅读能力也抽出来,做成一个真正开箱即用的标准 MCP 呢?**
69
22
 
70
- ## 🇨🇳 简体中文
23
+ 于是就有了这个项目。它通过标准 MCP 协议,把 Devin 的联网能力直接接到你的 Cursor、CodeBuddy 或 Claude Desktop 里。
71
24
 
72
- 基于 Devin 原生引擎的 AI 联网网页搜索与深度正文抓取 MCP (Model Context Protocol) 插件。
25
+ ### 核心亮点(没有虚的,全击中痛点)
73
26
 
74
- 适用于任意支持 MCP 的客户端(**CodeBuddy、Cursor、Claude Desktop、Claude Code、Windsurf、Cline** 等),赋予大模型实时联网检索开发者技术文档、最新版本特性、解决方案与深度阅读网页正文的能力。
27
+ 1. **零配置登录**:只要你的电脑上装了 Devin Desktop 且登录过,这个工具就能自动从本地提取 Token 和路径,完全不需要你在配置文件里手动填任何 API Key。
28
+ 2. **拿到的都是干净数据**:搜索结果自动提取成 `标题 + 网址 + 核心要点摘录` 的结构化 JSON;抓取网页自动干掉广告、弹窗和导航栏,只留干净的 Markdown 正文。
29
+ 3. **带内存缓存**:同一个关键词在短时间内搜第二次,直接 0 毫秒从内存缓存返回,省时又省调用次数。
30
+ 4. **无需克隆安装**:已经发布到 npm 官方源,在客户端配上一行 `npx -y devin-search-mcp`,30 秒搞定。
75
31
 
76
- ### 工作原理
32
+ ### 它是怎么跑起来的?
77
33
 
78
34
  ```text
79
- 用户提问: "Vue 3.5 发布了哪些新特性?怎么升级?"
80
-
81
-
35
+ 你问 AI: "Next.js 15 怎么做 Server Actions 迁移?有哪些破坏性改动?"
36
+
37
+
82
38
  ┌────────────────────────────────────────────────────────┐
83
39
  │ Devin Search MCP │
84
- │ (本地 MCP 服务端)
40
+ │ (本地运行的轻量服务)
85
41
  │ │
86
- │ 1. 自动探测本地 Devin 安装路径与登录凭据 (跨平台)
87
- │ 2. 智能转译搜索意图,构建开发者最佳搜索指令
88
- │ 3. 驱动 Devin 官方针对开发者深度优化的 web_search
89
- │ 4. 响应深度修复与括号平衡容错 (response-repair)
90
- │ 5. 网页正文深度去噪与正文清洗 (webfetch)
91
- │ 6. 轻量级内存 MD5 + TTL 缓存,相同查询毫秒级返回 │
92
- │ 7. 返回标准化结构 (包含标题、链接、要点摘录与 Markdown)│
42
+ │ 1. 自动探测本地 Devin 引擎和登录凭据
43
+ │ 2. 把自然语言转成精准的开发者搜索指令
44
+ │ 3. 调起 Devin 内置的实时网络搜索网关
45
+ │ 4. 自动修复并提炼出干净的标题、URL 和摘要
46
+ │ 5. 命中缓存直接秒回,未命中则保存到缓存
93
47
  └────────────────────────────────────────────────────────┘
94
-
95
-
96
- 检索到 3 条核心结果:
97
- [1/3] Announcing Vue 3.5 | The Vue Point (https://blog.vuejs.org/posts/vue-3-5)
98
- [2/3] Vue 3.5 响应式系统重构与内存优化 56%...
99
- [3/3] Reactive Props Destructure 稳定版指南...
48
+
49
+
50
+ 返回给你的 AI:
51
+ [1] Next.js 15 升级指南 (https://nextjs.org/docs/app/building-your-application/upgrading/version-15)
52
+ [2] React 19 支持与 Async Request APIs 变更点说明...
100
53
  ```
101
54
 
102
- ### 快速配置 (开箱即用)
55
+ ### 30 秒上手配置
103
56
 
104
- 无需手动克隆代码,直接在你的客户端 MCP 配置文件中添加配置即可:
57
+ 不需要自己下载代码,直接在你的 AI 工具的 MCP 配置文件里加这一段就行:
105
58
 
106
- #### 1. CodeBuddy / Cursor
59
+ #### 1. CodeBuddy / Cursor 用户
107
60
 
108
- 在 `.codebuddy/mcp.json` 或 `.cursor/mcp.json` (或全局设置) 中加入:
61
+ 在 `.codebuddy/mcp.json` 或 `.cursor/mcp.json`(也可以直接在设置面板里的 MCP 设置)加入:
109
62
 
110
63
  ```json
111
64
  {
@@ -121,30 +74,19 @@ Add to your MCP configuration (`claude_desktop_config.json`, `~/.claude.json`, o
121
74
  }
122
75
  ```
123
76
 
124
- #### 2. Claude Desktop (桌面端)
77
+ #### 2. Claude Desktop 用户
125
78
 
79
+ 打开配置文件:
126
80
  * **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
127
81
  * **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
128
82
 
129
- ```json
130
- {
131
- "mcpServers": {
132
- "devin-search": {
133
- "command": "npx",
134
- "args": [
135
- "-y",
136
- "devin-search-mcp"
137
- ]
138
- }
139
- }
140
- }
141
- ```
83
+ 把上面那段 JSON 粘贴到 `"mcpServers"` 下面,重启 Claude 就能在对话界面看到小锤子图标亮起。
142
84
 
143
- #### 3. Claude Code (命令行端)
85
+ #### 3. Claude Code (命令行版) 用户
144
86
 
145
- `~/.claude.json` 中的 `mcpServers` 字段下添加上述相同配置。
87
+ 直接加到 `~/.claude.json` `mcpServers` 里,用法完全一样。
146
88
 
147
- > **自定义 Devin 路径提示**:如果你的 Devin Desktop 安装在非系统盘路径(如 `E:\Program\devin`),可通过 `DEVIN_PATH` 环境变量指定:
89
+ > **小贴士(路径排查)**:如果你的 Devin Desktop 装在非常规路径(比如 `E:\Program\devin`),可以在配置的 `env` 显式指定它的可执行文件路径:
148
90
  > ```json
149
91
  > {
150
92
  > "mcpServers": {
@@ -159,68 +101,89 @@ Add to your MCP configuration (`claude_desktop_config.json`, `~/.claude.json`, o
159
101
  > }
160
102
  > ```
161
103
 
162
- ### 提供的 MCP 工具清单
104
+ ### 都有哪些工具可以用?
163
105
 
164
- | 工具名称 | 功能说明 | 核心参数 |
165
- | :--- | :--- | :--- |
166
- | **`devin_web_search`** | 全网实时搜索,返回结构化标题、链接及摘要 | `query` (必填), `num_results` (默认5), `detailed` (详细总结) |
167
- | **`devin_web_fetch`** | 深度阅读并清洗指定网页正文,去除无关噪音 | `url` (必填), `extract_mode` (`markdown`/`text`/`summary`) |
168
- | **`extract_devin_key`** | 跨平台自动提取本地 Devin / Windsurf API Key | 无需参数 |
169
- | **`devin_status`** | 诊断工具: 检查本地 Devin 引擎路径与登录身份 | 无需参数 |
106
+ 配置好之后,你的 AI 会自动多出这 4 个能力:
170
107
 
171
- #### 工具调用返回示范 (`devin_web_search`)
108
+ 1. **`devin_web_search`(全网实时搜索)**
109
+ * 想搜啥直接搜,比如 `Vue 3.5 reactive props`、`Tauri v2 migration`。
110
+ * 支持传参数:`query`(必填)、`num_results`(想看几条,默认 5 条)、`detailed`(是否让它顺便把结果综合分析提炼一段,默认 false)。
111
+ * 返回格式是干干净净的列表:
112
+ ```json
113
+ [
114
+ {
115
+ "title": "Announcing Vue 3.5 | The Vue Point",
116
+ "url": "https://blog.vuejs.org/posts/vue-3-5",
117
+ "snippet": "Vue 3.5 带来响应式系统重大重构,内存占用降低 56%,Reactive Props 解构现已稳定..."
118
+ }
119
+ ]
120
+ ```
172
121
 
173
- ```json
174
- [
175
- {
176
- "title": "Announcing Vue 3.5 | The Vue Point",
177
- "url": "https://blog.vuejs.org/posts/vue-3-5",
178
- "snippet": "Vue 3.5 带来了响应式系统重大重构,内存占用降低 56%,Reactive Props 解构现已稳定..."
179
- }
180
- ]
181
- ```
122
+ 2. **`devin_web_fetch`(网页深度抓取与阅读)**
123
+ * 给它一个网址(比如某个文档页面或报错的 GitHub Issue),它会帮你抓取正文,并且自动去除广告、弹窗和样式噪声。
124
+ * 支持 `extract_mode`: `"markdown"`(默认,结构化排版)、`"text"`(纯文字)、`"summary"`(只提炼要点)。
182
125
 
183
- ### 环境变量说明
126
+ 3. **`extract_devin_key`(提取本地 Key)**
127
+ * 跟 fast-context-mcp 的 `extract_windsurf_key` 一模一样,自动跨平台读出本地当前生效的 Token。
184
128
 
185
- | 环境变量 | 默认值 | 作用说明 |
186
- | :--- | :--- | :--- |
187
- | `DEVIN_PATH` | *(自动探测)* | 自定义指定的 `devin.exe` 或 `devin` 可执行文件绝对路径 |
188
- | `DEVIN_API_KEY` | *(自动探测)* | 显式覆盖 Devin Session Token 或 API Key |
189
- | `DEVIN_TIMEOUT_MS` | `35000` | 搜索与抓取的超时毫秒数 |
129
+ 4. **`devin_status`(诊断状态)**
130
+ * 查一下当前调用的是哪个路径的 Devin,账号登录状态是否正常。
190
131
 
191
- ### 🤖 面向 AI 助手的一键自愈部署指南
132
+ ### 常见踩坑与注意事项
192
133
 
193
- > **如果你是正在阅读此仓库的 AI 助手(Claude, Cursor, CodeBuddy, Cline 等):**
194
- > 1. 请自动识别用户当前的客户端配置文件路径(例如 `.codebuddy/mcp.json` `.cursor/mcp.json`);
195
- > 2. 自动在 `"mcpServers"` 下写入 `"devin-search": { "command": "npx", "args": ["-y", "devin-search-mcp"] }`;
196
- > 3. 无需让用户手动输入命令或登录,一切凭证均为本地自动识别;
197
- > 4. 详细的 AI 规范可参阅 [AI_PROMPT.md](AI_PROMPT.md)。
134
+ 1. **电脑里必须装过 Devin Desktop 吗?**
135
+ * 是的。因为它是直接调用 Devin 的官方网关。只要你电脑上安装过 Devin Desktop 并且登录过一次,之后完全不用管它,MCP 会自动提取凭证跑起来。
136
+ 2. **为什么不直接用常规的 Google / Bing 爬虫脚本?**
137
+ * 公开搜索引擎爬虫天天被风控弹验证码,而且返回的 HTML 极其杂乱;Devin 官方搜索走的是针对技术问答和开发者文档清洗过的内部通道,精准度和干净程度完全是两个量级。
138
+ 3. **遇到权限提示怎么办?**
139
+ * 我们的服务端已经自动注入了 `--respect-workspace-trust false` 与自动授权参数,在命令行和各编辑器下非交互运行时不会弹出卡死,开箱即用。
198
140
 
199
- ### 项目工程结构
141
+ ---
200
142
 
201
- ```text
202
- devin-search-mcp/
203
- ├── bin/
204
- │ └── devin-search-mcp.mjs # 命令行可执行入口 (stdio)
205
- ├── src/
206
- │ ├── index.mjs # MCP Server 实例与工具路由
207
- │ ├── detector.mjs # Devin 本地安装与凭证自动探测
208
- │ ├── extract-key.mjs # SQLite (sql.js) 与 TOML 凭据提取
209
- │ ├── search.mjs # web_search 真实网络搜索与结构化解析
210
- │ ├── fetch.mjs # webfetch 网页深度抓取与正文清洗
211
- │ ├── response-repair.mjs # 括号深度平衡与 JSON 自动修复容错
212
- │ └── cache.mjs # 轻量级 MD5 / TTL 搜索结果缓存
213
- ├── .github/
214
- │ └── workflows/publish.yml # 自动化 CI/CD npm 发版流水线
215
- ├── AI_PROMPT.md # 专供 AI 自动阅读与部署的引导文档
216
- ├── package.json
217
- ├── test.mjs # 端到端业务逻辑测试
218
- ├── test-mcp-protocol.mjs # 真实的 MCP stdio 协议模拟测试
219
- ├── README.md
220
- └── LICENSE
143
+ ### 🤖 写给正在配置此项目的 AI 助手
144
+
145
+ > 如果你是正在帮用户装配该环境的 AI 助手(Claude、Cursor、CodeBuddy、Cline 等):
146
+ > 1. 请检测用户宿主环境,找到对应客户端的 MCP 配置文件;
147
+ > 2. 将 `"devin-search": { "command": "npx", "args": ["-y", "devin-search-mcp"] }` 直接注入到配置文件的 `"mcpServers"` 节点下;
148
+ > 3. 不需要让用户输入任何账号密码或跑配置向导,本地已登录状态会自动识别;
149
+ > 4. 详细的 AI 自动化规则见 [AI_PROMPT.md](AI_PROMPT.md)。
150
+
151
+ ---
152
+
153
+ ## 🌐 English
154
+
155
+ AI-driven real-time Web Search and Web Fetch as an MCP tool — powered by Devin AI's developer-focused search gateway.
156
+
157
+ ### Quick Setup
158
+
159
+ Add to your MCP configuration (`claude_desktop_config.json`, `~/.claude.json`, or `.cursor/mcp.json`):
160
+
161
+ ```json
162
+ {
163
+ "mcpServers": {
164
+ "devin-search": {
165
+ "command": "npx",
166
+ "args": [
167
+ "-y",
168
+ "devin-search-mcp"
169
+ ]
170
+ }
171
+ }
172
+ }
221
173
  ```
222
174
 
223
- ### 开源协议
175
+ ### Key Tools
176
+
177
+ * **`devin_web_search`**: Real-time web search for recent libraries, docs, and issues (`query`, `num_results`, `detailed`).
178
+ * **`devin_web_fetch`**: Deep reader that cleans away advertisements, navbars, and script clutter (`url`, `extract_mode`).
179
+ * **`extract_devin_key`**: Auto-extract Devin / Windsurf API Key from local installation.
180
+ * **`devin_status`**: Diagnostic tool for local engine path and login identity.
181
+
182
+ For full AI agent machine instructions, check [AI_PROMPT.md](AI_PROMPT.md).
183
+
184
+ ---
185
+
186
+ ## License
224
187
 
225
- 本项目采用 [MIT 许可证](LICENSE)。
188
+ MIT License © 2026 suvon
226
189
 
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
 
3
3
  /**
4
4
  * devin-search-mcp 命令行入口
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devin-search-mcp",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "Devin AI 驱动的联网搜索与网页抓取 MCP 服务 (基于 Devin Desktop / CLI)",
5
5
  "main": "src/index.mjs",
6
6
  "type": "module",
package/src/detector.mjs CHANGED
@@ -140,19 +140,21 @@ export function inspectDevinStatus() {
140
140
  authStatusText = execFileSync(executable, ["auth", "status"], {
141
141
  encoding: "utf-8",
142
142
  stdio: ["pipe", "pipe", "pipe"],
143
- timeout: 5000,
143
+ timeout: 15000,
144
144
  }).trim();
145
145
  } catch (err) {
146
146
  authStatusText = err.stdout || err.message;
147
147
  }
148
148
  }
149
149
 
150
+ const isLoggedIn = authStatusText.includes("Logged in") || hasToken;
151
+
150
152
  return {
151
153
  executable,
152
154
  credentialsPath,
153
155
  hasToken,
154
156
  tokenSnippet,
155
- isLoggedIn: authStatusText.includes("Logged in"),
157
+ isLoggedIn,
156
158
  statusSummary: authStatusText,
157
159
  };
158
160
  }
package/src/fetch.mjs CHANGED
@@ -14,7 +14,11 @@ import { searchCache } from "./cache.mjs";
14
14
  * @param {"markdown"|"text"|"summary"} [options.extractMode="markdown"] - 提取格式
15
15
  * @param {number} [options.timeoutMs=35000] - 超时毫秒数
16
16
  */
17
- export async function executeWebFetch({ url, extractMode = "markdown", timeoutMs = 35000 }) {
17
+ export async function executeWebFetch({
18
+ url,
19
+ extractMode = "markdown",
20
+ timeoutMs = parseInt(process.env.DEVIN_TIMEOUT_MS || "60000", 10),
21
+ }) {
18
22
  if (!url || typeof url !== "string" || !/^https?:\/\//i.test(url)) {
19
23
  throw new Error("请提供有效的 HTTP/HTTPS 网页 URL");
20
24
  }
package/src/search.mjs CHANGED
@@ -40,7 +40,7 @@ export async function executeWebSearch({
40
40
  query,
41
41
  num_results = 5,
42
42
  detailed = false,
43
- timeoutMs = 35000,
43
+ timeoutMs = parseInt(process.env.DEVIN_TIMEOUT_MS || "60000", 10),
44
44
  maxRetries = 1,
45
45
  }) {
46
46
  if (!query || typeof query !== "string") {