关于 AIO-MCP Server
AIO-MCP Server 是一个用 Go 编写的一体化 MCP 服务,集成了 GitLab、Jira、Confluence、YouTube 等多种服务,并提供 AI 搜索与 RAG 等工具。它面向需要在开发流程中统一调用这些服务的开发者。可通过 ENABLE_TOOLS 按工具组启用功能。
主要功能
- 01GitLab 项目、合并请求与流水线工具
- 02Jira 与 Confluence 页面查询和编辑
- 03Google 日历与 Gmail 搜索工具
- 04按工具组启用的 ENABLE_TOOLS 配置
- 05支持 stdio 与 SSE 两种运行模式
适用场景
- 01在 MCP 客户端中查看与评论 GitLab 合并请求
- 02通过 Confluence 查询与更新团队文档
MCP 相关
该项目是 MCP 服务,向 MCP 客户端暴露 GitLab、Confluence、Google 日历、Gmail 等领域的工具,并支持 stdio 和 SSE 连接方式。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
AIO-MCP 服务
功能强大的 Model Context Protocol(MCP)服务实现,集成了 GitLab、Jira、Confluence、YouTube 等服务。该服务提供 AI 驱动的搜索功能,以及用于开发工作流的各种实用工具。
前置条件
- Go 1.23.2 或更高版本
- 你要使用的各项服务所需的 API 密钥和令牌
安装
通过 Smithery 安装
通过 Smithery 自动为 Claude Desktop 安装 AIO-MCP Server(将引导你完成交互式命令行设置):
npx -y @smithery/cli install @athapong/aio-mcp --client claude
注意:Smithery 会以交互方式提示你输入所需的配置值,并自动处理环境设置
通过 Go 安装
要将 go install 命令设置为安装到 Go bin 路径,你需要确保 Go 环境变量配置正确。具体如下:
-
首先,确保已正确设置
GOPATH环境变量。在类 Unix 系统上,默认值为$HOME/go;在 Windows 上,默认值为%USERPROFILE%\go。 -
go install命令默认会将二进制文件放在$GOPATH/bin中。请确保此目录已添加到系统的PATH环境变量中。
以下是不同操作系统的设置方法:
Linux/macOS:
# Add these to your ~/.bashrc, ~/.zshrc, or equivalent shell config file
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
添加这些行后,重新加载 shell 配置:
source ~/.bashrc # or ~/.zshrc
Windows (PowerShell):
# Set environment variables
[Environment]::SetEnvironmentVariable("GOPATH", "$env:USERPROFILE\go", "User")
[Environment]::SetEnvironmentVariable("PATH", "$env:PATH;$env:USERPROFILE\go\bin", "User")
Windows (Command Prompt):
setx GOPATH "%USERPROFILE%\go"
setx PATH "%PATH%;%USERPROFILE%\go\bin"
设置这些变量后,可以使用以下命令验证它们是否正常工作:
go env GOPATH
echo $PATH # On Unix/Linux/macOS
echo %PATH% # On Windows CMD
$env:PATH # On Windows PowerShell
现在运行 go install 时,二进制文件会安装到 $GOPATH/bin 目录。该目录已位于 PATH 中,因此你可以从任何位置运行这些文件。
最后,安装此服务:
go install github.com/athapong/aio-mcp@latest
- 需要手动设置 - 创建包含配置的
.env文件:
ENABLE_TOOLS=
QDRANT_HOST=
ATLASSIAN_HOST=
ATLASSIAN_EMAIL=
GITLAB_HOST=
GITLAB_TOKEN=
BRAVE_API_KEY=
ATLASSIAN_TOKEN=
GOOGLE_AI_API_KEY=
PROXY_URL=
OPENAI_API_KEY=
OPENAI_EMBEDDING_MODEL=
DEEPSEEK_API_KEY=
QDRANT_PORT=
GOOGLE_TOKEN_FILE=
GOOGLE_CREDENTIALS_FILE=
QDRANT_API_KEY=
USE_OLLAMA_DEEPSEEK=
ENABLE_SSE=
SSE_ADDR=
SSE_BASE_PATH=
- 配置 Claude 的设置:
{
"mcpServers": {
"aio-mcp": {
"command": "aio-mcp",
"args": ["-env", "/path/to/.env", "-sse", "-sse-addr", ":8080", "-sse-base-path", "/mcp"],
}
}
}
或者按如下方式覆盖环境变量
{
"mcpServers": {
"aio-mcp": {
"command": "aio-mcp",
"env": {
"ENABLE_TOOLS": "",
"OPENAI_BASE_URL": "",
"GOOGLE_AI_API_KEY": "",
"GITLAB_TOKEN": "",
"GITLAB_HOST": "",
"QDRANT_HOST": "",
"QDRANT_API_KEY": "",
"PROXY_URL": "",
"OPENAI_API_KEY": "",
"GOOGLE_TOKEN_FILE": "",
"GOOGLE_CREDENTIALS_FILE": "",
"ATLASSIAN_TOKEN": "",
"BRAVE_API_KEY": "",
"QDRANT_PORT": "",
"ATLASSIAN_HOST": "",
"ATLASSIAN_EMAIL": "",
"USE_OPENROUTER": "", // "true" if you want to use openrouter for AI to help with reasoning on `tool_use_plan`, default is false
"DEEPSEEK_API_KEY": "", // specify the deepseek api key if you want to use deepseek for AI to help with reasoning on `tool_use_plan`
"OPENROUTER_API_KEY": "", // specify the openrouter api key if you want to use openrouter for AI to help with reasoning on `tool_use_plan`
"DEEPSEEK_API_BASE": "", // specify the deepseek api key if you want to use deepseek for AI to help with reasoning on `tool_use_plan`
"USE_OLLAMA_DEEPSEEK": "", // "true" if you want to use deepseek with local ollama, default is false
"OLLAMA_URL": "" // default with http://localhost:11434
}
}
}
}
服务模式
AIO-MCP Server 支持两种运行模式:
-
Stdio 模式(默认):服务通过标准输入/输出进行通信,这是 Claude Desktop 和其他 MCP 客户端默认使用的模式。
-
SSE(Server-Sent Events)模式:服务以 HTTP 服务的形式运行,支持通过 Server-Sent Events 进行实时通信。此模式适用于基于 Web 的客户端,或需要通过网络访问 MCP 服务的情况。
启用 SSE 模式
可以通过以下两种方式之一启用 SSE 模式:
-
命令行标志:
aio-mcp -sse -sse-addr ":8080" -sse-base-path "/mcp" -
环境变量(在
.env文件中):ENABLE_SSE=true SSE_ADDR=:8080 SSE_BASE_PATH=/mcp
启用 SSE 模式后,服务会启动一个 HTTP 服务,并在指定地址监听。该服务提供两个端点:
- SSE 端点:
{SSE_BASE_PATH}/sse(默认:/mcp/sse) - 消息端点:
{SSE_BASE_PATH}/message(默认:/mcp/message)
客户端可以连接到 SSE 端点以接收服务事件,并向消息端点发送消息。
启用工具
环境变量中有一个隐藏变量 ENABLE_TOOLS。它是一个以逗号分隔的工具组列表,用于指定要启用的工具。如果未设置,则会启用所有工具。将其留空即可启用所有工具。
以下是工具组列表:
gemini:Gemini 驱动的搜索fetch:Fetch 工具brave_search:Brave Search 工具google_maps:Google Maps 工具confluence:Confluence 工具youtube:YouTube 工具jira:Jira 工具gitlab:GitLab 工具script:脚本工具rag:RAG 工具deepseek:Deepseek AI 工具;如果将 'USE_OLLAMA_DEEPSEEK' 设置为 true,则包括推理和高级搜索。默认的 ollama 端点为 http://localhost:11434,模型为 deepseek-r1:8b
可用工具
calendar_create_event
在 Google Calendar 中创建新事件
参数:
summary(String)(必填):事件标题description(String):事件描述start_time(String)(必填):事件开始时间,采用 RFC3339 格式(例如:2023-12-25T09:00:00Z)end_time(String)(必填):事件结束时间,采用 RFC3339 格式attendees(String):以逗号分隔的参会者电子邮件地址列表
calendar_list_events
列出 Google Calendar 中即将发生的事件
参数:
time_min(String):搜索的开始时间,采用 RFC3339 格式(默认:现在)time_max(String):搜索的结束时间,采用 RFC3339 格式(默认:从现在起 1 周)max_results(Number):要返回的事件数量上限(默认:10)
calendar_update_event
更新 Google Calendar 中的现有事件
参数:
event_id(String)(必填):要更新的事件 IDsummary(String):事件的新标题description(String):事件的新描述start_time(String):事件的新开始时间,采用 RFC3339 格式end_time(String):事件的新结束时间,采用 RFC3339 格式attendees(String):以逗号分隔的新参会者电子邮件地址列表
calendar_respond_to_event
回复 Google Calendar 中的事件邀请
参数:
event_id(String)(必填):要回复的事件 IDresponse(String)(必填):你的回复(accepted、declined 或 tentative)
confluence_search
搜索 Confluence
参数:
query(String)(必填):Atlassian Confluence 查询语言(CQL)
confluence_get_page
获取 Confluence 页面内容
参数:
page_id(String)(必填):Confluence 页面 ID
confluence_create_page
创建新的 Confluence 页面
参数:
space_key(String)(必填):要创建页面的空间键title(String)(必填):页面标题content(String)(必填):采用存储格式(XHTML)的页面内容parent_id(String):父页面 ID(可选)
confluence_update_page
更新现有 Confluence 页面
参数:
page_id(String)(必填):要更新的页面 IDtitle(String):页面的新标题(可选)content(String):采用存储格式(XHTML)的页面新内容version_number(String):用于乐观锁定的版本号(可选)
confluence_compare_versions
比较 Confluence 页面两个版本
参数:
page_id(String)(必填):Confluence 页面 IDsource_version(String)(必填):源版本号target_version(String)(必填):目标版本号
deepseek_reasoning
使用 Deepseek 的 AI 能力提供高级推理引擎,用于多步问题求解、批判性分析和战略决策支持
参数:
question(String)(必填):需要深入分析和推理的结构化查询或问题陈述context(String)(必填):定义查询在 MCP 生态系统中的运行上下文和目的knowledge(String):提供相关聊天历史、知识库条目和结构化数据上下文,以支持具备 MCP 感知能力的推理
get_web_content
从给定的 HTTP/HTTPS URL 获取内容。此工具可从网页、API 或任何可访问的 HTTP 端点检索文本内容。返回原始文本内容。
参数:
url(String)(必填):要获取内容的完整 HTTP/HTTPS URL(例如:https://example.com)
gchat_list_spaces
列出所有可用的 Google Chat 空间/聊天室
gchat_send_message
向 Google Chat 空间或私信发送消息
参数:
space_name(String)(必填):要发送消息的空间名称message(String)(必填):要发送的文本消息
ai_web_search
使用 Google AI Search 搜索网络。更新实时信息的最佳工具
Arguments:
question(String)(必填):要提问的问题。应为一个问题context(String)(必填):问题的背景/目的,帮助 Gemini 更好地理解问题
gitlab_list_projects
列出 GitLab 项目
Arguments:
group_id(String)(必填):GitLab 群组 IDsearch(String):可以提供多个搜索词,使用转义空格、+ 或 %20 分隔;这些词将按 AND 条件组合。例如,one+two 将匹配包含 one 和 two 子串的内容(顺序不限)。
gitlab_get_project
获取 GitLab 项目详情
Arguments:
project_path(String)(必填):项目/仓库路径
gitlab_list_mrs
列出合并请求
Arguments:
project_path(String)(必填):项目/仓库路径state(String)(默认值:all):MR 状态(opened/closed/merged)
gitlab_get_mr_details
获取合并请求详情
Arguments:
project_path(String)(必填):项目/仓库路径mr_iid(String)(必填):合并请求 IID
gitlab_create_MR_note
在合并请求上创建评论
Arguments:
project_path(String)(必填):项目/仓库路径mr_iid(String)(必填):合并请求 IIDcomment(String)(必填):评论文本
gitlab_get_file_content
从 GitLab 仓库获取文件内容
Arguments:
project_path(String)(必填):项目/仓库路径file_path(String)(必填):仓库中文件的路径ref(String)(必填):分支名称、标签或提交 SHA
gitlab_list_pipelines
列出 GitLab 项目的流水线
Arguments:
project_path(String)(必填):项目/仓库路径status(String)(默认值:all):流水线状态(running/pending/success/failed/canceled/skipped/all)
gitlab_list_commits
列出 GitLab 项目在指定日期范围内的提交
Arguments:
project_path(String)(必填):项目/仓库路径since(String)(必填):开始日期(YYYY-MM-DD)until(String):结束日期(YYYY-MM-DD)。如果未提供,则默认为当前日期ref(String)(必填):分支名称、标签或提交 SHA
gitlab_get_commit_details
获取提交详情
Arguments:
project_path(String)(必填):项目/仓库路径commit_sha(String)(必填):提交 SHA
gitlab_list_user_events
列出 GitLab 用户在指定日期范围内的事件
Arguments:
username(String)(必填):GitLab 用户名since(String)(必填):开始日期(YYYY-MM-DD)until(String):结束日期(YYYY-MM-DD)。如果未提供,则默认为当前日期
gitlab_list_group_users
列出 GitLab 群组中的所有用户
Arguments:
group_id(String)(必填):GitLab 群组 ID
gitlab_create_mr
创建新的合并请求
Arguments:
project_path(String)(必填):项目/仓库路径source_branch(String)(必填):源分支名称target_branch(String)(必填):目标分支名称title(String)(必填):合并请求标题description(String):合并请求说明
gitlab_clone_repo
在本地克隆或更新 GitLab 仓库
Arguments:
project_path(String)(必填):项目/仓库路径ref(String):分支名称或标签(可选,默认使用项目的默认分支)
gmail_search
使用 Gmail 的搜索语法搜索 Gmail 邮件
Arguments:
query(String)(必填):Gmail 搜索查询。请遵循 Gmail 的搜索语法
gmail_move_to_spam
根据邮件 ID 将指定邮件移至 Gmail 垃圾邮件文件夹
Arguments:
message_ids(String)(必填):要移至垃圾邮件文件夹的邮件 ID 列表,以逗号分隔
gmail_create_filter
根据指定条件和操作创建 Gmail 过滤器
Arguments:
from(String):过滤来自此发件人的邮件to(String):过滤发给此收件人的邮件subject(String):过滤主题为此内容的邮件query(String):其他搜索条件add_label(Boolean):为匹配的邮件添加标签label_name(String):要添加的标签名称(当 add_label 为 true 时必填)mark_important(Boolean):将匹配的邮件标记为重要mark_read(Boolean):将匹配的邮件标记为已读archive(Boolean):归档匹配的邮件
gmail_list_filters
列出帐户中的所有 Gmail 过滤器
gmail_list_labels
列出帐户中的所有 Gmail 标签
gmail_delete_filter
根据 ID 删除 Gmail 过滤器
Arguments:
filter_id(String)(必填):要删除的过滤器 ID
gmail_delete_label
根据 ID 删除 Gmail 标签
Arguments:
label_id(String)(必填):要删除的标签 ID
jira_get_issue
检索特定 Jira 问题的详细信息,包括其状态、经办人、描述、子任务和可用的转换
Arguments:
issue_key(String)(必填):Jira 问题的唯一标识符(例如,KP-2、PROJ-123)
jira_search_issue
使用 JQL(Jira 查询语言)搜索 Jira 问题。返回匹配问题的摘要、状态、经办人和优先级等关键详情
Arguments:
jql(String)(必填):JQL 查询字符串(例如,'project = KP AND status = "In Progress"')
jira_list_sprints
列出特定 Jira 看板的所有进行中和未来冲刺,包括冲刺 ID、名称、状态和日期
Arguments:
board_id(String)(必填):Jira 看板的数字 ID(可在看板 URL 中找到)
jira_create_issue
根据指定详情创建新的 Jira 问题。返回所创建问题的键、ID 和 URL
Arguments:
project_key(String)(必填):要创建问题的项目标识符(例如,KP、PROJ)summary(String)(必填):问题的简短标题description(String)(必填):问题的详细说明issue_type(String)(必填):要创建的问题类型(常见类型:Bug、Task、Story、Epic)
jira_update_issue
修改现有 Jira 问题的详情。支持部分更新——仅更改指定字段
Arguments:
issue_key(String)(必填):要更新的问题的唯一标识符(例如,KP-2)summary(String):问题的新标题(可选)description(String):问题的新描述(可选)
jira_list_statuses
检索特定 Jira 项目中所有可用的问题状态 ID 及其名称
Arguments:
project_key(String)(必填):项目标识符(例如,KP、PROJ)
jira_transition_issue
使用有效的转换 ID 让问题流转至工作流中的下一状态。可通过 jira_get_issue 获取可用的转换
Arguments:
issue_key(String)(必填):要转换状态的问题(例如,KP-123)transition_id(String)(必填):可用转换列表中的转换 IDcomment(String):转换时添加的可选备注
RAG_memory_index_content
将内容索引到记忆中,可插入或更新
Arguments:
collection(String)(必填):记忆集合名称filePath(String)(必填):内容文件路径payload(String)(必填):纯文本内容model(String):要使用的嵌入模型(默认值:text-embedding-3-large)
RAG_memory_index_file
将本地文件索引到记忆中
Arguments:
collection(String)(必填):记忆集合名称filePath(String)(必填):要索引的本地文件路径
RAG_memory_create_collection
在记忆中创建新的向量集合
Arguments:
collection(String)(必填):记忆集合名称model(String):要使用的嵌入模型(默认值:text-embedding-3-large)
RAG_memory_delete_collection
删除内存中的向量集合
参数:
collection(String)(必填):内存集合名称
RAG_memory_list_collections
列出内存中的所有向量集合
RAG_memory_search
根据查询在集合中搜索内存
参数:
collection(String)(必填):内存集合名称query(String)(必填):搜索查询,应为关键词model(String):要使用的嵌入模型(默认:text-embedding-3-large)
RAG_memory_delete_index_by_filepath
根据 filePath 删除向量索引
参数:
collection(String)(必填):内存集合名称filePath(String)(必填):要删除的本地文件路径
execute_comand_line_script
在用户的系统上安全执行命令行脚本,并施加安全限制。具备沙盒执行、超时保护和输出捕获功能。支持跨平台脚本编写,并自动检测环境。
参数:
content(String)(必填):interpreter(String)(默认:/bin/sh):解释器二进制文件的路径(例如 /bin/sh、/bin/bash、/usr/bin/python、cmd.exe)。出于安全考虑,会根据允许列表进行验证working_dir(String):执行目录路径(默认:用户主目录)。经过验证,以防止未经授权访问系统位置
web_search
使用 Brave Search API 搜索网页
参数:
query(String)(必填):要搜索的查询内容(最多 400 个字符、50 个单词)count(Number)(默认:5):结果数量(1-20,默认 5)country(String)(默认:ALL):国家/地区代码
sequentialthinking
`一个用于通过思考进行动态、反思式问题解决的详细工具。 此工具通过灵活且可调整、可演进的思考过程,帮助分析问题。 随着理解不断加深,每个思考步骤都可以在之前的见解基础上继续、提出质疑或进行修正。
何时使用此工具:
- 将复杂问题分解为多个步骤
- 规划和设计,并为修订留出空间
- 可能需要纠正方向的分析
- 初期可能无法明确完整范围的问题
- 需要多步解决方案的问题
- 需要在多个步骤中保持上下文的任务
- 需要过滤掉无关信息的情况
主要功能:
- 可以随着进展增加或减少 total_thoughts
- 可以质疑或修正之前的思考
- 即使到达看似终点后,也可以添加更多思考
- 可以表达不确定性并探索其他方法
- 并非每个思考步骤都需要线性推进 - 可以分支或回溯
- 生成解决方案假设
- 根据思维链步骤验证假设
- 重复此过程,直到满意为止
- 提供正确答案
参数说明:
- thought:当前思考步骤,可以包括:
- 常规分析步骤
- 对之前思考的修正
- 对之前决策的质疑
- 意识到需要进一步分析
- 方法上的调整
- 假设生成
- 假设验证
- next_thought_needed:如果需要继续思考,则为 True,即使已到达看似终点也不例外
- thought_number:当前序号;必要时可以超出初始总数
- total_thoughts:当前估计所需的思考步骤总数(可增加或减少)
- is_revision:布尔值,表示此思考步骤是否修正了之前的思考
- revises_thought:如果 is_revision 为 true,则表示正在重新考虑的思考步骤编号
- branch_from_thought:如果进行分支,则表示分支点对应的思考步骤编号
- branch_id:当前分支的标识符(如果有)
- needs_more_thoughts:如果在接近终点时意识到还需要更多思考,则为 true
你应该:
- 先初步估算所需的思考步骤数,但准备好随时调整
- 可以质疑或修正之前的思考
- 如有需要,不要犹豫,即使在“结束”后也要添加更多思考
- 在存在不确定性时表达出来
- 标记修正之前思考或分支到新路径的步骤
- 忽略与当前步骤无关的信息
- 适时生成解决方案假设
- 根据思维链步骤验证假设
- 重复此过程,直到对解决方案满意为止
- 将最终结果作为单一且尽可能正确的答案提供
- 只有在真正完成并得出满意答案后,才将 next_thought_needed 设为 false`
参数:
thought(String) (必填):当前思考步骤nextThoughtNeeded(Boolean) (必填):是否需要继续进行思考步骤thoughtNumber(Number) (必填):当前思考步骤编号totalThoughts(Number) (必填):估计所需的思考步骤总数isRevision(Boolean):此步骤是否修正了之前的思考revisesThought(Number):正在重新考虑的思考步骤编号branchFromThought(Number):分支点对应的思考步骤编号branchId(String):分支标识符needsMoreThoughts(Boolean):是否需要更多思考result(String):此思考步骤的最终结果或结论summary(String):对该思考步骤要点的简要总结
sequentialthinking_history
获取当前思考过程的思考历史
参数:
branchId(String):可选的分支 ID,用于获取历史记录
tool_manager
管理 MCP 工具 - 启用或禁用工具
参数:
action(String) (必填):要执行的操作:list、enable、disabletool_name(String):要启用或禁用的工具名称
tool_use_plan
使用可用工具制定解决请求的计划
参数:
request(字符串)(必填):需要规划的请求context(字符串)(必填):相关背景信息
youtube_transcript
获取 YouTube 视频字幕
参数:
video_id(字符串)(必填):YouTube 视频 ID
youtube_update_video
更新 YouTube 视频的标题和说明
参数:
video_id(字符串)(必填):视频 IDtitle(字符串)(必填):新的视频标题description(字符串)(必填):新的视频说明keywords(字符串)(必填):以逗号分隔的视频关键词列表category(字符串)(必填):视频的类别 ID。更多信息请参阅 https://developers.google.com/youtube/v3/docs/videoCategories/list。
youtube_get_video_details
获取特定视频的详细信息(标题、说明等)
参数:
video_id(字符串)(必填):视频 ID
youtube_list_videos
列出用户管理的 YouTube 视频
参数:
channel_id(字符串)(必填):要列出视频的频道 IDmax_results(数字)(必填):返回的视频数量上限
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。