Memex定向搜索服务器
一种模型上下文协议(MCP)服务器,提供跨Memex对话历史和项目文件的有针对性的搜索功能。
概述
此MCP服务器使AI代理能够高效地搜索:
- 对话历史:来自Memex的952多个对话文件,包含元数据、标题、摘要和消息内容
- 项目文件:用户工作区中有516+个项目目录,其中包含各种文件类型和技术
特性
🔍 核心搜索工具
search_conversations-按文本、元数据和过滤器搜索对话历史记录get_conversation_snippet-在不过载上下文的情况下检索对话的特定部分search_projects-按内容、文件类型和名称搜索项目文件get_project_overview-通过技术检测获取项目摘要find_command- 新 从对话历史记录中查找特定命令、CLI使用情况或代码片段
🎯 智能上下文管理
- 返回有针对性的片段,而不是完整的对话
- 限制搜索范围以防止上下文爆炸
- 支持分面过滤(日期、项目、文件类型)
- 为搜索结果提供相关性评分
安装
# Clone the repository
git clone https://github.com/memextech/memex-targeted-search-server.git
cd memex-targeted-search-server
# Install dependencies
npm install
# Build the project
npm run build配置
服务器配置为搜索:
- 对话历史:
~/Library/Application Support/Memex/history/ - 项目文件:
~/Workspace/
MCP服务器配置
添加到您的MCP配置中(例如,Claude Desktop配置):
{
"mcpServers": {
"memex-search": {
"command": "node",
"args": ["/path/to/memex-targeted-search-server/dist/index.js"]
}
}
}使用示例
1.查找被遗忘的命令
“我不记得运行memex代理cli的命令是什么”
find_command({
query: "memex agent cli",
command_type: "cli",
limit: 5
})查找特定的npm命令
find_command({
query: "npm install",
command_type: "cli",
limit: 5
})示例响应:
{
"query": "npm install",
"total_found": 3,
"commands": [
{
"command": "npm install -g firebase-tools",
"context": "Install Firebase CLI: `npm install -g firebase-tools`\n- Login to Firebase: `firebase login`",
"conversation_id": "abc123",
"conversation_title": "Firebase Setup Guide",
"message_index": 7,
"confidence": 0.9,
"type": "cli"
}
]
}2.搜索对话
查找关于特定主题的对话
search_conversations({
query: "3D modeling",
limit: 5
})示例响应:
{
"total_found": 3,
"conversations": [
{
"conversation_id": "a3edfc8f-0978-415e-9de8-18f4d94ea3a2",
"title": "3D Interactive Solar System Model",
"summary": "Design an engaging, visually appealing 3D representation of planets and celestial bodies",
"created_at": "2025-05-27T17:13:26Z",
"project": "Stellar 3d solar system",
"message_count": 76,
"relevance": "content"
}
]
}按日期范围和项目筛选
search_conversations({
query: "python",
project: "cad_example",
date_from: "2025-01-01",
date_to: "2025-03-01",
limit: 3
})3.获取对话详细信息
从对话中检索特定消息
get_conversation_snippet({
conversation_id: "bf283daa-25d3-434f-ad7e-9adda48cdcdd",
message_start: 1,
message_count: 3
})示例响应:
{
"conversation_id": "bf283daa-25d3-434f-ad7e-9adda48cdcdd",
"title": "3D Model 3MF File Creation",
"message_range": "1-3",
"total_messages": 30,
"messages": [
{
"index": 1,
"role": "user",
"content": "can I create a 3D model in .3mf?"
},
{
"index": 2,
"role": "assistant",
"content": "I'll help you create a 3D model using PythonOCC and convert it to .3mf format..."
}
]
}4.搜索项目
按技术查找文件
search_projects({
query: "interface",
file_types: ["ts", "js"],
limit: 10
})搜索所有项目文件
search_projects({
query: "streamlit",
limit: 5
})示例响应:
{
"total_found": 3,
"results": [
{
"project": "ad_campaign_dashboard",
"file": "ad_campaign_dashboard/app.py",
"match": "import streamlit as st",
"line": 1
}
]
}5.获取项目概述
分析项目结构和技术栈
get_project_overview({
project_name: "memex_targeted_search_server"
})示例响应:
{
"name": "memex_targeted_search_server",
"path": "/Users/user/Workspace/memex_targeted_search_server",
"file_count": 8,
"directories": ["dist", "src"],
"file_types": {
"ts": 1,
"js": 1,
"json": 3,
"md": 1
},
"main_files": ["package.json", "README.md"],
"technologies": ["JavaScript/TypeScript"]
}实际使用场景
场景1:“我忘了那个命令……”
// User: "I don't remember what the command is to run the memex agent cli"
find_command({
query: "memex agent",
command_type: "cli",
limit: 5
})
// User: "What was that firebase command to deploy?"
find_command({
query: "firebase deploy",
command_type: "cli",
limit: 3
})
// Result: Finds exact commands with context from previous conversations场景2:寻找相关工作
// Agent: "I need to find previous conversations about Blender projects"
search_conversations({
query: "blender",
limit: 5
})
// Result: Finds 2 conversations about 3D Manhattan cityscape and geometric skyscraper
// Agent can then drill down into specific conversations for details场景3:代码引用查找
// Agent: "Show me Python projects that use Streamlit"
search_projects({
query: "streamlit",
file_types: ["py"],
limit: 10
})
// Result: Finds specific Python files with Streamlit imports
// Agent can then examine project structure and implementation patterns场景4:交叉引用发现
// Agent: "Find conversations from January 2025 about 3D modeling"
search_conversations({
query: "3D model",
date_from: "2025-01-01",
date_to: "2025-01-31",
limit: 5
})
// Agent: "Now show me the related project files"
get_project_overview({
project_name: "cad_example"
})api参考
搜索_对话
- 目的:使用灵活的筛选功能搜索对话历史记录
- 参数:
query(必填),limit,project,date_from,date_to - 退货:具有相关性评分的对话元数据数组
get_conversation_snippet
- 目的:从对话中检索特定消息范围
- 参数:
conversation_id(必填),message_start,message_count - 退货:包含消息详细信息的对话片段
搜索_项目
- 目的:按内容和元数据搜索项目文件
- 参数:
query(必填),file_types,limit - 退货:文件数组与上下文匹配
get_project_overview
- 目的:分析项目结构和技术栈
- 参数:
project_name(必填) - 退货:项目总结,包括文件计数和技术检测
find_命令
- 目的:从对话历史记录中查找特定命令、CLI用法或代码片段
- 参数:
query(必填),command_type(cli/code/config/any),limit - 退货:一系列带有上下文、置信度评分和对话参考的命令
建筑
内置:
- TypeScript -类型安全开发
- MCP-SDK -官方模型上下文协议SDK
- Node.js -运行时环境
- 文件系统API -直接文件访问以提高性能
性能注意事项
- 限制搜索范围以防止出现压倒性的结果
- 对大文件使用流式JSON解析
- 实现智能文件过滤
- 缓存频繁访问的元数据
- 返回截断的内容,并可按需提供完整的上下文
代理经验
服务器旨在实现最佳的代理交互:
- 目标搜索:在不过载上下文的情况下查找特定信息
- 分面过滤:多个搜索维度(日期、项目、文件类型)
- 渐进式发现:从摘要开始,深入到细节
- 上下文保护:保持对话和项目关系
发展
在发展中奔跑
npm run dev生产大楼
npm run build
npm start测试
该服务器包括全面的错误处理和优雅的降级功能,用于:
- 会话文件丢失或损坏
- 无法访问项目目录
- JSON解析无效
- 大文件处理
贡献
欢迎投稿!请随时提交拉取请求。
许可证
ISC许可证
______________________________________________________________________
🤖 生成于 Memex\ 合著者:Memex
