集成搜索MCP服务器
一个模型上下文协议(MCP)服务器,提供Google自定义搜索API和Redmine API集成,允许人工智能助手无缝搜索网络和管理Redmine项目。
特性
谷歌自定义搜索
- 网页搜索:使用Google自定义搜索API搜索网页
- 图像搜索:查找具有高级过滤选项的图像
- 高级参数:支持语言限制、特定站点搜索、文件类型过滤等
Redmine API集成
- 问题管理:列出、创建、查看和更新Redmine问题,并进行详细分析
- 项目管理:浏览Redmine项目
- 高级过滤:按项目、状态、受让人等筛选问题
- 全面细节:访问完整的问题信息,包括自定义字段
- 批量操作:同时更新多个问题
- 问题评论:添加新的日记笔记,并使用分页助手列出现有评论
- 智能进度跟踪:使用工作流感知错误处理更新问题进度、截止日期、估计小时数和分配
- 详细更新报告:比较之前/之后,显示哪些字段成功,哪些字段因Redmine约束而失败
- 工作流感知更新:智能处理Redmine工作流限制和字段权限
共同特点
- 错误处理:具有详细错误消息的稳健错误处理
- 输入验证:使用Zod模式进行全面的输入验证
- 可配置的:基于环境的配置
- 双重API支持:在谷歌搜索和Redmine操作之间无缝切换
安装
- 克隆此存储库:
git clone
cd mcp-integrated-search-server- 安装依赖项:
npm install- 设置环境变量:
cp .env.example .env- 编辑
.env使用API凭据提交文件:
# Google Custom Search API Configuration
GOOGLE_API_KEY=your_google_api_key_here
GOOGLE_SEARCH_ENGINE_ID=your_custom_search_engine_id_here
# Redmine API Configuration (optional)
REDMINE_URL=https://your-redmine-instance.com
REDMINE_API_KEY=your_redmine_api_key_here
# MCP Server Configuration
LOG_LEVEL=info- 构建项目:
npm run buildGoogle API设置
1.获取Google API密钥
- 去 谷歌云控制台
- 创建新项目或选择现有项目
- 启用自定义搜索API
- 转到“凭据”并创建API密钥
- 为了安全起见,将API密钥限制为自定义搜索API
2.创建自定义搜索引擎
- 首选 自定义搜索引擎
- 点击“添加”以创建新的搜索引擎
- 输入要搜索的网站(您可以使用
*搜索整个网络) - 点击“创建”
- 转到“设置”并复制“搜索引擎ID”
Redmine API设置
多存储库(推荐)
此服务器支持多个具有安全秘密处理的Redmine存储库。
- 根据示例创建配置文件:
Copy-Item redmine-repositories.example.json redmine-repositories.json- 设置配置引用的环境变量(请参见
.env.example):
Copy-Item .env.example .env
# then edit .env to set REDMINE_MAIN_API_KEY, REDMINE_DEV_API_KEY, etc.- (可选)指定自定义配置路径:
$env:REDMINE_CONFIG_PATH = "./redmine-repositories.json"笔记:
- 不要在JSON中硬编码API键。使用
${VAR_NAME}参考文献 - 调用任何Redmine工具时,您都可以通过
repository_id选择存储库。如果省略,则使用默认存储库。
1.获取Redmine API密钥
- 登录您的Redmine实例
- 转到“我的帐户”(通常在右上角)
- 点击右侧栏中的“API访问密钥”
- 单击“显示”以显示您的API密钥,或单击“重置”以生成新密钥
- 复制API密钥
2.配置Redmine URL(传统单一存储库)
- 集
REDMINE_URL到您的Redmine实例URL(例如。,https://redmine.example.com) - 集
REDMINE_API_KEY从步骤1到API密钥
备注:当不存在多存储库配置时,仍支持基于旧环境的配置作为回退。
用法
使用克劳德桌面
将服务器添加到您的Claude Desktop配置中:
MacOS/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"integrated-search-server": {
"command": "node",
"args": ["/absolute/path/to/mcp-integrated-search-server/build/index.js"],
"env": {
"GOOGLE_API_KEY": "your_google_api_key_here",
"GOOGLE_SEARCH_ENGINE_ID": "your_custom_search_engine_id_here",
"REDMINE_URL": "https://your-redmine-instance.com",
"REDMINE_API_KEY": "your_redmine_api_key_here"
}
}
}
}可用工具(共10个)
谷歌搜索工具(2)
1.谷歌搜索
使用Google自定义搜索API搜索网页。
参数:
query(必填):搜索查询字符串num(可选):要返回的结果数(1-10,默认值:10)start(可选):结果的起始索引(默认值:1)lr(可选):语言限制(例如,“lang_en”、“lang_ja”)safe(可选):安全搜索设置(“活动”或“关闭”,默认值:“活动”)siteSearch(可选):将搜索限制在特定网站(例如“github.com”)fileType(可选):仅限于文件类型(例如“pdf”、“doc”)
示例用法:
Search for "TypeScript tutorial" with 5 results
Search for "machine learning" on site:arxiv.org
Search for "documentation" filetype:pdf2.谷歌搜索图片
使用Google自定义搜索API搜索图像。
参数:
query(必填):图像搜索查询字符串num(可选):要返回的结果数(1-10,默认值:10)start(可选):结果的起始索引(默认值:1)safe(可选):安全搜索设置(“活动”或“关闭”,默认值:“活动”)imgSize(可选):图像大小过滤器(“大号”、“图标”、“大”、“中”、“小”、“xlarge”、“xxlarge”)imgType(可选):图像类型过滤器(“剪贴画”、“面部”、“线条”、“库存”、“照片”、“动画”)
示例用法:
Search for images of "golden retriever"
Find large photos of "sunset landscape"
Search for clipart images of "business icons"Redmine API工具(8)
所有Redmine工具都接受可选 repository_id 参数以针对特定存储库。如果省略,则在中配置的默认存储库 redmine-repositories.json 使用。
3.红矿列表问题
列出并过滤Redmine问题。
参数:
repository_id(可选):目标存储库id(如果省略,则为默认存储库)project_id(可选):项目ID或标识符(省略时默认为存储库设置)status_id(可选):状态ID、状态名称/部分匹配,或open/closed/*assigned_to_id(可选):受让人的用户IDlimit(可选):要返回的问题数量(1-100,默认值:25)offset(可选):分页的起始索引(默认值:0)sort(可选):排序字段(例如,“id”、“created_on”、“updated_on”)created_on(可选):按创建日期筛选(例如,“>=2023-01-01”)updated_on(可选):按更新日期筛选
示例用法:
List all open issues
List issues for project 1
List issues assigned to user 54.redmine_create_issue
创建一个新的Redmine问题。
repository_id(可选):目标存储库id(如果省略,则为默认存储库)project_id(可选):项目ID或标识符(省略时使用存储库默认值)subject(必填):发行主题/标题description(可选):问题描述tracker_id(可选):跟踪器ID或名称(允许部分匹配)status_id(可选):状态ID或名称(允许部分匹配)priority_id(可选):优先级ID或名称(允许部分匹配)assigned_to_id(可选):用于分配问题的用户IDstart_date(可选):开始日期(YYYY-MM-DD)due_date(可选):到期日(YYYY-MM-DD)estimated_hours(可选):估计小时数
示例用法:
Create a bug report for project 1
Create a feature request with high priority
Create an assigned task with due date5.红矿_列表_项目
列出可用的Redmine项目。
参数:
limit(可选):要返回的项目数(1-100,默认值:25)offset(可选):分页的起始索引(默认值:0)
示例用法:
List all projects
List first 10 projects
Browse projects with pagination6.redmine_get_oublish
获取有关特定Redmine问题的详细信息。
参数:
issue_id(必填):要检索的问题的IDinclude(可选):要包含的其他数据(“附件”、“关系”、“期刊”、“观察者”)
示例用法:
Get issue #123 details
Get issue #456 with attachments and journals
Get full issue information including relations7.redmine_update_issue
用详细的分析报告更新现有的Redmine问题。
issue_id(必填):要更新的问题的IDstatus_id(可选):新的状态ID或名称(工作流限制仍然适用)assigned_to_id(可选):新受让人用户IDdone_ratio(可选):进度百分比(0-100)notes(可选):要添加的注释/备注priority_id(可选):新的优先级ID或名称due_date(可选):截止日期(YYYY-MM-DD格式)estimated_hours(可选):估计小时数custom_fields(可选):自定义字段更新数组
增强功能:
- 比较之前/之后:准确显示更改的内容
- 成功/失败分析:明确指出哪些字段已成功更新
- 工作流感知:解释Redmine工作流限制何时阻止更新
- 详细报告:对所有尝试的更改提供全面的反馈
示例用法:
Update issue #123 status to completed
Update issue #456 progress to 75% and add notes
Change assignee and due date for issue #7898.红矿_散货_更新_问题
同时更新多个Redmine问题。
issue_ids(必需):要更新的问题ID数组status_id(可选):所有问题的新状态ID或名称assigned_to_id(可选):所有问题的新受让人用户IDnotes(可选):为所有问题添加评论/注释
示例用法:
Mark multiple issues as completed
Reassign several issues to a different user
Add bulk comments to multiple issues9.redmine_list_issue_comments
列出现有的Redmine问题评论(包含注释的期刊),并在客户端进行分页。
repository_id(可选):目标存储库id(如果省略,则为默认存储库)issue_id(必填):应检查其意见的问题offset(可选):排序后从0开始偏移created_on(默认值:0)limit(可选):要返回的评论数(1-100,默认值:20)
返回一个格式化的列表和元数据(总计数、是否还有更多注释以及请求的下一个偏移量)。
示例用法:
List the latest 5 comments for issue #42
Paginate through comments using next offset values
Inspect whether private comments exist (requires proper Redmine permissions)10.redmine_add_issue_comment
使用官方 notes 现场。
repository_id(可选):目标存储库id(如果省略,则为默认存储库)issue_id(必填):发布以将评论附加到notes(必填):注释文本(必须包含非空格字符)private_notes(可选):将评论标记为私有(取决于Redmine权限)
成功更新后,该工具会检索最新的日记条目,以便您可以验证作者、时间戳和可见性。
示例用法:
Add a public handoff comment to issue #77
Create an internal/private status update for issue #501
Post deployment notes directly from an MCP client发展
建筑
npm run build在发展中奔跑
npm run dev测试
npm test配置
环境变量:
GOOGLE_API_KEY:您的Google API密钥(Google搜索所需)GOOGLE_SEARCH_ENGINE_ID:您的自定义搜索引擎ID(谷歌搜索所需)REDMINE_URL:您的Redmine实例URL(可选,Redmine功能需要)REDMINE_API_KEY:您的Redmine API密钥(可选,Redmine功能所需)LOG_LEVEL:日志记录级别(“错误”、“警告”、“信息”、“调试”,默认值:“信息”)
API限值
谷歌自定义搜索API
- 每天100次免费查询
- 启用计费后,每天最多可查询10000次
- 每个查询最多10个结果
Redmine API公司
- 限制取决于您的Redmine实例配置
- 大多数Redmine实例没有内置的API速率限制
- 在发出批量请求时考虑服务器资源
错误处理
服务器为常见问题提供详细的错误消息:
- API密钥或搜索引擎ID无效
- 配额已超
- 无效参数
- 网络错误
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
支持
对于问题和疑问:
- 查看Google自定义搜索API文档
- 验证您的API密钥和搜索引擎ID
- 检查服务器日志以获取详细的错误消息
- 在此存储库中创建问题
