统一MCP服务器
一个全面的模型上下文协议(MCP)服务器,提供与 JIRA, 汇流,以及 微软Outlook这个统一的服务器将多个专用MCP服务器的功能组合成一个易于部署的解决方案。
🌟 特性
🎫 JIRA集成(15+工具)
- 问题管理:获取、分析、创建和更新JIRA票证
- 工作流程自动化:过渡问题、批量操作
- 搜索和筛选:按标签、受让人、JQL查询查找问题
- 评论和更新:添加评论,更新确认字段
- 测试与质量保证:测试用例跟踪、工作量报告
- 分析:CSV报告、工作日志分析
📄 汇流集成(5个工具)
- 页面管理:创建、阅读、更新Confluence页面
- 内容分析:提取和分析业务内容
- 搜索:使用CQL(汇流查询语言)查找页面
- 内容智能:自动内容分类和见解
📧 Microsoft Outlook集成(15+工具)
- 电子邮件管理:使用高级过滤功能列出、阅读、发送、搜索和回复电子邮件
- 电子邮件组织:按条件移动电子邮件,标记为已读/未读
- 日历操作:创建活动、管理会议、接受/拒绝邀请
- 文件夹管理:创建文件夹、列出层次结构、在位置之间移动文件夹
- 邮件规则:创建和管理邮件自动化规则
- 认证:带有Microsoft Graph API的OAuth 2.0
- 高级功能:交互式电子邮件回复模式,批量电子邮件操作
🚀 快速开始
先决条件
- Node.js 18.0+(用于本机获取API支持)
- 访问证书 适用于JIRA、Confluence和/或Outlook
- VS Code 或兼容的MCP客户端
安装
- 克隆或创建项目:
mkdir unified-mcp-server
cd unified-mcp-server- 安装依赖项:
npm install- 配置环境变量:
使用您的凭据创建.env文件: \`灰烬
JIRA配置
JIRA_URL=https://your-domain.atlassian.net JIRA_用户名=your-email@example.com JIRA_PASSWORD=您的api令牌
汇流配置
汇流URL=https://your-domain.atlassian.net/wiki conference_USERNAME=your-email@example.com CONFLUENCE_PASSWORD=您的api令牌
Azure/Outlook配置(适用于OAuth)
AZURE_CLIENT_ID=您的客户端ID AZURE_CLIENT_SECRET=您的客户机密 AZURE_TENANT_ID=您的租户ID AZURE_REDIRECT_URI=http://localhost:3000/auth/callback \`
- 启动服务器:
ash node index.js
服务器将输出连接详细信息,并确认所有服务都在运行。
📋 可用工具
🎫 JIRA工具
核心业务
- jira_rech-按密钥获取问题详细信息
- jira_fetch_by_受让人-按受让人查找问题
- jira_fetch_by-label-按标签查找问题
- jira_search-高级JQL搜索
- jira_create-创建新问题
- jira_update-更新问题字段
- jira_add_comment-向问题添加评论(带确认)
工作流管理
- jira_list_transitions-列出可用的状态转换
- jira_update_transition-转换问题状态
- jira_tested_to_task_closed-特定工作流转换
- jira.batch_tested_to_task_closed-批处理工作流操作
测试与分析
- jira_find_test_cases-从注释中提取测试用例
- jira_aggregate_test_cases-聚合测试指标
- jira_csv_report-生成csv报告
- jira_get_editable_fields-检查可编辑字段
??汇流工具
- conference_fetch-获取页面内容和元数据
- conference_detailed-详细的页面分析
- conference_create_page-创建新页面
- conference_update_page-更新现有页面
- conference_search-使用CQL搜索页面
📧 Outlook工具
身份验证和状态
- outlook_about-服务器信息
- outlook_authenticate-OAuth身份验证
- outlook_token_status-检查身份验证状态
- outlook_refresh_tokens-刷新访问令牌
电子邮件管理
- 列出电子邮件-在带有过滤功能的文件夹中列出电子邮件
- 搜索电子邮件-按主题、发件人或内容在邮箱中搜索电子邮件
-
ead电子邮件-阅读完整的电子邮件内容
- 发送电子邮件-通过CC/BCC支持发送新电子邮件
-
回复电子邮件-回复电子邮件(交互式两种模式:搜索然后回复)
- 标记为已读-将电子邮件标记为已阅读/未阅读
- 移动电子邮件-根据搜索条件在文件夹之间移动电子邮件
文件夹管理
- list folders-列出层次结构中的所有邮件文件夹
- 创建文件夹-创建新的邮件文件夹
move-folder-在不同位置之间移动文件夹(⚠️ 见下文限制)
日历操作
- outlook_list_events-列出日历事件
- outlook_create_event-创建会议/事件
- outlook_accept_event-接受日历邀请
- outlook_declineevent-拒绝日历邀请
- outlook_cancel_event-取消日历事件
其他工具
- outlook_list_rules-列出邮件自动化规则
- outlook_create_rule-创建邮件自动化规则
🎯 最新增强功能(v1.1.0)
电子邮件回复工具
- 交互式双模式操作:
- 搜索模式:搜索要回复的电子邮件(不带正文参数) - 应答模式:撰写并发送回复(带body参数)
- 特性:CC、BCC支持、重要性级别、包含原始消息的选项
- 默认行为:默认情况下发送回复(可以使用saveToSentItems参数另存为草稿)
电子邮件移动工具增强功能
- 基于搜索的过滤:移动符合条件的多封电子邮件
- 灵活的参数:按主题、来源或自定义查询筛选
- 文件夹特定:明确指定源文件夹和目标文件夹
- 批量操作:一次处理多封电子邮件(可配置限制)
文件夹管理改进
- 清除参数:为了清楚起见,sourceFolder和targetFolder参数
- 完成文件夹查找:列出所有可用的错误文件夹(最多500个文件夹)
- 有用的错误消息:未找到目标时显示可用文件夹名称
- 更好的组织:分离文件夹和电子邮件移动操作
⚠️ 重要提示:Outlook文件夹移动限制
备注:由于Microsoft Outlook的文件夹层次结构限制,文件夹移动请求可能会成功(与Outlook UI行为匹配),但可能不会更改邮箱中文件夹的视觉位置。这是Outlook API的设计限制,而不是工具问题。该工具正确发送移动请求,但Outlook的内部层次结构阻止了自定义文件夹在位置之间移动。移动操作将显示为成功,以匹配Outlook UI行为。
💡 用法示例
电子邮件操作
发送电子邮件: javascript { "name": "send-email", "arguments": { "to": "recipient@example.com", "subject": "Hello", "body": "This is my email", "cc": "cc@example.com" } }
搜索电子邮件: javascript { "name": "search-emails", "arguments": { "query": "important deadline", "folder": "Inbox", "maxResults": 10 } }
移动电子邮件: javascript { "name": "move-email", "arguments": { "sourceFolder": "Inbox", "destinationFolder": "Archive", "subject": "Old emails", "maxEmails": 5 } }
回复电子邮件(搜索模式): javascript { "name": "reply-email", "arguments": { "folder": "Inbox", "from": "sender@example.com" } }
回复电子邮件(回复模式): javascript { "name": "reply-email", "arguments": { "folder": "Inbox", "from": "sender@example.com", "body": "Thanks for your email!", "saveToSentItems": true } }
文件夹操作
创建文件夹: javascript { "name": "create-folder", "arguments": { "name": "Project Files" } }
移动文件夹: javascript { "name": "move-folder", "arguments": { "sourceFolder": "OldProject", "targetFolder": "Archive" } }
JIRA运营
\`javascript //获取门票详细信息 {“name”:“jira_rech”,“arguments”:{“issueKey”:“PROJ-123”}}
//按受让人搜索 {“name”:“jira_fetch_by-decatee”,“arguments”:{ “受让人”:“john.doe”, “状态”:“进行中” }}
//添加评论(需要确认) {“name”:“jira_add_comment”,“arguments”:{ “issueKey”:“PROJ-123”, “comment”:“根据审查更新”, “确认”:true }} \`
汇流操作
\`javascript //搜索页面 {“name”:“conference_search”,“arguments”:{ “查询”:“API文档”, “限制”:5 }}
//获取页面 {“name”:“conference_fetch”,“arguments”:{ “页面ID”:“12345” }}
//创建页面 {“name”:“conference_create_page”,“arguments”:{ “title”:“新文档”, “内容”:“ 页面内容 ", “家长ID”:“9876” }} \`
🧪 测试
运行测试
ash npm test
测试特定模块
ash node test-move-folder.js node test-subfolder-move.js node test-move-email-availability.js
启用测试模式
ash USE_TEST_MODE=true node index.js
🔧 配置
环境变量
吉拉:
- JIRA_URL-JIRA实例的基本URL
- JIRA_USENAME-电子邮件或用户名
- JIRA_PASSWORD-API令牌或密码
汇流:
- CONFLUENCE_URL-CONFLUENCE实例的基本URL
- CONFLUENCE_USERNAME-电子邮件或用户名
- CONFLUENCE_PASSWORD-API令牌或密码
见解:
- AZURE_CLIENT_ID-AZURE应用程序客户端ID
- AZURE_CLIENT_CRET-AZURE应用程序机密
- AZURE_TENANT_ID-AZURE租户ID
- Azure信用URI-OAuth重定向类型
服务控制:
- DISABLE_JIRA=true-禁用JIRA模块
- DISABLE_CONFLUENCE=true-禁用汇流模块
- USE_TEST_MODE=true-启用模拟数据进行测试
测试特定服务
ash DISABLE_JIRA=true DISABLE_CONFLUENCE=true node index.js
📁 项目结构
unified-mcp-server/ +-- index.js # Main server entry point +-- config.js # Unified configuration +-- package.json # Dependencies +-- .env.example # Environment template � +-- utils/ � +-- index.js # HTTP client utilities � +-- jira/ � +-- index.js # JIRA tools � +-- service.js # JIRA API implementation � +-- confluence/ � +-- index.js # Confluence tools � +-- service.js # Confluence API implementation � +-- outlook/ +-- index.js # Main Outlook aggregator +-- auth/ � +-- index.js # Auth tools � +-- token-manager.js # OAuth token management +-- email/ � +-- index.js # Email tools definition � +-- list.js # List emails implementation � +-- read.js # Read email implementation � +-- send.js # Send email implementation � +-- search.js # Search emails implementation � +-- reply.js # Reply email implementation � +-- mark-as-read.js # Mark as read implementation � +-- move.js # Move email implementation � +-- folder-utils.js # Folder resolution utilities +-- calendar/ � +-- index.js # Calendar tools � +-- [operation].js # Calendar operations +-- folder/ � +-- index.js # Folder tools definition � +-- list.js # List folders implementation � +-- create.js # Create folder implementation � +-- move.js # Move folder implementation +-- rules/ � +-- index.js # Mail rules tools +-- services/ +-- graph-service.js # Microsoft Graph API client
🔐 安全考虑
- 环境变量:永远不要将.env文件提交到版本控制
- 令牌存储:Outlook令牌存储在本地.Outlook-tokes.json中
- 网络安全:根据需要配置防火墙和代理
- 凭证轮换:定期轮换API密钥和密码
- 权限:对服务帐户使用最小权限原则
- OAuth范围:身份验证期间请求的最小范围
🤝 贡献
- 分叉 存储库
- 创建特征分支:git checkout-b功能/新工具
- 添加实现 在相应的服务目录中
- 更新文档 包括工具说明
- 彻底测试 在测试和生产模式下
- 提交拉取请求
📄 许可证
MIT许可证-有关详细信息,请参阅许可证文件
🏢 企业功能
- 企业代理支持:通过公司防火墙工作
- SSO兼容性:处理企业身份验证流
- 审计日志:全面的请求/响应日志记录
- 零依赖:安全性的外部依赖性最小
- 配置管理:基于环境的凭证处理
- 高可用性:水平缩放的无状态设计
- 文件夹层次结构支持:处理复杂的文件夹结构
- 批量操作:高效处理多个项目
🆕 版本历史记录
v1.1.0版本
- 电子邮件回复工具:交互式双模式电子邮件回复功能
- 增强的电子邮件移动:基于搜索的电子邮件过滤和批处理操作
- 文件夹管理:明确源/目标参数区分
- 改进了错误处理:更好的错误消息和文件夹发现
- Outlook限制:明确记录文件夹移动限制
- 演出:优化文件夹查找,$top=500
- 删除了弃用的参数:folderName和destinationFolder已替换为sourceFolder/targetFolder
v1.0.0
- 初始版本:统一的JIRA、Confluence和Outlook集成
- 25+工具:全面的生产力套件
- 测试模式:完整的模拟数据支持
- 模块化架构:可独立部署的服务
- 企业级就绪:安全和合规功能
______________________________________________________________________
专为企业生产力和自动化而构建
*一个MCP服务器来管理它们——JIRA、Confluence和Outlook集成变得简单!*
