概述
安裝
內容詳情
替代品
什麼是Google Researcher MCP Server?
這是一個Model Context Protocol (MCP)服務器,專門為AI助手(如Claude、GPT等)提供強大的網絡研究能力。它允許AI助手像人類研究員一樣搜索信息、閱讀網頁內容、分析文檔,並將這些信息整合到對話中。如何使用Google Researcher MCP Server?
安裝配置後,AI助手可以直接調用各種研究工具。例如,你可以讓助手'搜索最新的AI法規新聞',它會自動使用google_news_search工具獲取最新信息。整個過程對用戶透明,AI助手會智能選擇最適合的工具完成任務。適用場景
適合需要即時信息、多源驗證、深度研究的場景。比如學術研究、市場分析、新聞摘要、技術文檔編寫、競爭情報收集等。無論是快速查證事實還是進行系統性的文獻綜述,這個工具都能大幅提升AI助手的信息獲取能力。主要功能
如何使用
使用案例
常見問題
相關資源
安裝
{
"mcpServers": {
"google-researcher": {
"command": "npx",
"args": ["-y", "google-researcher-mcp"],
"env": {
"GOOGLE_CUSTOM_SEARCH_API_KEY": "YOUR_API_KEY_HERE",
"GOOGLE_CUSTOM_SEARCH_ID": "YOUR_SEARCH_ID_HERE"
}
}
}
}
{
"mcpServers": {
"google-researcher": {
"command": "docker",
"args": ["run", "-i", "--rm", "--env-file", "/path/to/.env", "google-researcher-mcp"]
}
}
}🚀 Google Researcher MCP Server
這是一款專業的AI助手研究工具,支持谷歌搜索、網頁抓取、學術論文搜索、專利搜索等功能,為AI研究和應用提供強大支持。
🚀 快速開始
Claude Desktop (macOS)
在 ~/Library/Application Support/Claude/claude_desktop_config.json 中添加以下內容:
{
"mcpServers": {
"google-researcher": {
"command": "npx",
"args": ["-y", "google-researcher-mcp"],
"env": {
"GOOGLE_CUSTOM_SEARCH_API_KEY": "YOUR_API_KEY_HERE",
"GOOGLE_CUSTOM_SEARCH_ID": "YOUR_SEARCH_ID_HERE"
}
}
}
}
Claude Desktop (Windows)
在 %APPDATA%\Claude\claude_desktop_config.json 中添加以下內容:
{
"mcpServers": {
"google-researcher": {
"command": "npx",
"args": ["-y", "google-researcher-mcp"],
"env": {
"GOOGLE_CUSTOM_SEARCH_API_KEY": "YOUR_API_KEY_HERE",
"GOOGLE_CUSTOM_SEARCH_ID": "YOUR_SEARCH_ID_HERE"
}
}
}
}
一鍵安裝 (MCPB)
從 GitHub Releases 下載最新的 .mcpb 包,雙擊在 Claude Desktop 中安裝。安裝過程中會提示你輸入谷歌 API 憑證。
Claude Code
在 ~/.claude.json 中添加以下內容:
{
"mcpServers": {
"google-researcher": {
"command": "npx",
"args": ["-y", "google-researcher-mcp"],
"env": {
"GOOGLE_CUSTOM_SEARCH_API_KEY": "YOUR_API_KEY_HERE",
"GOOGLE_CUSTOM_SEARCH_ID": "YOUR_SEARCH_ID_HERE"
}
}
}
}
Cline / Roo Code
在 MCP 設置中使用上述相同的 JSON 配置。
需要 API 密鑰? 請參閱 API 設置指南,獲取逐步指導以獲取谷歌 API 憑證。
本地開發
git clone https://github.com/zoharbabin/google-researcher-mcp.git && cd google-researcher-mcp
npm install && npx playwright install chromium
cp .env.example .env # 然後將你的谷歌 API 密鑰添加到 .env 文件中
npm run dev # 服務器現在以 STDIO 傳輸模式運行
注意:這將以 STDIO 模式啟動服務器,這對於本地 AI 助手集成已經足夠。基於 Web 或多客戶端設置才需要使用帶有 OAuth 的 HTTP 傳輸模式 — 請參閱 選擇傳輸模式。
驗證是否正常工作
配置完成後,向你的 AI 助手提問:
"搜索關於 AI 法規的最新新聞"
助手將使用 google_news_search 工具並返回當前的文章。如果你看到搜索結果,則表示服務器正常工作。
✨ 主要特性
核心功能
| 特性 | 描述 |
|---|---|
| 網頁抓取 | 快速抓取靜態 HTML 頁面,並自動使用 Playwright 處理 JavaScript 渲染的頁面 |
| YouTube 字幕提取 | 強大的提取功能,帶有重試邏輯和 10 種分類錯誤類型 |
| 文檔解析 | 自動檢測並從 PDF、DOCX、PPTX 文檔中提取文本 |
| 質量評分 | 根據相關性(35%)、新鮮度(20%)、權威性(25%)和內容質量(20%)對來源進行排名 |
MCP 協議支持
| 特性 | 描述 |
|---|---|
| 工具 | 提供 8 種工具:search_and_scrape、google_search、google_image_search、google_news_search、scrape_page、sequential_search、academic_search、patent_search |
| 資源 | 暴露服務器狀態:stats://tools(每個工具的指標)、stats://cache、search://recent、config://server |
| 提示模板 | 預構建的模板:comprehensive-research、fact-check、summarize-url、news-briefing |
| 註釋 | 為內容添加受眾、優先級和時間戳標籤 |
生產就緒
| 特性 | 描述 |
|---|---|
| 緩存 | 兩層(內存 + 磁盤)緩存,每個工具都有獨立的命名空間,可降低 API 成本 |
| 雙傳輸模式 | 本地客戶端使用 STDIO 模式,Web 應用使用 HTTP+SSE 模式 |
| 安全 | 支持 OAuth 2.1,提供 SSRF 保護和細粒度的作用域控制 |
| 彈性 | 具備斷路器、超時和優雅降級功能 |
| 監控 | 提供管理端點,用於查看緩存統計信息、事件存儲和健康檢查 |
詳細文檔請參考:YouTube 字幕提取 · 架構 · 測試
📦 安裝指南
前提條件
- Node.js 版本 20.0.0 或更高
- 谷歌 API 密鑰:
- Chromium(用於 JavaScript 渲染):通過
npx playwright install chromium自動安裝 - OAuth 2.1 提供商(僅 HTTP 傳輸模式需要):一個外部授權服務器(如 Auth0、Okta),用於頒發 JWT。STDIO 模式不需要。
安裝與設置
-
克隆倉庫:
git clone https://github.com/zoharbabin/google-researcher-mcp.git cd google-researcher-mcp -
安裝依賴:
npm install npx playwright install chromium -
配置環境變量:
cp .env.example .env打開
.env文件,添加你的谷歌 API 密鑰。其他變量都是可選的 — 請參閱.env.example文件中的註釋以獲取詳細說明。
運行服務器
-
開發模式(文件更改時自動重新加載):
npm run dev -
生產模式:
npm run build npm start
使用 Docker 運行
# 構建鏡像
docker build -t google-researcher-mcp .
# 以 STDIO 模式運行(默認,適用於 MCP 客戶端)
docker run -i --rm --env-file .env google-researcher-mcp
# 在端口 3000 上使用 HTTP 傳輸模式運行
# (MCP_TEST_MODE= 覆蓋 Dockerfile 中的默認值 "stdio" 以啟用 HTTP)
docker run -d --rm --env-file .env -e MCP_TEST_MODE= -p 3000:3000 google-researcher-mcp
使用 Docker Compose(快速設置 HTTP 傳輸模式):
cp .env.example .env # 填寫你的 API 密鑰
docker compose up --build
curl http://localhost:3000/health
在 Claude Code 中使用 Docker (~/.claude/claude_desktop_config.json):
{
"mcpServers": {
"google-researcher": {
"command": "docker",
"args": ["run", "-i", "--rm", "--env-file", "/path/to/.env", "google-researcher-mcp"]
}
}
}
安全注意事項:切勿將機密信息硬編碼到 Docker 鏡像中。始終在運行時通過 --env-file 或 -e 標誌傳遞。
💻 使用示例
為 AI 助手(大語言模型)提供的使用示例
推薦工具選擇
| 任務 | 使用工具 |
|---|---|
| 研究某個主題、回答問題 | search_and_scrape — 一次調用即可完成搜索和內容檢索(推薦) |
| 複雜的多步驟調查 | sequential_search — 跟蹤 3 次以上搜索的進度,支持分支搜索 |
| 查找學術論文 | academic_search — 在 arXiv、PubMed、IEEE 等平臺搜索論文,並提供引用(APA、MLA、BibTeX) |
| 搜索專利 | patent_search — 在谷歌專利數據庫中進行現有技術搜索、自由實施分析 |
| 查找近期新聞 | google_news_search — 支持新鮮度過濾和日期排序 |
| 查找圖片 | google_image_search — 支持大小、類型、顏色過濾 |
| 僅獲取 URL 列表 | google_search — 當你只需要 URL 而自己處理頁面時使用 |
| 讀取特定 URL 的內容 | scrape_page — 還可以提取 YouTube 字幕並解析 PDF/DOCX/PPTX 文檔 |
工具調用示例
// 研究某個主題(大多數查詢推薦使用)
{ "name": "search_and_scrape", "arguments": { "query": "2024 年氣候變化的影響", "num_results": 5 } }
// 帶跟蹤的多步驟研究(用於複雜調查)
{ "name": "sequential_search", "arguments": { "searchStep": "開始研究量子計算", "stepNumber": 1, "totalStepsEstimate": 4, "nextStepNeeded": true } }
// 查找學術論文(帶引用的同行評審來源)
{ "name": "academic_search", "arguments": { "query": "Transformer 神經網絡", "num_results": 5 } }
// 搜索專利(現有技術、自由實施分析)
{ "name": "patent_search", "arguments": { "query": "機器學習優化", "search_type": "prior_art" } }
// 獲取近期新聞
{ "name": "google_news_search", "arguments": { "query": "AI 法規", "freshness": "week" } }
// 查找圖片
{ "name": "google_image_search", "arguments": { "query": "太陽能電池板安裝", "type": "photo" } }
// 讀取特定頁面
{ "name": "scrape_page", "arguments": { "url": "https://example.com/article" } }
// 獲取 YouTube 字幕
{ "name": "scrape_page", "arguments": { "url": "https://www.youtube.com/watch?v=VIDEO_ID" } }
客戶端集成示例
STDIO 客戶端(本地進程)
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
const transport = new StdioClientTransport({
command: "node",
args: ["dist/server.js"]
});
const client = new Client({ name: "my-client" });
await client.connect(transport);
// 搜索谷歌
const searchResult = await client.callTool({
name: "google_search",
arguments: { query: "Model Context Protocol" }
});
console.log(searchResult.content[0].text);
// 提取 YouTube 字幕
const transcript = await client.callTool({
name: "scrape_page",
arguments: { url: "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }
});
console.log(transcript.content[0].text);
HTTP+SSE 客戶端(Web 應用)
需要從配置的授權服務器獲取有效的 OAuth 2.1 承載令牌。
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
const transport = new StreamableHTTPClientTransport(
new URL("http://localhost:3000/mcp"),
{
getAuthorization: async () => `Bearer YOUR_ACCESS_TOKEN`
}
);
const client = new Client({ name: "my-client" });
await client.connect(transport);
const result = await client.callTool({
name: "search_and_scrape",
arguments: { query: "Model Context Protocol", num_results: 3 }
});
console.log(result.content[0].text);
📚 詳細文檔
可用工具
何時使用每個工具
| 工具 | 最適用場景 | 使用時機 |
|---|---|---|
search_and_scrape |
研究(推薦) | 你需要使用網絡資源回答問題時。最有效 — 一次調用即可完成搜索和內容檢索。對來源進行質量評分 |
sequential_search |
複雜調查 | 需要進行 3 次以上不同角度的搜索,或者可能提前放棄的研究。跟蹤進度,支持分支搜索。你負責推理,工具負責跟蹤狀態 |
academic_search |
同行評審論文 | 需要權威學術來源的研究。返回帶引用(APA、MLA、BibTeX)、摘要和 PDF 鏈接的論文 |
patent_search |
專利研究 | 現有技術搜索、自由實施分析、專利佈局。返回帶專利號、受讓人、發明人及 PDF 鏈接的專利 |
google_search |
僅查找 URL | 你只需要 URL 列表(不需要內容),或者想使用自定義邏輯自己處理頁面時 |
google_image_search |
查找圖片 | 你需要視覺內容 — 照片、插圖、圖形。文本研究請使用 search_and_scrape |
google_news_search |
當前新聞 | 你需要近期新聞文章。使用 scrape_page 讀取結果中的完整文章 |
scrape_page |
讀取特定 URL 的內容 | 你有一個 URL 並需要其內容。自動處理 YouTube 字幕和文檔(PDF、DOCX、PPTX) |
工具參考
search_and_scrape(研究推薦工具)
一次調用即可搜索谷歌並從搜索結果中獲取內容。返回經過質量評分、去重的文本,並標註來源。響應中包含大小元數據(estimatedTokens、sizeCategory、truncated)。
| 參數 | 類型 | 默認值 | 描述 |
|---|---|---|---|
query |
字符串 | 必需 | 搜索查詢(1 - 500 個字符) |
num_results |
數字 | 3 | 結果數量(1 - 10) |
include_sources |
布爾值 | true | 是否附加來源 URL |
deduplicate |
布爾值 | true | 是否去除重複內容 |
max_length_per_source |
數字 | 50KB | 每個來源的最大內容長度(字符數) |
total_max_length |
數字 | 300KB | 所有來源的最大總內容長度(字符數) |
filter_by_query |
布爾值 | false | 是否僅過濾包含查詢關鍵詞的段落 |
google_search
返回谷歌搜索的排名 URL。當你只需要鏈接而不需要內容時使用。
| 參數 | 類型 | 默認值 | 描述 |
|---|---|---|---|
query |
字符串 | 必需 | 搜索查詢(1 - 500 個字符) |
num_results |
數字 | 5 | 結果數量(1 - 10) |
time_range |
字符串 | - | day、week、month、year |
site_search |
字符串 | - | 限制搜索域名 |
exact_terms |
字符串 | - | 必需短語 |
exclude_terms |
字符串 | - | 排除的單詞 |
google_image_search
使用過濾選項搜索谷歌圖片。
| 參數 | 類型 | 默認值 | 描述 |
|---|---|---|---|
query |
字符串 | 必需 | 搜索查詢(1 - 500 個字符) |
num_results |
數字 | 5 | 結果數量(1 - 10) |
size |
字符串 | - | huge、large、medium、small |
type |
字符串 | - | clipart、face、lineart、photo、animated |
color_type |
字符串 | - | color、gray、mono、trans |
file_type |
字符串 | - | jpg、gif、png、bmp、svg、webp |
google_news_search
使用新鮮度和日期排序搜索谷歌新聞。
| 參數 | 類型 | 默認值 | 描述 |
|---|---|---|---|
query |
字符串 | 必需 | 搜索查詢(1 - 500 個字符) |
num_results |
數字 | 5 | 結果數量(1 - 10) |
freshness |
字符串 | week | hour、day、week、month、year |
sort_by |
字符串 | relevance | relevance、date |
news_source |
字符串 | - | 過濾到特定來源 |
scrape_page
從任何 URL 提取文本。自動檢測:網頁(靜態/JS)、YouTube(字幕)、文檔(PDF/DOCX/PPTX)。
| 參數 | 類型 | 默認值 | 描述 |
|---|---|---|---|
url |
字符串 | 必需 | 要抓取的 URL(最大 2048 個字符) |
max_length |
數字 | 50KB | 最大內容長度(字符數)。超過此長度的內容將在自然斷點處截斷 |
mode |
字符串 | full | full 返回內容,preview 僅返回元數據 + 結構(在獲取內容之前檢查大小很有用) |
sequential_search
跟蹤多步驟研究狀態。遵循 sequential_thinking 模式:你負責推理,工具負責跟蹤狀態。
| 參數 | 類型 | 默認值 | 描述 |
|---|---|---|---|
searchStep |
字符串 | 必需 | 當前步驟的描述(1 - 2000 個字符) |
stepNumber |
數字 | 必需 | 當前步驟編號(從 1 開始) |
totalStepsEstimate |
數字 | 5 | 估計的總步驟數(1 - 50) |
nextStepNeeded |
布爾值 | 必需 | 是否需要更多步驟,完成時為 false |
source |
對象 | - | 找到的來源:{ url, summary, qualityScore? } |
knowledgeGap |
字符串 | - | 識別出的知識差距 — 仍缺少的內容 |
isRevision |
布爾值 | - | 是否正在修訂上一步 |
revisesStep |
數字 | - | 正在修訂的步驟編號 |
branchId |
字符串 | - | 分支研究的標識符 |
academic_search
通過谷歌自定義搜索 API 搜索學術論文,過濾到學術來源(arXiv、PubMed、IEEE、Nature、Springer 等)。返回帶預格式化引用的論文。
| 參數 | 類型 | 默認值 | 描述 |
|---|---|---|---|
query |
字符串 | 必需 | 搜索查詢(1 - 500 個字符) |
num_results |
數字 | 5 | 論文數量(1 - 10) |
year_from |
數字 | - | 按最小出版年份過濾 |
year_to |
數字 | - | 按最大出版年份過濾 |
source |
字符串 | all | all、arxiv、pubmed、ieee、nature、springer |
pdf_only |
布爾值 | false | 是否僅返回帶有 PDF 鏈接的結果 |
sort_by |
字符串 | relevance | relevance、date |
patent_search
在谷歌專利數據庫中進行現有技術搜索、自由實施分析和專利佈局。返回帶專利號、受讓人、發明人及 PDF 鏈接的專利。
| 參數 | 類型 | 默認值 | 描述 |
|---|---|---|---|
query |
字符串 | 必需 | 搜索查詢(1 - 500 個字符) |
num_results |
數字 | 5 | 結果數量(1 - 10) |
search_type |
字符串 | prior_art | prior_art、specific、landscape |
patent_office |
字符串 | all | all、US、EP、WO、JP、CN、KR |
assignee |
字符串 | - | 按受讓人/公司過濾 |
inventor |
字符串 | - | 按發明人姓名過濾 |
cpc_code |
字符串 | - | 按 CPC 分類代碼過濾 |
year_from |
數字 | - | 按最小年份過濾 |
year_to |
數字 | - | 按最大年份過濾 |
系統架構
graph TD
A[MCP Client] -->|local process| B[STDIO Transport]
A -->|network| C[HTTP+SSE Transport]
C --> L[OAuth 2.1 + Rate Limiter]
L --> D
C -.->|session replay| K[Event Store]
B --> D[McpServer<br>MCP SDK routing + dispatch]
D --> F[google_search]
D --> G[scrape_page]
D --> I[search_and_scrape]
D --> IMG[google_image_search]
D --> NEWS[google_news_search]
I -.->|delegates| F
I -.->|delegates| G
I --> Q[Quality Scoring]
G --> N[SSRF Validator]
N --> S1[CheerioCrawler<br>static HTML]
S1 -.->|insufficient content| S2[Playwright<br>JS rendering]
G --> YT[YouTube Transcript<br>Extractor]
F & G & IMG & NEWS --> J[Persistent Cache<br>memory + disk]
D -.-> R[MCP Resources]
D -.-> P[MCP Prompts]
style J fill:#f9f,stroke:#333,stroke-width:2px
style K fill:#ccf,stroke:#333,stroke-width:2px
style L fill:#f99,stroke:#333,stroke-width:2px
style N fill:#ff9,stroke:#333,stroke-width:2px
style Q fill:#9f9,stroke:#333,stroke-width:2px
詳細解釋請參閱 架構指南。
使用說明
選擇傳輸模式
| STDIO | HTTP+SSE | |
|---|---|---|
| 最適用場景 | 本地 MCP 客戶端(Claude Code、Cline、Roo Code) | Web 應用、多客戶端設置、遠程訪問 |
| 認證 | 無需認證(進程級隔離) | 需要 OAuth 2.1 承載令牌 |
| 設置 | 零配置 — 只需提供 API 密鑰 | 需要 OAuth 提供商(Auth0、Okta 等) |
| 擴展 | 每個客戶端進程一個服務器 | 單個服務器,支持多個併發客戶端 |
建議:本地 AI 助手集成使用 STDIO 模式。僅在需要共享服務或 Web 應用集成時使用 HTTP+SSE 模式。
管理 API
管理和監控端點(僅 HTTP 傳輸模式可用):
| 方法 | 端點 | 描述 | 認證 |
|---|---|---|---|
GET |
/health |
服務器健康檢查(狀態、版本、正常運行時間) | 公開 |
GET |
/version |
服務器版本和運行時信息 | 公開 |
GET |
/mcp/cache-stats |
緩存性能統計信息 | mcp:admin:cache:read |
GET |
/mcp/event-store-stats |
事件存儲使用統計信息 | mcp:admin:event-store:read |
POST |
/mcp/cache-invalidate |
清除特定緩存條目 | mcp:admin:cache:invalidate |
POST |
/mcp/cache-persist |
強制將緩存保存到磁盤 | mcp:admin:cache:persist |
GET |
/mcp/oauth-config |
當前 OAuth 配置 | mcp:admin:config:read |
GET |
/mcp/oauth-scopes |
OAuth 作用域文檔 | 公開 |
GET |
/mcp/oauth-token-info |
令牌詳細信息 | 已認證 |
MCP 資源
服務器通過 MCP 資源協議 暴露狀態。使用 resources/list 發現可用資源,使用 resources/read 檢索資源。
| URI | 描述 |
|---|---|
search://recent |
最近 20 次搜索查詢,包含時間戳和結果數量 |
config://server |
服務器配置(版本、啟動時間、傳輸模式) |
stats://cache |
緩存統計信息(命中率、條目數量、內存使用情況) |
stats://events |
事件存儲統計信息(事件數量、存儲大小) |
示例(使用 MCP SDK):
const resources = await client.listResources();
const recentSearches = await client.readResource({ uri: "search://recent" });
MCP 提示模板
通過 MCP 提示模板協議 提供預構建的研究工作流模板。使用 prompts/list 發現提示模板,使用 prompts/get 檢索帶有參數的提示模板。
基礎研究提示模板
| 提示模板 | 參數 | 描述 |
|---|---|---|
comprehensive-research |
topic、depth(quick/standard/deep) |
對某個主題進行多源研究 |
fact-check |
claim、sources(數量) |
根據多個來源驗證一個聲明 |
summarize-url |
url、format(brief/detailed/bullets) |
總結單個 URL 的內容 |
news-briefing |
topic、timeRange(day/week/month) |
獲取某個主題的當前新聞摘要 |
高級研究提示模板
| 提示模板 | 參數 | 描述 |
|---|---|---|
patent-portfolio-analysis |
company、includeSubsidiaries |
分析一家公司的專利持有情況 |
competitive-analysis |
entities(逗號分隔)、aspects |
比較公司/產品 |
literature-review |
topic、yearFrom、sources |
學術文獻綜合分析 |
technical-deep-dive |
technology、focusArea |
深入的技術調查 |
technical-deep-dive 的重點領域:architecture、implementation、comparison、best-practices、troubleshooting
示例(使用 MCP SDK):
const prompts = await client.listPrompts();
// 基礎研究
const research = await client.getPrompt({
name: "comprehensive-research",
arguments: { topic: "量子計算", depth: "standard" }
});
// 高級:專利分析
const patents = await client.getPrompt({
name: "patent-portfolio-analysis",
arguments: { company: "Kaltura", includeSubsidiaries: true }
});
// 高級:競爭分析
const comparison = await client.getPrompt({
name: "competitive-analysis",
arguments: { entities: "React, Vue, Angular", aspects: "性能, 學習曲線, 生態系統" }
});
測試
| 腳本 | 描述 |
|---|---|
npm test |
運行所有單元/組件測試(Jest) |
npm run test:e2e |
完整的端到端測試套件(STDIO + HTTP + YouTube) |
npm run test:coverage |
生成代碼覆蓋率報告 |
npm run test:e2e:stdio |
僅測試 STDIO 傳輸模式的端到端測試 |
npm run test:e2e:sse |
僅測試 HTTP 傳輸模式的端到端測試 |
npm run test:e2e:youtube |
僅測試 YouTube 字幕提取的端到端測試 |
所有 NPM 腳本:
| 腳本 | 描述 |
|---|---|
npm start |
運行構建後的服務器(生產模式) |
npm run dev |
啟動並開啟即時重新加載(開發模式) |
npm run build |
將 TypeScript 編譯到 dist/ 目錄 |
npm run inspect |
打開 MCP Inspector 進行交互式調試 |
測試理念和結構請參閱 測試指南。
開發工具
MCP Inspector
MCP Inspector 是一個用於 MCP 服務器的可視化調試工具。使用它可以交互式測試工具、瀏覽資源和驗證提示模板。
運行 Inspector:
npm run inspect
這將在瀏覽器中打開一個界面 http://localhost:5173,通過 STDIO 連接到服務器。
預期結果:
| 基本元素 | 數量 | 項目 |
|---|---|---|
| 工具 | 8 | google_search、google_image_search、google_news_search、scrape_page、search_and_scrape、sequential_search、academic_search、patent_search |
| 資源 | 6 | search://recent、config://server、stats://cache、stats://events、search://session/current、stats://resources |
| 提示模板 | 8 | comprehensive-research、fact-check、summarize-url、news-briefing、patent-portfolio-analysis、competitive-analysis、literature-review、technical-deep-dive |
解決 Inspector 問題:
- “找不到模塊”錯誤:先運行
npm run build— Inspector 需要編譯後的 JavaScript。 - 工具調用因 API 錯誤失敗:確保
.env文件中設置了GOOGLE_CUSTOM_SEARCH_API_KEY和GOOGLE_CUSTOM_SEARCH_ID。 - 端口 5173 被佔用:Inspector UI 在端口 5173 上運行。停止使用該端口的其他服務,或者檢查是否有其他 Inspector 實例正在運行。
- 服務器啟動時崩潰:檢查所有依賴項是否已安裝(
npm install),以及 Playwright 是否已設置(npx playwright install chromium)。
🔧 技術細節
安全
OAuth 2.1 授權
/mcp/ 下的所有 HTTP 端點(除公開文檔外)都受 OAuth 2.1 保護:
- 令牌驗證:JWT 會根據你的授權服務器的 JWKS 端點(
${OAUTH_ISSUER_URL}/.well-known/jwks.json)進行驗證。 - 作用域強制:每個工具和管理操作都需要特定的 OAuth 作用域。
在 .env 文件中配置 OAUTH_ISSUER_URL 和 OAUTH_AUDIENCE。詳細信息請參閱 .env.example 文件。
STDIO 用戶:STDIO 傳輸模式不使用 OAuth。你可以跳過所有 OAuth 配置。
可用作用域
工具執行:
mcp:tool:google_search:executemcp:tool:google_image_search:executemcp:tool:google_news_search:executemcp:tool:scrape_page:executemcp:tool:search_and_scrape:execute
管理:
mcp:admin:cache:readmcp:admin:cache:invalidatemcp:admin:cache:persistmcp:admin:event-store:readmcp:admin:config:read
📄 許可證
本項目採用 MIT 許可證。詳情請參閱 LICENSE 文件。
替代品













