paper_recommend
Analyzes workspace code to recommend relevant academic papers. Scans source files to extract features like imports and terms, maps them to academic keywords, and provides tailored paper suggestions.
Instructions
分析工作区代码,自动推荐相关学术论文。
扫描指定目录下的源文件(.py, .tex, .md 等),提取 import 库名、算法术语、 LaTeX 标题等特征,映射到学术领域关键词后搜索论文推荐。
Args: workspace_path: 工作区根目录路径,例如 "E:/半导体实验" top_n: 返回推荐论文数量,默认 8
Returns: 推荐结果 JSON,包含检测到的库/术语、搜索查询和推荐论文列表
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_path | Yes | ||
| top_n | No |
Implementation Reference
- recommender.py:239-280 (handler)The core logic for paper recommendation, scanning the directory and searching for relevant papers.
def recommend_papers(workspace_path: str, top_n: int = 8) -> dict: """分析工作区代码,推荐相关论文 Args: workspace_path: 工作区根目录路径 top_n: 返回推荐数量 Returns: 推荐结果字典 """ if not os.path.isdir(workspace_path): return {"success": False, "error": f"directory not found: {workspace_path}"} # 1. 扫描工作区 scan = _scan_directory(workspace_path) if scan["files_scanned"] == 0: return { "success": False, "error": "no supported source files found in workspace", } # 2. 构建查询 query = _build_query(scan) if not query: return { "success": False, "error": "could not extract meaningful keywords from workspace", } # 3. 搜索论文 search_result = search_papers(query, rows=top_n) # 4. 组装结果 return { "success": True, "workspace": workspace_path, "files_scanned": scan["files_scanned"], "detected_libraries": dict(scan["imports"].most_common(10)), "detected_terms": dict(scan["academic_terms"].most_common(10)), "search_query": query, "recommended_papers": search_result.get("results", []), } - scholar_mcp_server.py:207-222 (registration)The MCP tool registration and wrapper function for paper_recommend.
@mcp.tool() def paper_recommend(workspace_path: str, top_n: int = 8) -> str: """分析工作区代码,自动推荐相关学术论文。 扫描指定目录下的源文件(.py, .tex, .md 等),提取 import 库名、算法术语、 LaTeX 标题等特征,映射到学术领域关键词后搜索论文推荐。 Args: workspace_path: 工作区根目录路径,例如 "E:/半导体实验" top_n: 返回推荐论文数量,默认 8 Returns: 推荐结果 JSON,包含检测到的库/术语、搜索查询和推荐论文列表 """ result = recommend_papers(workspace_path, top_n) return json.dumps(result, ensure_ascii=False, indent=2)