Meta MCP搜索
单个MCP服务器暴露 search_tool 通过语义搜索路由到1000多个本地MCP工具。
特性
- 语义搜索:用途
gte-small嵌入(8位量化,多线程)通过@xenova/transformers用于快速、准确地发现工具 - 混合搜索:查询与工具名称+描述的余弦相似性
- MCP协议:使用stdio传输完全实现模型上下文协议
- 对偶的运算:可以用作MCP服务器或直接作为TypeScript模块导入
安装
npm install meta-mcp-search用法
作为MCP服务器(stdio)-快速入门
运行MCP服务器最简单的方法是使用npx:
npx meta-mcp-search或者,如果全局安装:
npm install -g meta-mcp-search
meta-mcp-search服务器将:
- 从以下位置加载工具
config.json或tools-manifest.json在当前目录中 - 为所有工具构建嵌入
- 在stdio上监听MCP请求
作为进口模块
import { MetaMcpSearch, searchToolsDirect } from 'meta-mcp-search';
// Option 1: Create instance and use directly
const metaMcp = new MetaMcpSearch({
configPath: './tools-manifest.json'
});
await metaMcp.init();
const tools = await metaMcp.search('send a message to slack');
console.log(tools);
// Option 2: Quick search function
const tools = await searchToolsDirect('list files in google drive', {
configPath: './config.json'
});直接函数调用
import {
SearchEngine,
loadToolsFromConfig,
initSearchEngine,
searchTools
} from 'meta-mcp-search';
// Load tools
const tools = await loadToolsFromConfig('./tools-manifest.json');
// Initialize search engine
await initSearchEngine(tools);
// Search
const results = await searchTools('create a github issue', 5);配置
config.json格式
{
"mcpServers": {
"google-drive": {
"command": "node",
"args": ["./servers/google-drive/dist/index.js"],
"tools": [
{
"name": "google_drive_list",
"description": "List files in Google Drive",
"inputSchema": {
"type": "object",
"properties": {
"folderId": { "type": "string" }
},
"required": ["folderId"]
}
}
]
}
}
}tools-manifest.json格式
{
"version": "1.0.0",
"tools": [
{
"name": "google_drive_list",
"description": "List files in Google Drive",
"inputSchema": {
"type": "object",
"properties": {
"folderId": { "type": "string" }
},
"required": ["folderId"]
},
"serverKey": "google-drive"
}
]
}API 参考
MetaMcpSearch
元MCP搜索功能的主类。
const metaMcp = new MetaMcpSearch(options?: MetaMcpSearchOptions);
await metaMcp.init();
await metaMcp.search(query: string, limit?: number);
await metaMcp.start(); // Start MCP serverSearchEngine
低级搜索引擎类。
const engine = new SearchEngine();
await engine.init(tools);
const results = await engine.search(query, limit);loadToolsFromConfig(path?: string)
从配置文件加载工具。
const tools = await loadToolsFromConfig('./config.json');MCP工具:搜索工具
服务器公开了一个工具:
输入架构:
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Natural language query describing what you want to accomplish"
},
"limit": {
"type": "number",
"default": 8,
"description": "Maximum number of results to return"
}
},
"required": ["query"]
}输出:
[
{
"name": "slack_send_message",
"description": "Send a message to a Slack channel",
"inputSchema": { ... },
"serverKey": "slack",
"score": 0.89
}
]发展
# Build
npm run build
# Development (watch mode)
npm run dev
# Clean build artifacts
npm run clean
# Run tests
npm test
# Run tests with coverage
npm run test:coverage发布到npm
此包已发布到npm。要发布新版本,请执行以下操作:
# 1. Make sure you're logged in to npm
npm login
# 2. Update the version in package.json
npm version patch # or minor, or major
# 3. Build and test
npm run build
npm test
# 4. Publish
npm publish这 prepublishOnly 脚本将自动运行 clean 和 build 在出版之前。
需求
- Node.js>=18.0.0
- npm
许可证
麻省理工学院
