Doramagic 项目包 · 项目说明书
mcp-servers 项目
生成时间:2026-05-26 15:27:47 UTC
项目概述
mcp-servers 是一个由 Mindstone 团队维护的 MCP (Model Context Protocol) 服务器集合,旨在为 AI 助手提供与各种企业服务和生产力工具集成的能力。该项目采用模块化架构,每个连接器(Connector)独立封装一个外部服务的集成逻辑,通过 MCP 协议与主机应用(如 Claude Desktop、Claude Code、Goo...
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
项目简介
mcp-servers 是一个由 Mindstone 团队维护的 MCP (Model Context Protocol) 服务器集合,旨在为 AI 助手提供与各种企业服务和生产力工具集成的能力。该项目采用模块化架构,每个连接器(Connector)独立封装一个外部服务的集成逻辑,通过 MCP 协议与主机应用(如 Claude Desktop、Claude Code、Goose、Continue.dev 等)进行通信 资料来源:[README.md:1]。
MCP 协议是一种标准化的人机交互协议,允许 AI 模型通过统一的工具接口调用外部系统功能。该仓库中的所有连接器都遵循这一协议规范,实现了从简单的邮件发送到复杂的 CRM 数据操作的各类工具 资料来源:[README.md:1-5]。
项目架构
整体架构设计
项目采用 Monorepo 单体仓库结构,所有连接器位于 connectors/ 目录下,每个连接器都是一个独立的 Node.js 模块,拥有自己的 package.json、TypeScript 源码和构建配置。这种设计使得各服务集成可以独立开发、测试和发布,同时共享统一的代码规范和最佳实践 资料来源:[package.json:1-20]。
graph TD
subgraph "MCP Host Layer"
A[MCP Host<br/>Claude Desktop/Code<br/>Goose/Continue.dev]
end
subgraph "Connectors Layer"
B[Office Connector]
C[Google Workspace<br/>Connector]
D[HubSpot Connector]
E[Microsoft Teams<br/>Connector]
F[Zendesk Connector]
G[Google Analytics<br/>Connector]
H[Napkin Connector]
I[Nano Banana<br/>Connector]
J[Microsoft SharePoint<br/>Connector]
end
subgraph "External Services"
K[Microsoft 365]
L[Google Workspace]
M[HubSpot CRM]
N[Various APIs]
end
A --> B
A --> C
A --> D
A --> E
A --> F
A --> G
A --> H
A --> J
B --> K
C --> L
D --> M
E --> K
F --> N
G --> L
J --> K连接器目录结构
每个连接器遵循统一的项目结构,保证了代码的可维护性和一致性:
| 目录/文件 | 说明 |
|---|---|
src/ | TypeScript 源代码目录 |
src/tools/ | 工具定义和处理逻辑 |
src/tools/definitions.ts | 工具元数据定义文件 |
dist/ | TypeScript 编译输出目录 |
package.json | NPM 包配置和脚本定义 |
README.md | 连接器使用文档 |
LICENSE | 许可证文件 |
资料来源:[connectors/_template/package.json:1-30]
核心连接器一览
Microsoft Office 连接器
@mindstone/mcp-server-office 提供了对 Microsoft Office 套件的深度集成,支持 Word、Excel 和 PowerPoint 三大应用。该连接器提供了超过 53 个工具,涵盖文档操作、数据处理和演示管理三大领域 资料来源:[connectors/office/README.md:1-100]。
#### Word 工具(17个)
| 工具名称 | 功能描述 | 操作类型 |
|---|---|---|
rebel_office_word_read_document | 读取 Word 文档正文,按段落分页 | 只读 |
rebel_office_word_get_document_structure | 获取文档标题/章节大纲 | 只读 |
rebel_office_word_insert_text | 在指定位置插入文本 | 破坏性 |
rebel_office_word_replace_text | 查找并替换文档文本 | 破坏性 |
rebel_office_word_format_text | 应用字体、颜色、强调或对齐格式 | 破坏性 |
rebel_office_word_insert_table | 插入带表头和行的表格 | 破坏性 |
rebel_office_word_insert_image | 从文件路径或 base64 数据插入图片 | 破坏性 |
#### Excel 工具(22个)
| 工具名称 | 功能描述 | 操作类型 |
|---|---|---|
rebel_office_excel_read_range | 从 A1 范围或命名范围读取单元格值 | 只读 |
rebel_office_excel_write_range | 向范围写入二维值数组 | 破坏性 |
rebel_office_excel_add_worksheet | 在指定位置添加新工作表 | 破坏性 |
rebel_office_excel_delete_worksheet | 删除工作表及所有数据 | 破坏性 |
rebel_office_excel_set_formula | 设置单元格公式 | 破坏性 |
资料来源:[connectors/office/README.md:1-80]
Google Workspace 连接器
@mindstone/mcp-server-google-workspace 集成了 Gmail、日历、Drive、Docs、Sheets、Slides、Contacts、Tasks 和 Forms 等 Google 服务。该连接器的最新版本 v0.1.2 引入了一个重要的行为变更:增加了 handleComposeWorkspaceEmail 的输入验证机制,在 to、subject、body 参数为空时不再静默使用默认值,而是抛出 McpError(InvalidParams) 错误 资料来源:[connectors/google-workspace/package.json:8-15]。
⚠️ 社区关注点:此变更在 Issue #67 和 PR #66 中讨论,是一次行为变更(Behaviour-changing),可能影响依赖旧行为的上游应用 资料来源:[社区上下文:#67]。
HubSpot 连接器
HubSpot CRM 连接器提供了全面的客户关系管理功能,包括联系人、公司、交易、工单、任务等核心模块的操作。连接器通过 src/tools/definitions.ts 导出了完整的工具定义列表,并通过 applyCohortHygieneAnnotations 函数为每个工具自动添加安全注解,包括 destructiveHint(破坏性提示)、openWorldHint(开放世界提示)等元数据 资料来源:[connectors/hubspot/src/tools/definitions.ts:1-50]。
| 功能模块 | 工具数量 | 主要工具 |
|---|---|---|
| Account | 多个 | 账户信息管理 |
| Contact | 多个 | 联系人 CRUD 操作 |
| Company | 多个 | 公司信息管理 |
| Deal | 多个 | 交易管理 |
| Ticket | 多个 | 工单管理 |
| Forms | 多个 | 表单列表和提交获取 |
| Knowledge Base | 多个 | 知识库文章管理 |
| Analytics | 多个 | 网站流量分析报告 |
资料来源:[connectors/hubspot/README.md:1-80]
Microsoft Teams 连接器
Microsoft 365 Teams 连接器允许通过 MCP 协议与 Microsoft Teams 进行交互。该连接器依赖 Microsoft Entra (Azure AD) 进行身份验证,需要配置 MS_CLIENT_ID 和 MS_CONFIG_DIR 环境变量 资料来源:[connectors/microsoft-teams/README.md:1-50]。
其他连接器
| 连接器 | NPM 包名 | 主要功能 |
|---|---|---|
| Google Analytics | @mindstone/mcp-server-google-analytics | GA4 数据查询和报告 |
| Zendesk | @mindstone/mcp-server-zendesk | 工单和宏管理 |
| Napkin | @mindstone/mcp-server-napkin | 文本生成专业可视化图表 |
| Nano Banana | @mindstone/mcp-server-nano-banana | 集成 Gemini API 的图像生成 |
| Microsoft SharePoint | @mindstone/mcp-server-sharepoint | SharePoint 站点和页面内容管理 |
资料来源:[connectors/google-analytics/README.md:1], [connectors/zendesk/README.md:1], [connectors/napkin/README.md:1], [connectors/nano-banana/README.md:1]
技术规范
运行时要求
所有连接器均要求 Node.js 版本 18 或更高版本,使用 TypeScript 作为开发语言,并采用 ESM (ES Modules) 模块系统 资料来源:[connectors/google-workspace/package.json:25]。
{
"engines": {
"node": ">=18"
},
"type": "module"
}
构建流程
项目采用统一的构建脚本,通过 npm run build 命令执行以下步骤:
- 清理
dist/目录 - TypeScript 编译
- 复制资源文件(如工具定义 JSON)
- 设置可执行权限
- 生成工具注解
npm install
npm run build
资料来源:[connectors/google-workspace/package.json:15-20]
许可证
该项目采用 FSL-1.1-MIT(Functional Source License, Version 1.1, with MIT future license)许可证。FSL 是一种"竞争性使用"许可证,在非竞争性用途下保持开源免费,在转换日期后自动转换为 MIT 许可证 资料来源:[connectors/napkin/README.md:1]。
安装与配置
MCP 主机配置示例
#### Claude Desktop / Cursor
{
"mcpServers": {
"Microsoft Office": {
"command": "npx",
"args": ["-y", "@mindstone/mcp-server-office"],
"env": {
"MCP_OFFICE_SIDECAR_STATE": "/path/to/sidecar-state.json"
}
},
"Google Workspace": {
"command": "npx",
"args": ["-y", "@mindstone/mcp-server-google-workspace"]
},
"HubSpot": {
"command": "npx",
"args": ["-y", "@mindstone/mcp-server-hubspot"],
"env": {
"HUBSPOT_CONFIG_PATH": "/path/to/hubspot/config"
}
}
}
}
资料来源:[connectors/office/README.md:100-120]
本地开发配置
{
"mcpServers": {
"Microsoft Office": {
"command": "node",
"args": ["/path/to/repo/connectors/office/dist/index.js"],
"env": {
"MCP_OFFICE_SIDECAR_STATE": ""
}
}
}
}
资料来源:[connectors/office/README.md:130-140]
工具注解系统
连接器实现了 MCP 工具注解系统,为每个工具提供元数据提示,帮助 MCP 主机做出更好的决策:
| 注解名称 | 说明 | 取值示例 |
|---|---|---|
destructiveHint | 指示操作是否具有破坏性 | true / false |
idempotentHint | 指示操作是否幂等 | true / false |
openWorldHint | 指示工具是否访问外部网络 | true / false |
readOnlyHint | 指示操作是否只读 | true / false |
annotations: {
readOnlyHint: false,
destructiveHint: true,
idempotentHint: false,
openWorldHint: true,
}
资料来源:[connectors/office/src/index.ts:1-50]
错误处理机制
连接器实现了统一的错误处理系统,根据错误类型返回用户友好的错误消息:
| 错误码 | 说明 | 建议操作 |
|---|---|---|
NOT_IMPLEMENTED | 功能尚未实现 | 等待后续版本 |
INVALID_MESSAGE | 消息解析失败 | 尝试重新连接 |
TAB_CONTEXT_GONE | 目标标签页已关闭或导航 | 重新检查标签页状态 |
AUTH_REQUIRED | 需要身份验证 | 执行认证流程 |
TIMEOUT | 操作超时 | 重试或增加超时时间 |
资料来源:[connectors/office/src/shared/appBridge/shared/errors.ts:1-30]
常见问题排查
| 症状 | 可能原因 | 解决方案 |
|---|---|---|
| 连接器启动失败 | 未构建项目 | 运行 npm install && npm run build |
| 认证错误或空结果 | 配置路径错误或凭证无效 | 检查配置文件和 accounts.json |
| MCP 主机报告协议问题 | stdio 会话中有控制台输出噪声 | 确保使用 console.error 进行日志记录 |
| 工具调用超时 | 网络延迟或服务响应慢 | 增加超时配置或重试 |
资料来源:[connectors/zendesk/README.md:40-50]
社区与贡献
相关社区资源
- Issue #67 - google-workspace v0.1.2 发布审批:引入了
handleComposeWorkspaceEmail的输入验证变更,要求to、subject、body参数必须提供有效值,否则抛出McpError(InvalidParams)错误 资料来源:[社区上下文:#67]
版本迁移
项目维护者提供了 MIGRATION.md 文档,详细记录了各版本之间的 breaking changes 和升级路径。建议在升级连接器版本前仔细阅读该文档 资料来源:[MIGRATION.md:1]。
另请参阅
资料来源:[connectors/_template/package.json:1-30]
连接器开发模板
connectors/template 目录提供了一个标准化的 MCP(Model Context Protocol)连接器开发模板,用于快速创建新的集成连接器。本模板定义了 Mindstone mcp-servers 项目中所有连接器的通用架构、最佳实践和代码组织规范。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
概述
connectors/_template 目录提供了一个标准化的 MCP(Model Context Protocol)连接器开发模板,用于快速创建新的集成连接器。本模板定义了 Mindstone mcp-servers 项目中所有连接器的通用架构、最佳实践和代码组织规范。
模板目的
MCP 连接器模板的主要目的是:
- 统一开发标准:为所有新的连接器提供一致的代码结构和命名规范
- 加速开发:新连接器开发者可以直接复用模板框架,专注于业务逻辑实现
- 降低维护成本:标准化结构便于团队协作和代码审查
- 保证质量:内置错误处理、日志记录和安全最佳实践
资料来源:connectors/google-workspace/package.json:14-17
架构设计
整体架构
MCP 连接器采用标准的三层架构模式,通过标准输入输出(stdio)与主机应用通信。
graph TD
subgraph MCP主机应用
A[Claude Desktop / Cursor / Goose]
end
subgraph MCP连接器
B[server.ts - MCP服务器核心]
C[bridge.ts - 主机桥接层]
D[tools/ - 工具定义]
E[modules/ - 业务模块]
F[types.ts - 类型定义]
G[utils.ts - 工具函数]
end
subgraph 外部服务
H[第三方API]
I[OAuth服务]
end
A -->|"stdio JSON-RPC"| B
B --> C
C -->|"HTTP API"| H
C -->|"OAuth"| I
B --> D
D --> E
E --> F
E --> G
style A fill:#e1f5fe
style H fill:#fff3e0
style I fill:#f3e5f5核心组件职责
| 组件文件 | 职责 | 说明 |
|---|---|---|
server.ts | MCP服务器入口 | 注册工具处理器、定义输入Schema、处理MCP协议通信 |
bridge.ts | 主机桥接层 | 处理OAuth认证流程、读写凭据文件、与主机应用通信 |
types.ts | 类型定义 | TypeScript接口定义,确保类型安全 |
utils.ts | 工具函数 | 日志、错误处理、请求封装等通用功能 |
资料来源:connectors/microsoft-sharepoint/README.md
工具注册模式
工具定义结构
每个 MCP 工具通过 server.registerTool() 方法注册,包含以下关键属性:
server.registerTool(TOOL_NAMES.toolName, {
title: '工具显示名称',
description: '工具功能描述',
inputSchema: {
type: "object",
properties: {
// 参数定义
},
required: ["必需参数"]
},
annotations: {
readOnlyHint: false, // 是否只读操作
destructiveHint: false, // 是否破坏性操作
idempotentHint: false, // 是否幂等操作
openWorldHint: false // 是否访问外部世界
}
}, async (input) => {
// 工具实现逻辑
});
资料来源:connectors/office/src/index.ts:1-50
工具分类注解
MCP 工具根据操作性质使用不同的注解标记:
| 注解 | 含义 | 使用场景 |
|---|---|---|
readOnlyHint: true | 只读查询 | list_*, get_*, search_* |
destructiveHint: true | 破坏性操作 | create_*, delete_*, update_*, write_* |
idempotentHint: true | 幂等操作 | 设置属性、发送消息等 |
认证与配置
环境变量配置
模板连接器支持以下标准环境变量:
| 变量名 | 必需 | 说明 |
|---|---|---|
*_CONFIG_DIR | 是 | 配置目录路径,包含凭据和账户信息 |
*_CLIENT_ID | 部分 | OAuth应用的客户端ID |
*_ACCOUNT_EMAIL | 否 | 多账户模式下的指定账户 |
*_PACKAGE_ID | 否 | 错误响应中显示的包标识符 |
*_REQUEST_TIMEOUT_MS | 否 | 请求超时时间(毫秒) |
资料来源:connectors/microsoft-teams/README.md
OAuth认证流程
对于需要OAuth的连接器(如Microsoft 365、Google Workspace),模板提供标准认证流程:
sequenceDiagram
participant U as 用户
participant H as MCP主机
participant C as 连接器
participant A as OAuth Provider
U->>H: 触发认证工具
H->>C: 调用 authenticate_* 工具
C->>A: 请求OAuth授权
A->>U: 显示授权页面
U->>A: 确认授权
A->>C: 返回授权码
C->>A: 交换访问令牌
A->>C: 返回令牌
C->>C: 写入凭据文件 (mode 0600)
C-->>H: 认证成功响应错误处理规范
连接器使用结构化错误响应格式,便于主机应用进行错误恢复:
{
error: '错误描述',
errorCode: 'ERROR_CODE',
suggestion: '修复建议',
action_required?: '需要用户操作',
next_step?: '下一步建议'
}
资料来源:connectors/microsoft-sharepoint/README.md
包配置规范
package.json 结构
{
"name": "@mindstone/mcp-server-{connector-name}",
"version": "0.1.0",
"mcpName": "io.github.mindstone/mcp-server-{name}",
"description": "连接器功能描述",
"license": "FSL-1.1-MIT",
"type": "module",
"bin": {
"mcp-server-{name}": "dist/index.js"
},
"engines": {
"node": ">=18"
},
"scripts": {
"build": "shx rm -rf dist && tsc && shx chmod +x dist/index.js",
"start": "node dist/index.js",
"test": "vitest run"
}
}
资料来源:connectors/google-workspace/package.json:8-27
目录结构
connectors/
└── {connector-name}/
├── src/
│ ├── index.ts # 入口文件
│ ├── server.ts # MCP服务器
│ ├── bridge.ts # 桥接层
│ ├── types.ts # 类型定义
│ ├── utils.ts # 工具函数
│ ├── tools/ # 工具实现
│ │ ├── definitions/ # 工具Schema定义
│ │ └── handlers/ # 工具处理器
│ └── modules/ # 业务模块
├── dist/ # 编译输出
├── package.json
├── tsconfig.json
├── README.md
└── LICENSE
构建与部署
构建流程
cd connectors/{connector-name}
npm install
npm run build
编译过程执行以下操作:
- 清理
dist/目录 - TypeScript 编译
- 复制静态资源(如工具Schema定义)
- 设置可执行权限
运行模式
连接器支持三种运行模式:
| 模式 | 命令 | 用途 |
|---|---|---|
| npx运行 | npx -y @mindstone/mcp-server-{name} | 发布后快速测试 |
| 本地运行 | node dist/index.js | 开发调试 |
| MCP主机集成 | 通过stdio通信 | 生产环境 |
输入验证最佳实践
必填参数校验
根据社区反馈(Issue #67),新版模板强调fail-closed(失败即止)输入验证策略:
// 错误示例 - 静默默认值
if (!input.to) input.to = ""; // 不推荐
// 正确示例 - 显式验证
if (!input.to || !input.subject || !input.body) {
throw new McpError(InvalidParams, "Missing required fields: to, subject, body");
}
验证规则
| 字段类型 | 验证要求 | 实现方式 |
|---|---|---|
| 必填字符串 | 非空检查 | required in schema + 运行时校验 |
| 邮箱地址 | 格式验证 | 正则表达式或专用验证器 |
| 数值范围 | 边界检查 | minimum, maximum in schema |
| 枚举值 | 白名单验证 | enum in schema |
日志记录规范
日志级别使用
| 级别 | 使用场景 | 示例 |
|---|---|---|
logger.info | 成功操作记录 | logger.info('Listed ${count} items') |
logger.warn | 可恢复异常 | 缺失可选参数使用默认值 |
logger.error | 错误详情记录 | 异常信息和上下文 |
日志输出位置
- stdio会话:所有日志必须输出到
stderr(console.error) - 禁止:在stdio模式下使用
console.log,会破坏JSON-RPC协议
资料来源:connectors/zendesk/README.md
主机配置示例
Claude Desktop 配置
{
"mcpServers": {
"{ConnectorName}": {
"command": "npx",
"args": ["-y", "@mindstone/mcp-server-{name}"],
"env": {
"{CONFIG_VAR}": "配置值"
}
}
}
}
本地开发配置
{
"mcpServers": {
"{ConnectorName}": {
"command": "node",
"args": ["/path/to/connectors/{name}/dist/index.js"],
"env": {
"{CONFIG_VAR}": "配置值"
}
}
}
}
常见问题排查
| 症状 | 可能原因 | 解决方案 |
|---|---|---|
| 连接器启动失败 | 未执行构建 | 运行 npm install && npm run build |
| 认证错误或空结果 | 配置路径错误或凭据无效 | 检查 *_CONFIG_DIR 和 accounts.json |
| MCP协议错误 | stdout中有非JSON输出 | 确保所有日志使用 console.error |
| 请求超时 | 网络问题或API限流 | 检查 *_REQUEST_TIMEOUT_MS 配置 |
许可证
本模板及所有基于模板创建的连接器采用 FSL-1.1-MIT(Functional Source License, Version 1.1, with MIT future licence)许可证。
资料来源:connectors/zendesk/README.md
另请参阅
- Microsoft Office 连接器 - 完整的Office集成示例
- Microsoft Teams 连接器 - OAuth认证模式示例
- Google Workspace 连接器 - 多种服务集成示例
- HubSpot 连接器 - 复杂业务逻辑处理示例
系统架构
mcp-servers 是一个 MCP (Model Context Protocol) 服务器集合,为 AI 助手提供与各种企业服务和工具集成的能力。该项目采用模块化连接器架构,每个连接器对应一个外部服务(如 Google Workspace、Microsoft 365、HubSpot 等),通过 MCP 协议向 AI 主机暴露标准化的工具接口。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
概述
mcp-servers 是一个 MCP (Model Context Protocol) 服务器集合,为 AI 助手提供与各种企业服务和工具集成的能力。该项目采用模块化连接器架构,每个连接器对应一个外部服务(如 Google Workspace、Microsoft 365、HubSpot 等),通过 MCP 协议向 AI 主机暴露标准化的工具接口。
资料来源:connectors/google-workspace/package.json
整体架构
graph TD
subgraph MCP主机层
A[MCP Host<br/>Claude Desktop/Cursor]
end
subgraph 连接器层
B[Google Workspace<br/>Connector]
C[Microsoft 365<br/>Connector]
D[HubSpot<br/>Connector]
E[Office<br/>Connector]
F[其他连接器]
end
subgraph 共享包层
G[mcp-server-microsoft-shared]
end
subgraph 外部服务层
H[Google APIs]
I[Microsoft Graph API]
J[HubSpot API]
K[Office 应用程序]
end
A --> B
A --> C
A --> D
A --> E
A --> F
C --> G
E --> G
B --> H
C --> I
D --> J
E --> K
G --> I连接器架构
连接器目录结构
每个连接器都是一个独立的 Node.js 模块,具有相似的目录结构:
| 组件 | 说明 |
|---|---|
src/index.ts | MCP 服务器入口点,注册所有工具 |
src/tools/ | 工具定义和处理逻辑 |
src/modules/ | 业务逻辑模块 |
package.json | 包配置和依赖声明 |
dist/ | TypeScript 编译输出 |
资料来源:connectors/google-workspace/src/tools/server.ts
工具注册模式
工具通过标准化的注册流程暴露给 MCP 主机:
graph LR
A[工具定义<br/>definitions.ts] --> B[工具元数据<br/>ToolMetadata]
B --> C[注册表<br/>registry.ts]
C --> D[MCP 服务器<br/>index.ts]
D --> E[MCP 主机]
F[处理函数<br/>handlers.ts] --> C
G[类型定义<br/>types.ts] --> B工具元数据结构(ToolMetadata)包含以下核心属性:
| 属性 | 类型 | 说明 |
|---|---|---|
name | string | 工具唯一标识符 |
description | string | 工具功能描述 |
inputSchema | JSON Schema | 输入参数验证模式 |
annotations | object | 行为注解(破坏性、幂等性等) |
requiresAuth | boolean | 是否需要认证 |
资料来源:connectors/hubspot/src/tools/definitions.ts
行为注解系统
每个工具都通过注解系统声明其行为特征,帮助 AI 代理做出安全决策:
| 注解 | 说明 | 示例 |
|---|---|---|
destructiveHint | 是否为破坏性操作 | trash_drive_file |
idempotentHint | 重复执行是否安全 | read_workspace_document |
readOnlyHint | 是否为只读操作 | list_workspace_labels |
openWorldHint | 是否影响外部世界 | send_workspace_email |
// 强制破坏性标记示例
const DESTRUCTIVE_TOOL_NAME_PATTERN = /^(create|update|delete|trash|remove|send)/;
const FORCE_DESTRUCTIVE_TOOL_SET = new Set(['rebel_office_word_insert_text']);
function applyCohortHygieneAnnotations(tool: ToolMetadata): ToolMetadata {
const shouldForceDestructiveHint =
DESTRUCTIVE_TOOL_NAME_PATTERN.test(tool.name) ||
FORCE_DESTRUCTIVE_TOOL_SET.has(tool.name);
// ...
}
资料来源:connectors/hubspot/src/tools/definitions.ts
Microsoft 共享包架构
mcp-server-microsoft-shared 是一个共享包,为所有 Microsoft 服务连接器提供通用功能。
graph TD
subgraph mcp-server-microsoft-shared
A[GraphClient]
B[TokenProvider]
C[类型定义]
end
subgraph Microsoft 连接器
D[microsoft-teams]
E[microsoft-sharepoint]
F[microsoft-mail]
G[office]
end
A --> D
A --> E
A --> F
B --> D
B --> E
B --> F
C --> D
C --> E
C --> F
C --> GGraph 客户端
GraphClient 封装了 Microsoft Graph API 的调用逻辑,提供标准化的请求/响应处理:
export class GraphClient {
constructor(tokenProvider: TokenProvider, options?: ClientOptions);
async get<T>(path: string, params?: Record<string, string>): Promise<T>;
async post<T>(path: string, data: unknown): Promise<T>;
async patch<T>(path: string, data: unknown): Promise<T>;
async delete(path: string): Promise<void>;
}
资料来源:packages/mcp-server-microsoft-shared/src/graphClient.ts
令牌提供者
TokenProvider 负责 OAuth2 令牌的生命周期管理:
| 方法 | 说明 |
|---|---|
getAccessToken() | 获取当前有效的访问令牌 |
refreshIfNeeded() | 令牌过期前自动刷新 |
invalidate() | 使当前令牌失效 |
资料来源:packages/mcp-server-microsoft-shared/src/tokenProvider.ts
配置目录结构
Microsoft 连接器使用标准化的配置目录结构:
${MS_CONFIG_DIR}/
├── accounts.json # 账户配置
├── credentials/ # OAuth 凭据存储
└── token-cache.json # 令牌缓存
| 环境变量 | 说明 |
|---|---|
MS_CLIENT_ID | Microsoft Entra 应用程序客户端 ID |
MS_CONFIG_DIR | 配置文件目录路径 |
MS_ACCOUNT_EMAIL | 多账户模式下的目标账户 |
MICROSOFT_REQUEST_TIMEOUT_MS | Graph API 请求超时(最大 300000ms) |
MICROSOFT_DISABLE_REFRESH | 禁用令牌自动刷新 |
资料来源:connectors/microsoft-teams/README.md
Office 连接器架构
Office 连接器采用Sidecar 模式,通过独立的进程(sidecar)与 Office 应用程序通信。
graph TD
subgraph MCP层
A[MCP Server<br/>index.ts]
end
subgraph Sidecar进程
B[Sidecar Server<br/>端口+令牌]
C[Word Bridge]
D[Excel Bridge]
E[PowerPoint Bridge]
end
subgraph Office应用程序
F[Word]
G[Excel]
H[PowerPoint]
end
A -->|"MCP_OFFICE_SIDECAR_STATE"| B
B --> C
B --> D
B --> E
C --> F
D --> G
E --> HSidecar 状态文件
Sidecar 状态文件(JSON)包含 MCP 服务器与 sidecar 进程通信所需的连接信息:
{
"port": 12345,
"token": "xxx-xxx-xxx"
}
| 环境变量 | 说明 |
|---|---|
MCP_OFFICE_SIDECAR_STATE | Sidecar 状态文件路径(必需) |
MCP_OFFICE_SIDECAR_DISABLE | 禁用 sidecar 模式 |
资料来源:connectors/office/README.md
错误代码体系
Office 连接器定义了完整的错误代码体系:
| 错误代码 | 说明 |
|---|---|
NOT_FOUND | 目标元素不存在 |
ELEMENT_MISSING | 必需的参数缺失 |
ALREADY_DONE | 操作已完成(如已标记的评论) |
TIMEOUT | 操作超时 |
NOT_IMPLEMENTED | 功能未实现 |
INVALID_MESSAGE | 消息格式无效(版本不匹配) |
IDEMPOTENT_DROP | 幂等丢弃(重复操作) |
CAPABILITY_NOT_SUPPORTED | 当前不支持该操作 |
TAB_CONTEXT_GONE | 目标标签页已关闭 |
TAB_CONTEXT_DIVERGED | 页面内容已变更 |
export function toUserMessage(code: ErrorCode, label: string): string {
switch (code) {
case 'NOT_FOUND':
return `I couldn't find that. Double-check the ID or selection and try again.`;
case 'TIMEOUT':
return `The operation timed out — the app was busy, try a smaller scope or try again.`;
// ...
}
}
资料来源:connectors/office/src/shared/appBridge/shared/errors.ts
认证与授权
Google Workspace 认证
Google Workspace 连接器使用 OAuth2 授权码流程:
sequenceDiagram
participant AI as AI 代理
participant MCP as MCP Server
participant Google as Google APIs
AI->>MCP: authenticate_workspace_account(email)
MCP->>AI: 请求 auth_code
Note over AI: 用户在浏览器完成授权
AI->>MCP: authenticate_workspace_account(auth_code)
MCP->>Google: 交换 access_token
Google-->>MCP: access_token + refresh_token
MCP->>MCP: 存储账户配置
MCP-->>AI: 认证成功资料来源:connectors/google-workspace/src/tools/types.ts
Google Analytics 认证
Google Analytics 连接器使用 Application Default Credentials (ADC):
gcloud auth application-default login \
--scopes=https://www.googleapis.com/auth/analytics.readonly,\
https://www.googleapis.com/auth/cloud-platform
| 环境变量 | 说明 |
|---|---|
GOOGLE_APPLICATION_CREDENTIALS | 服务账户密钥文件路径 |
资料来源:connectors/google-analytics/README.md
工具分类与组织
Google Workspace 工具分类
| 类别 | 工具数量 | 主要工具 |
|---|---|---|
| Gmail | 10+ | send_workspace_email, search_workspace_emails |
| 日历 | 8+ | manage_workspace_calendar_event, respond_to_workspace_calendar_event |
| Drive | 10+ | search_drive_files, update_drive_permissions |
| Docs | 6+ | read_workspace_document, replace_workspace_document |
| Sheets | 4+ | read_workspace_spreadsheet, read_workspace_spreadsheet_values |
| Slides | 3+ | read_workspace_presentation |
| Contacts | 3+ | search_workspace_contacts |
| Tasks | 2+ | update_task |
| Forms | 3+ | 管理表单和提交 |
HubSpot 工具分类
| 类别 | 工具数量 |
|---|---|
| Account/Contact/Company | 15+ |
| Deals/Pipeline | 10+ |
| Tickets/Leads | 8+ |
| Tasks/Notes | 6+ |
| Products/Line Items | 4+ |
| Forms/Analytics | 6+ |
| Marketing Emails | 4+ |
| Lists/Knowledge Base | 8+ |
| Workflows/Conversations | 6+ |
资料来源:connectors/hubspot/README.md
Office 工具分类
| 类别 | 工具数量 | 说明 |
|---|---|---|
| Word | 17 | 文档读写、格式、批注、修订 |
| Excel | 22 | 范围读写、工作表管理、表单、公式 |
| PowerPoint | 14 | 幻灯片管理、文本、形状 |
| 设置 | 2 | rebel_office_setup, rebel_office_status |
资料来源:connectors/office/README.md
响应格式标准
所有 MCP 工具返回统一的标准响应格式:
export interface McpToolResponse {
content: {
type: 'text';
text: string;
}[];
isError?: boolean;
_meta?: Record<string, unknown>;
}
资料来源:connectors/google-workspace/src/tools/types.ts
输入验证与错误处理
Fail-Closed 验证模式
从 v0.1.2 开始,Google Workspace 连接器采用Fail-Closed(故障关闭)验证策略:
行为变更:在handleComposeWorkspaceEmail中新增了 fail-closed 输入验证门控。当to/subject/body参数为空时,不再静默使用默认值,而是抛出McpError(InvalidParams)错误。
常见故障排除
| 症状 | 可能原因 | 解决方案 |
|---|---|---|
| 连接器启动失败 | 未构建 | 运行 npm install && npm run build |
| 认证错误或空结果 | 配置路径或凭据错误 | 检查配置文件和 accounts.json |
| MCP 主机协议错误 | stdout 有额外输出 | 确保使用 console.error 而非 console.log |
| 令牌过期 | 令牌未自动刷新 | 检查 MICROSOFT_DISABLE_REFRESH 设置 |
| Office 连接失败 | Sidecar 未启动 | 运行 rebel_office_setup |
资料来源:connectors/zendesk/README.md
部署模式
npx 模式(推荐)
{
"mcpServers": {
"Google Workspace": {
"command": "npx",
"args": ["-y", "@mindstone/mcp-server-google-workspace"]
}
}
}
本地开发模式
{
"mcpServers": {
"Microsoft365Teams": {
"command": "node",
"args": ["/path/to/connectors/microsoft-teams/dist/index.js"],
"env": {
"MS_CLIENT_ID": "your-entra-application-client-id",
"MS_CONFIG_DIR": "/absolute/path/to/microsoft-config"
}
}
}
}
许可证
所有连接器采用 FSL-1.1-MIT(Functional Source License, Version 1.1, with MIT future licence)许可证。软件在 2030-04-08 自动转换为 MIT 许可证。
资料来源:connectors/google-workspace/package.json
相关文档
认证模式
mcp-servers 仓库支持多种认证模式,以适配不同的外部服务和协议。认证模式分为三大类:
继续阅读本节完整说明和来源证据。
概述
mcp-servers 仓库支持多种认证模式,以适配不同的外部服务和协议。认证模式分为三大类:
- OAuth2 认证 — 适用于 Google Workspace、HubSpot、Microsoft 365 等需要 OAuth2 授权的云服务
- 令牌认证 — 适用于 Slack 等使用静态 API Token 的服务
- IMAP/SMTP 认证 — 适用于邮件服务的基础凭证认证
每种认证模式都由独立的模块处理,遵循统一的错误处理规范和账户管理接口。认证成功后,凭证会被持久化到本地配置文件,供后续请求复用。
资料来源:connectors/google-workspace/src/modules/accounts/oauth.ts:1-50
资料来源:connectors/google-workspace/src/modules/accounts/oauth.ts:1-50
安全加固机制
mcp-servers 项目采用多层次的安全加固机制,涵盖供应链安全、凭证管理、输入验证、错误处理和发布流程等多个方面。这些机制共同构成了一个纵深防御体系,确保连接器在各种场景下的安全性。
继续阅读本节完整说明和来源证据。
概述
mcp-servers 项目采用多层次的安全加固机制,涵盖供应链安全、凭证管理、输入验证、错误处理和发布流程等多个方面。这些机制共同构成了一个纵深防御体系,确保连接器在各种场景下的安全性。
项目核心安全原则包括:
- 失败安全(Fail-Closed):默认拒绝未授权或不安全的操作
- 最小权限:仅请求必要的权限和作用域
- 原子性操作:确保敏感操作的完整性
- 透明审计:记录关键安全事件便于追踪
资料来源:SECURITY.md:1-20
资料来源:SECURITY.md:1-20
OAuth 安全加固
本文档介绍 MCP 服务器项目中的 OAuth 安全加固机制,涵盖令牌管理、错误处理、输入验证和安全审计等方面的最佳实践。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
概述
MCP 服务器项目为多个第三方服务(Google Workspace、Microsoft 365、Slack 等)提供 MCP(Model Context Protocol)集成。每个连接器都需要处理 OAuth 认证流程,项目采用统一的安全策略来保护令牌和用户凭据。
graph TD
A[MCP Host Application] -->|OAuth Flow| B[第三方服务提供商]
B -->|Access Token + Refresh Token| A
A -->|写入令牌文件| C[Token Storage]
C -->|读取令牌| D[MCP Connector]
D -->|API调用| B
C -.->|安全加固| E[权限控制 0o600]
C -.->|安全加固| F[原子写入]
C -.->|安全加固| G[符号链接防护]令牌安全管理
令牌存储架构
所有 MCP 连接器采用统一的令牌存储结构,由主机应用管理 OAuth 流程并写入令牌文件,连接器仅读取这些文件而不发起 OAuth 请求。
graph LR
A[主机应用 OAuth] -->|写入| B[Config Directory]
B --> C[accounts.json]
B --> D[credentials/]
D --> E[${sanitised-email}.token.json]
style B fill:#f9f,color:#000
style E fill:#ff9,color:#000令牌文件存储路径配置通过环境变量指定:
| 连接器 | 配置变量 | 默认路径 |
|---|---|---|
| Microsoft 365 | MS_CONFIG_DIR | 主机指定 |
| Google Workspace | ACCOUNTS_PATH / CREDENTIALS_PATH | 主机指定 |
| Slack | SLACK_CONFIG_PATH | 主机指定 |
原子写入与权限控制
mcp-server-microsoft-shared 包实现了生产级的令牌安全机制:
- 原子写入:使用临时文件加重命名的模式(temp-file + rename),确保写入过程不会留下不完整的令牌文件
- 权限控制:令牌文件权限设置为
0o600(仅所有者读写),目录权限设置为0o700 - 强制同步:使用
fsync强制将数据写入磁盘 - 符号链接防护:拒绝跟随符号链接,防止目录遍历攻击
- 陈旧清理:初始化时执行陈旧临时文件扫描和清理
资料来源:packages/mcp-server-microsoft-shared/README.md:安全 notes
令牌刷新控制
云端部署场景下,主机应用需要完全控制令牌刷新流程:
// MICROSOFT_DISABLE_REFRESH=1 时,令牌刷新被禁用
// TokenProvider.getAccessToken 抛出 MicrosoftRefreshDisabledError
// 连接器捕获该错误并返回结构化的 auth_required 响应
| 环境变量 | 行为 | 适用场景 |
|---|---|---|
| 未设置 | 自动刷新令牌 | 本地开发 |
MICROSOFT_DISABLE_REFRESH=1 | 禁用自动刷新 | 云端部署 |
资料来源:packages/mcp-server-microsoft-shared/README.md:Configuration
认证错误处理
统一错误响应格式
所有连接器采用统一的认证错误响应结构,确保 MCP Host 能够正确处理认证失败:
{
status: 'auth_required',
user_action: { id: 'google.connect_account' },
agent_action: {
instruction: "Connect Google Workspace to continue. The user will be redirected to Google's sign-in."
},
setupToolName: 'authenticate_workspace_account'
}
HTTP 状态码映射
| HTTP 状态码 | 错误类型 | 用户操作 |
|---|---|---|
| 401 | AUTH_REQUIRED | 触发重新认证流程 |
| 403 | 权限不足 | 请求额外权限或联系资源所有者 |
| 429 | 速率限制 | 退避后重试,减少请求量 |
| 5xx | 服务端错误 | 短暂延迟后重试,缩小请求范围 |
资料来源:connectors/google-workspace/src/tools/server.ts:1-50
Slack 连接器错误代码
Slack 连接器定义了详细的错误代码体系:
| 错误代码 | 含义 | 建议操作 |
|---|---|---|
NO_TOKEN | 无有效令牌 | 调用 authenticate_slack_workspace |
REFRESH_FAILED | 令牌刷新失败 | 调用 authenticate_slack_workspace |
REFRESH_TRANSIENT | 刷新遇到临时错误 | 延迟后重试 |
REFRESH_RATE_LIMITED | 刷新被限流 | 延迟后重试 |
REFRESH_AUTH_REJECTED | 刷新被拒绝 | 调用 authenticate_slack_workspace |
TOKEN_PERSIST_FAILED | 令牌持久化失败 | 重试(避免浪费 Slack 一次性刷新令牌) |
TOKEN_FILE_CORRUPT | 令牌文件损坏 | 调用 authenticate_slack_workspace |
MISSING_SCOPE | 缺少必要权限范围 | 调用 authenticate_slack_workspace |
资料来源:connectors/slack/src/types.ts:1-40
输入验证与故障安全
Gmail 邮件撰写验证
Google Workspace 连接器实现了 fail-closed(故障关闭)输入验证机制,在 handleComposeWorkspaceEmail 函数中添加了严格参数校验:
// 验证逻辑:以下字段不能为空或默认值
// - to: 收件人地址
// - subject: 邮件主题
// - body: 邮件正文
// 验证失败时抛出 McpError(InvalidParams)
// 避免静默发送空值邮件
常见错误避免:
| 错误做法 | 正确做法 |
|---|---|
包含 HTML 标签但未设置 is_html: true | 设置 "is_html": true |
对纯文本设置 is_html: true | 省略该字段或设为 false |
| HTML 内容中缺少换行标签 | 使用 <br> 或 <p> 标签 |
| 回复时不包含历史消息内容 | 在 body 中手动添加引用内容 |
资料来源:connectors/google-workspace/src/tools/definitions/gmail.ts:1-30
速率限制处理
当遇到速率限制时,连接器返回结构化错误响应:
{
"ok": false,
"action_required": "Google Workspace rate limit reached",
"next_step": "Back off before retrying, reduce the request size if possible"
}
认证流程模式
Microsoft 365 多连接器认证共享
Microsoft 365 系列连接器(Mail、Teams、SharePoint)采用共享认证基础设施:
sequenceDiagram
participant Host as MCP Host
participant Mail as microsoft-mail
participant Teams as microsoft-teams
participant Graph as Microsoft Graph API
Host->>Mail: authenticate_microsoft_account
Mail->>Graph: OAuth Flow
Graph-->>Mail: tokens
Mail-->>Host: Write to ${MS_CONFIG_DIR}
Host->>Teams: authenticate_sharepoint (增量授权)
Teams->>Mail: 读取共享配置
Mail-->>Teams: credentials/
Teams-->>Host: 复用 Mail 的基础会话关键安全设计:
- Teams 和 SharePoint 连接器复用 Mail 连接器建立的认证会话
- 所有连接器共享
MS_CONFIG_DIR中的令牌存储 - 主机应用统一管理令牌刷新,
MICROSOFT_DISABLE_REFRESH=1确保单点刷新权威
资料来源:connectors/microsoft-mail/README.md:Requirements
Google Workspace 认证流程
Google Workspace 连接器支持两种认证模式:
| 模式 | 检测条件 | 描述 |
|---|---|---|
| bridge | MCP_HOST_BRIDGE_STATE 已设置 | 主机应用管理 OAuth |
| standalone_oauth | GOOGLE_CLIENT_ID + GOOGLE_CLIENT_SECRET 已设置 | 本地 OAuth(浏览器重定向) |
| manual_token | GOOGLE_ACCESS_TOKEN 已设置 | 静态访问令牌 |
| unconfigured | 无认证环境变量 | 工具返回设置引导信息 |
优先级:bridge > standalone_oauth > manual_token > unconfigured
资料来源:connectors/google-workspace/README.md:Tools (94)
安全审计与监控
成功响应包装
所有工具的成功响应遵循统一的成功结果格式:
{
"ok": true,
"result": { ... }
}
错误响应结构
业务错误和验证错误返回以下结构,确保主机恢复层能够采取行动:
{
"ok": false,
"error": "Human-readable error description",
"action_required": "What user needs to do",
"next_step": "Specific recovery guidance"
}
超时保护
每个工具调用都配置了超时保护:
- Microsoft Graph 请求默认超时 60 秒(可配置,最高 300 秒)
- Gemini API 请求默认超时 180 秒
- 所有超时使用 AbortController 信号管理
部署安全建议
本地开发环境
# 使用 npx 直接运行(自动处理依赖)
npx -y @mindstone/mcp-server-google-workspace
云端部署
| 安全措施 | 实现方式 |
|---|---|
| 令牌刷新控制 | 设置 MICROSOFT_DISABLE_REFRESH=1 |
| 主机管理认证 | 配置 MCP_HOST_BRIDGE_STATE |
| 网络隔离 | 服务间通信使用 TLS |
| 日志脱敏 | 敏感信息不写入日志 |
Claude Desktop 配置示例
{
"mcpServers": {
"GoogleWorkspace": {
"command": "node",
"args": ["/path/to/connectors/google-workspace/dist/index.js"],
"env": {
"GOOGLE_CLIENT_ID": "your-client-id",
"GOOGLE_CLIENT_SECRET": "your-client-secret",
"ACCOUNTS_PATH": "/absolute/path/to/accounts.json",
"CREDENTIALS_PATH": "/absolute/path/to/credentials"
}
}
}
}
相关文档
- Google Workspace 连接器 — Gmail、日历、Drive、Docs、Sheets、Slides 集成
- Microsoft 365 Mail — Outlook 邮件集成
- Microsoft Teams — Teams 消息和频道集成
- Microsoft SharePoint — SharePoint 文件集成
- Slack 连接器 — Slack 工作区集成
参考资料
- TokenProvider 安全实现:packages/mcp-server-microsoft-shared/README.md
- Google Workspace 认证流程:connectors/google-workspace/src/tools/server.ts
- Gmail 输入验证:connectors/google-workspace/src/tools/definitions/gmail.ts
- Slack 错误代码体系:connectors/slack/src/types.ts
- Microsoft 共享认证库:packages/mcp-server-microsoft-shared/README.md
资料来源:packages/mcp-server-microsoft-shared/README.md:安全 notes
Google Workspace 连接器
Google Workspace 连接器是 Mindstone MCP 服务器项目中的一个核心组件,为 MCP (Model Context Protocol) 主机提供与 Google Workspace 服务的集成能力。该连接器支持 Gmail、Calendar、Drive、Docs、Sheets、Slides、Contacts、Tasks 和 Forms 等多项 Go...
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
概述
Google Workspace 连接器是 Mindstone MCP 服务器项目中的一个核心组件,为 MCP (Model Context Protocol) 主机提供与 Google Workspace 服务的集成能力。该连接器支持 Gmail、Calendar、Drive、Docs、Sheets、Slides、Contacts、Tasks 和 Forms 等多项 Google Workspace 服务的操作,使 AI 代理能够代表用户执行各种办公任务。
资料来源:connectors/google-workspace/package.json:4-5
核心特性
| 特性 | 说明 |
|---|---|
| MCP 协议兼容 | 完全遵循 MCP 标准协议,支持 stdio 通信模式 |
| 多服务集成 | 覆盖 Google Workspace 主要办公服务 |
| OAuth 认证 | 通过主机应用管理 OAuth 流程,确保安全认证 |
| 幂等性注解 | 每个工具都包含 destructiveHint、idempotentHint 等注解 |
| 开放世界提示 | 明确标识工具是否影响外部世界(openWorldHint) |
资料来源:connectors/google-workspace/src/tools/definitions/index.ts:1-15
Microsoft 365 连接器套件
Microsoft 365 连接器套件是 mcp-servers 项目中用于与 Microsoft 365 服务集成的 MCP(Model Context Protocol)服务器集合。该套件通过 Microsoft Graph API 提供对 Microsoft 365 核心服务的标准化访问能力。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
概述
Microsoft 365 连接器套件是 mcp-servers 项目中用于与 Microsoft 365 服务集成的 MCP(Model Context Protocol)服务器集合。该套件通过 Microsoft Graph API 提供对 Microsoft 365 核心服务的标准化访问能力。
套件包含多个独立的 MCP 连接器,分别对应不同的 Microsoft 365 服务:
| 连接器 | 功能范围 | 资料来源 |
|---|---|---|
mcp-server-microsoft-mail | Outlook 邮件、日历、联系人管理 | connectors/microsoft-mail/README.md |
mcp-server-microsoft-teams | Microsoft Teams 消息、频道、会议管理 | connectors/microsoft-teams/README.md |
mcp-server-microsoft-sharepoint | SharePoint Online 网站、文档库、列表管理 | connectors/microsoft-sharepoint/README.md |
mcp-server-microsoft-files | OneDrive 个人文件管理 | connectors/microsoft-files/src/files.ts |
mcp-server-microsoft-calendar | 日历事件创建、读取、更新、删除 | connectors/microsoft-calendar/src/calendar.ts |
架构设计
共享认证层
Microsoft 365 连接器套件采用共享认证架构,所有连接器共享同一套 OAuth 2.0 认证体系。核心认证逻辑封装在 mcp-server-microsoft-shared 包中:
graph TD
A[主机应用 Host Application] --> B[mcp-server-microsoft-mail<br/>authenticate_microsoft_account]
B --> C[MS Graph OAuth 2.0<br/>Microsoft Entra ID]
C --> D[credentials/accounts.json<br/>credentials/tokens.json]
D --> E[共享认证文件]
E --> F[mcp-server-microsoft-teams]
E --> G[mcp-server-microsoft-sharepoint]
E --> H[mcp-server-microsoft-files]资料来源:packages/mcp-server-microsoft-shared/README.md
Graph API 客户端封装
所有连接器通过统一的 Graph 客户端与 Microsoft Graph API 交互。共享包提供了标准化的请求处理、错误转换和超时管理机制。
classDiagram
class GraphClient {
+get(endpoint: string)
+post(endpoint: string, body: object)
+patch(endpoint: string, body: object)
+delete(endpoint: string)
+uploadStream(endpoint: string, stream: Readable)
}
class MailConnector {
+send_email()
+read_emails()
+create_draft()
}
class TeamsConnector {
+send_channel_message()
+list_channels()
+create_meeting()
}
class SharePointConnector {
+list_sites()
+upload_file()
+search_sharepoint()
}
GraphClient <-- MailConnector : 使用
GraphClient <-- TeamsConnector : 使用
GraphClient <|-- SharePointConnector : 使用资料来源:packages/mcp-server-microsoft-shared/src/graphClient.ts
认证与配置
必需环境变量
| 变量名 | 描述 | 资料来源 |
|---|---|---|
MS_CLIENT_ID | Microsoft Entra(Azure AD)应用程序客户端 ID | connectors/microsoft-teams/README.md |
MS_CONFIG_DIR | Microsoft 配置目录路径(包含 credentials/ 和 accounts.json) | connectors/microsoft-sharepoint/README.md |
可选环境变量
| 变量名 | 描述 | 默认值 | 资料来源 |
|---|---|---|---|
MS_ACCOUNT_EMAIL | 多账户模式下指定账户邮箱 | accounts.json 中第一个账户 | connectors/microsoft-teams/README.md |
MS_MCP_PACKAGE_ID | 错误响应中的逻辑包标识符 | 服务特定默认值 | connectors/microsoft-sharepoint/README.md |
MICROSOFT_REQUEST_TIMEOUT_MS | Microsoft Graph 请求超时时间(最大 300000ms) | 60000 | connectors/microsoft-teams/README.md |
MICROSOFT_DISABLE_REFRESH | 设为 1 禁用令牌刷新,工具以 auth_required 响应失败关闭 | 未设置 | connectors/microsoft-mail/README.md |
MCP 主机配置示例
{
"mcpServers": {
"Microsoft365Mail": {
"command": "npx",
"args": ["-y", "@mindstone/mcp-server-microsoft-mail"],
"env": {
"MS_CLIENT_ID": "your-entra-application-client-id",
"MS_CONFIG_DIR": "/absolute/path/to/microsoft-config"
}
},
"Microsoft365Teams": {
"command": "npx",
"args": ["-y", "@mindstone/mcp-server-microsoft-teams"],
"env": {
"MS_CLIENT_ID": "your-entra-application-client-id",
"MS_CONFIG_DIR": "/absolute/path/to/microsoft-config"
}
},
"Microsoft365SharePoint": {
"command": "npx",
"args": ["-y", "@mindstone/mcp-server-microsoft-sharepoint"],
"env": {
"MS_CLIENT_ID": "your-entra-application-client-id",
"MS_CONFIG_DIR": "/absolute/path/to/microsoft-config"
}
}
}
}
资料来源:connectors/microsoft-teams/README.md
认证流程
sequenceDiagram
participant User as 用户
participant Host as MCP 主机
participant Mail as mcp-server-microsoft-mail
participant Graph as Microsoft Graph
participant Entra as Microsoft Entra ID
User->>Host: 调用 authenticate_microsoft_account
Host->>Mail: 执行认证工具
Mail->>Entra: 发起 OAuth 授权请求
Entra-->>User: 显示登录页面
User->>Entra: 输入凭据并授权
Entra-->>Mail: 返回授权码/令牌
Mail->>Graph: 使用令牌调用 API
Graph-->>Mail: 验证成功
Mail->>Mail: 保存 credentials/accounts.json
Mail-->>Host: 认证成功Microsoft Mail 连接器
mcp-server-microsoft-mail 是 Microsoft 365 连接器套件的核心组件,负责邮件、日历和联系人的基础认证。
主要工具
| 工具名称 | 功能 | 资料来源 |
|---|---|---|
authenticate_microsoft_account | 发起 Microsoft 365 OAuth 授权流程 | connectors/microsoft-mail/src/mail.ts |
send_email | 发送邮件,支持纯文本和 HTML 格式 | connectors/microsoft-mail/src/mail.ts |
read_emails | 读取邮件,支持分页和过滤器 | connectors/microsoft-mail/src/mail.ts |
create_draft | 创建草稿邮件 | connectors/microsoft-mail/README.md |
安全注意事项
- 令牌文件以
0600权限模式写入主机,由共享库以严格模式读取 - 云端表面默认设置
MICROSOFT_DISABLE_REFRESH=1,避免单次使用刷新令牌的竞争 - 成功响应使用标准
successResult格式;错误响应返回isError:true并包含action_required和next_step字段
资料来源:connectors/microsoft-mail/README.md
Microsoft Teams 连接器
mcp-server-microsoft-teams 提供 Microsoft Teams 消息、频道和会议的管理能力。
主要工具
| 工具类别 | 工具示例 | 功能描述 | 资料来源 |
|---|---|---|---|
| 消息 | send_channel_message, reply_to_message | 发送频道消息和回复 | connectors/microsoft-teams/src/teams.ts |
| 频道 | list_channels, get_channel | 浏览和管理团队频道 | connectors/microsoft-teams/README.md |
| 会议 | create_meeting, get_meeting | 创建和获取 Teams 会议 | connectors/microsoft-teams/README.md |
| 成员 | list_members, add_member | 团队成员管理 | connectors/microsoft-teams/README.md |
与邮件连接器的认证共享
Teams 连接器复用 mcp-server-microsoft-mail 写入的凭据,无需单独认证:
Sign in via@mindstone/mcp-server-microsoft-mail'sauthenticate_microsoft_accountfirst; the Teams tools then reuse the credentials it writes to${MS_CONFIG_DIR}/.
资料来源:connectors/microsoft-teams/README.md
Microsoft SharePoint 连接器
mcp-server-microsoft-sharepoint 提供 SharePoint Online 网站、文档库和列表的管理能力。
主要工具
| 工具类别 | 工具名称 | 功能描述 | 资料来源 |
|---|---|---|---|
| 文档库 | list_library_items, download_library_item, upload_file_to_library | 文档库文件管理 | connectors/microsoft-sharepoint/README.md |
| 共享 | copy_library_item, rename_library_item, create_sharing_link | 文档共享和操作 | connectors/microsoft-sharepoint/README.md |
| 页面 | list_site_pages, read_site_page | SharePoint 页面浏览 | connectors/microsoft-sharepoint/README.md |
| 列表 | list_lists, list_list_items, create_list_item | SharePoint 列表操作 | connectors/microsoft-sharepoint/README.md |
| 搜索 | search_sharepoint | 跨站点搜索内容 | connectors/microsoft-sharepoint/README.md |
增量认证
SharePoint 连接器需要额外的 Sites.Read.All 权限范围:
Sign in via@mindstone/mcp-server-microsoft-mail'sauthenticate_microsoft_accountfirst to negotiate the base session, then call this server'sauthenticate_sharepointto request the additional SharePointSites.Read.Allscope on top.
资料来源:connectors/microsoft-sharepoint/README.md
Microsoft Calendar 连接器
mcp-server-microsoft-calendar 提供日历事件的完整 CRUD 操作能力。
主要工具
| 工具名称 | 功能描述 | 资料来源 |
|---|---|---|
list_events | 列出日历事件,支持日期范围过滤 | connectors/microsoft-calendar/src/calendar.ts |
create_event | 创建日历事件 | connectors/microsoft-calendar/src/calendar.ts |
update_event | 更新现有事件 | connectors/microsoft-calendar/src/calendar.ts |
delete_event | 删除日历事件 | connectors/microsoft-calendar/src/calendar.ts |
Microsoft Files 连接器
mcp-server-microsoft-files 提供 OneDrive 个人云存储的文件管理能力。
主要工具
| 工具名称 | 功能描述 | 资料来源 |
|---|---|---|
list_files | 列出 OneDrive 文件和文件夹 | connectors/microsoft-files/src/files.ts |
upload_file | 上传文件到 OneDrive | connectors/microsoft-files/src/files.ts |
download_file | 下载 OneDrive 文件 | connectors/microsoft-files/src/files.ts |
search_files | 搜索 OneDrive 文件 | connectors/microsoft-files/src/files.ts |
错误处理
错误响应格式
所有 Microsoft 365 连接器采用统一的错误响应格式:
{
"isError": true,
"data": {
"ok": false,
"error": "错误消息描述",
"errorCode": "ERROR_CODE",
"action_required": "需要的操作步骤",
"next_step": "下一步建议"
}
}
认证错误处理
| 错误场景 | 响应代码 | 处理方式 | 资料来源 |
|---|---|---|---|
| 令牌过期 | auth_required | 主机驱动重新认证 | connectors/microsoft-mail/README.md |
| 刷新禁用 | MICROSOFT_DISABLE_REFRESH=1 | 工具以 auth_required 失败关闭 | connectors/microsoft-teams/README.md |
| 令牌文件损坏 | INVALID_TOKEN_FILE | 共享库失败关闭 | connectors/microsoft-mail/README.md |
超时管理
每个工具的 Graph API 调用使用组合超时信号:
Per-tool Graph calls run under a composed caller + cohort timeout signal via.options({signal})plus aPromise.racewrapper for defence-in-depth.
资料来源:connectors/microsoft-sharepoint/README.md
常见故障排除
| 症状 | 可能原因 | 解决方案 | 资料来源 |
|---|---|---|---|
| 连接器启动失败 | 未执行构建 | 运行 npm install && npm run build | connectors/microsoft-teams/README.md |
| 认证错误或空结果 | 配置文件路径错误或凭据无效 | 检查 MS_CONFIG_DIR 和 accounts.json | connectors/microsoft-teams/README.md |
| MCP 主机报告协议问题 | stdio 会话中的标准输出噪音 | 确保没有 console.log 调用(所有日志使用 console.error) | connectors/zendesk/README.md |
| 请求超时 | Graph API 响应缓慢 | 调整 MICROSOFT_REQUEST_TIMEOUT_MS 环境变量 | connectors/microsoft-sharepoint/README.md |
社区相关问题
Google Workspace 输入验证增强
虽然此问题针对 Google Workspace 连接器,但它反映了 Microsoft 365 连接器套件中类似的最佳实践趋势:
行为变更。 为handleComposeWorkspaceEmail添加了之前不存在的 fail-closed 输入验证门。当to/subject/body本应被静默默认为空值时,抛出McpError(InvalidParams)。
Microsoft 365 连接器套件同样遵循严格的输入验证模式,确保 API 调用的参数完整性。
资料来源:社区上下文 #67
本地开发
构建所有连接器
cd <path-to-repo>/connectors/microsoft-mail
npm install
npm run build
cd <path-to-repo>/connectors/microsoft-teams
npm install
npm run build
cd <path-to-repo>/connectors/microsoft-sharepoint
npm install
npm run build
本地运行配置
{
"mcpServers": {
"Microsoft365Mail": {
"command": "node",
"args": ["<path-to-repo>/connectors/microsoft-mail/dist/index.js"],
"env": {
"MS_CLIENT_ID": "your-entra-application-client-id",
"MS_CONFIG_DIR": "/absolute/path/to/microsoft-config"
}
}
}
}
资料来源:connectors/microsoft-teams/README.md
相关连接器
- Microsoft Office 连接器 — Word、Excel、PowerPoint 桌面集成
- Google Workspace 连接器 — Gmail、Google Calendar、Google Drive 集成
- HubSpot 连接器 — CRM、销售和营销自动化
- 共享认证库 — Microsoft 365 认证核心组件
许可证
所有 Microsoft 365 连接器使用 FSL-1.1-MIT — 功能源许可证,版本 1.1,附带 MIT 未来许可证。软件将于 2030 年 4 月 8 日转换为 MIT 许可证。
生产力工具连接器
生产力工具连接器(P roductivity Tools Connectors)是 mindstone/mcp-servers 仓库中的一组 MCP(Model Context Protocol)服务器实现,用于将各种主流办公软件和 SaaS 平台与 AI 助手进行集成。这些连接器通过标准化的 MCP 协议暴露工具接口,使 AI 助手能够直接操控目标系统的数据和功能,无需用...
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
概述
生产力工具连接器(P roductivity Tools Connectors)是 mindstone/mcp-servers 仓库中的一组 MCP(Model Context Protocol)服务器实现,用于将各种主流办公软件和 SaaS 平台与 AI 助手进行集成。这些连接器通过标准化的 MCP 协议暴露工具接口,使 AI 助手能够直接操控目标系统的数据和功能,无需用户手动切换应用程序。
仓库中的连接器覆盖以下主要类别:
| 类别 | 连接器 | 主要功能 |
|---|---|---|
| 办公套件 | Office (Word/Excel/PowerPoint) | 文档读写、表格处理、演示文稿管理 |
| 企业通讯 | Microsoft Teams、Slack | 消息发送、频道管理、会议集成 |
| 邮件系统 | Microsoft Mail、Google Workspace (Gmail) | 邮件撰写、发送、草稿管理 |
| 内容管理 | SharePoint | 文件浏览、列表操作、页面编辑 |
| CRM | HubSpot | 联系人、公司、交易、工单管理 |
| 客服 | Zendesk | 工单查询、宏应用 |
| 分析 | Google Analytics | 报告生成、实时数据 |
| AI/视觉 | ElevenLabs、Napkin AI、NanoBanana | 语音合成、视觉生成、Gemini 图像 |
所有连接器均采用 FSL-1.1-MIT 许可证,功能源代码许可证版本 1.1,附带 MIT 未来许可证,软件将于 2030 年 4 月 8 日转换为 MIT 许可证。
架构设计
MCP 服务器通用模式
每个连接器都是一个独立的 Node.js 包,通过标准输入/输出(stdio)协议与 MCP 主机进行通信。服务器接收 JSON-RPC 格式的请求并返回结构化响应。
graph TD
A["MCP 主机<br/>(Claude Desktop/Cursor等)"] <-->|"JSON-RPC over stdio"| B["MCP 连接器服务器"]
B --> C["第三方 API / SDK"]
B --> D["认证凭据存储"]
C --> E["外部服务<br/>(Office 365/Google等)"]Office 连接器架构
Office 连接器采用特殊的 Sidecar(边车)架构设计,包含两个主要组件:
- MCP 服务器端 (
dist/index.js) — 通过 stdio 与 MCP 主机通信 - Sidecar 进程 — 一个独立的 Node.js 进程,负责与 Office 加载项(Add-in)建立 WebSocket 连接
Sidecar 架构的核心特点包括:
- MCP 服务器通过环境变量
MCP_OFFICE_SIDECAR_STATE指向的 JSON 文件获取 sidecar 的端口和令牌 - Sidecar 进程负责维护与 Office 应用程序的连接状态
- 错误转换层(
errors.ts)将核心错误映射为 Office 品牌化消息
资料来源:connectors/office/src/shared/office/errors.ts:1-50
graph TD
A["MCP 主机"] <-->|"stdio"| B["MCP Office 服务器<br/>dist/index.js"]
B <-->|"port + token<br/>sidecar-state.json"| C["Sidecar 进程"]
C <-->|"WebSocket"| D["Office 加载项"]
D <-->|"Office.js API"| E["Office 应用<br/>(Word/Excel/PowerPoint)"]
F["环境变量"] --> B
G["环境变量"] --> C认证与凭据管理
Microsoft 产品线连接器采用共享的认证体系:
| 环境变量 | 描述 |
|---|---|
MS_CLIENT_ID | Microsoft Entra (Azure AD) 应用程序客户端 ID |
MS_CONFIG_DIR | 包含凭据和账户信息的配置目录路径 |
MS_ACCOUNT_EMAIL | 多账户模式下的指定账户邮箱 |
MS_MCP_PACKAGE_ID | 错误响应中显示的逻辑包 ID |
MICROSOFT_REQUEST_TIMEOUT_MS | 上游 Microsoft Graph 请求超时(最大 300000ms) |
MICROSOFT_DISABLE_REFRESH | 设为 1 禁用令牌刷新,强制主机驱动重新认证 |
资料来源:connectors/microsoft-teams/README.md
云端表面默认设置 MICROSOFT_DISABLE_REFRESH=1,使桌面会话成为唯一的刷新令牌权威,避免单次使用刷新令牌的竞争条件。
工具分类与功能
Office 连接器工具集
Office 连接器提供 53 个工具,分为以下类别:
#### 设置工具(2 个)
| 工具名称 | 功能描述 |
|---|---|
rebel_office_setup | 安装或修复(或卸载)Office 加载项 |
rebel_office_status | 检查 Word、Excel、PowerPoint 的连接状态 |
#### Word 工具(17 个)
| 工具名称 | 功能描述 |
|---|---|
rebel_office_word_read_document | 按段落分页读取活动 Word 文档正文 |
rebel_office_word_get_document_structure | 获取文档的标题/章节大纲 |
rebel_office_word_get_selection | 获取当前选中的文本和位置 |
rebel_office_word_find_text | 搜索文本出现位置并返回周围上下文 |
rebel_office_word_insert_text | 在指定位置插入文本或替换选中内容(破坏性) |
rebel_office_word_replace_text | 在文档中查找并替换文本(破坏性) |
rebel_office_word_format_text | 应用字体、颜色、高亮或对齐格式(破坏性) |
rebel_office_word_insert_table | 插入带表头和行的表格(破坏性) |
rebel_office_word_insert_image | 从文件路径或 base64 数据插入图片(破坏性) |
rebel_office_word_insert_break | 插入分页符或分节符(破坏性) |
rebel_office_word_set_header_footer | 设置页眉或页脚文本和对齐方式(破坏性) |
rebel_office_word_get_properties | 获取文档元数据(标题、作者、计数) |
rebel_office_word_get_comments | 读取评论和回复线程 |
rebel_office_word_add_comment | 在选中文本上添加评论或回复线程(破坏性) |
rebel_office_word_resolve_comment | 按 ID 解决或删除评论(破坏性) |
rebel_office_word_get_tracked_changes | 读取追踪的更改(修订) |
rebel_office_word_accept_reject_changes | 批量或按 ID 接受或拒绝追踪的更改(破坏性) |
资料来源:connectors/office/README.md
#### Excel 工具(22 个)
| 工具名称 | 功能描述 |
|---|---|
rebel_office_excel_read_range | 从 A1 范围或命名范围读取单元格值 |
rebel_office_excel_write_range | 将二维值数组写入范围(破坏性) |
rebel_office_excel_get_worksheets | 列出工作表及其位置和使用范围 |
rebel_office_excel_add_worksheet | 在指定位置添加新工作表(破坏性) |
rebel_office_excel_delete_worksheet | 删除工作表及其所有数据(破坏性) |
rebel_office_excel_read_table | 从命名 Excel 表格读取行 |
rebel_office_excel_create_table | 将范围转换为命名 Excel 表格(破坏性) |
rebel_office_excel_set_formula | 设置单元格公式 |
#### PowerPoint 工具(14 个)
| 工具名称 | 功能描述 |
|---|---|
rebel_office_powerpoint_get_presentation | 获取幻灯片列表和基本信息 |
rebel_office_powerpoint_get_slide | 获取单张幻灯片内容 |
rebel_office_powerpoint_add_slide | 在指定位置添加幻灯片(破坏性) |
rebel_office_powerpoint_delete_slide | 删除幻灯片(破坏性) |
rebel_office_powerpoint_insert_text | 在形状或文本框中插入文本(破坏性) |
rebel_office_powerpoint_add_shape | 添加几何形状(破坏性) |
rebel_office_powerpoint_update_text | 更新形状或布局占位符中的文本(破坏性) |
rebel_office_powerpoint_get_speaker_notes | 读取一张或所有幻灯片的演讲者备注 |
rebel_office_powerpoint_set_speaker_notes | 为幻灯片设置或替换演讲者备注(破坏性) |
rebel_office_powerpoint_get_presentation_properties | 获取演示文稿元数据、尺寸和布局 |
HubSpot 连接器工具集
HubSpot 连接器提供全面的 CRM 功能,包括以下工具类别:
| 类别 | 工具数量 | 主要功能 |
|---|---|---|
| 账户管理 | ✓ | 获取账户信息 |
| 联系人 | ✓ | 列表、获取、创建、更新、删除、搜索 |
| 公司 | ✓ | 列表、获取、创建、更新、删除、搜索 |
| 交易 | ✓ | 完整生命周期管理 |
| 工单 | ✓ | 创建、更新、关闭、评论 |
| 营销表单 | ✓ | 列表、获取、提交处理 |
| 分析报告 | ✓ | 报告生成、数据聚合 |
资料来源:connectors/hubspot/src/tools/definitions.ts:1-30
HubSpot 错误处理采用统一的错误解析机制,根据错误类型返回结构化的错误信息:
// 错误类型映射
if (error.statusCode === 404) {
return {
error: `${context.feature} not found`,
errorCode: 'NOT_FOUND',
suggestion: `Verify the ${context.feature} ID is correct.`
};
}
资料来源:connectors/hubspot/src/tools/marketing-handlers.ts:1-30
Google Workspace 连接器
Google Workspace 连接器的 Gmail 功能支持以下操作:
| 工具名称 | 功能描述 |
|---|---|
handleComposeWorkspaceEmail | 撰写并发送邮件(支持纯文本和 HTML 格式) |
create_draft | 保存新的独立草稿邮件 |
重要变更(v0.1.2):
⚠️ 行为变更 — PR #66 在handleComposeWorkspaceEmail中添加了 fail-closed(故障关闭)输入验证门控,此前该门控不存在。当to/subject/body本应静默默认为空值时,现在会抛出McpError(InvalidParams)。
#### Gmail 工具使用示例
纯文本邮件:
{
"to": ["[email protected]"],
"subject": "会议通知",
"body": "Hi Alice,\\n\\n我们明天3点能见面吗?\\n\\n谢谢,\\nBob"
}
HTML 格式邮件:
{
"to": ["[email protected]"],
"subject": "会议纪要",
"body": "<p>Hi Alice,</p><p>会议要点:</p><ul><li>预算已批准</li><li>发布日期:3月1日</li></ul>",
"is_html": true
}
回复邮件:
{
"to": ["[email protected]"],
"subject": "Re: 会议安排",
"body": "听起来不错!\n\nOn Mon, Jan 6, 2026 at 10:00 AM, Alice <[email protected]> wrote:\n> 明天我们还见面吗?",
"reply_to_message_id": "18c5a2b3d4e5f6g7"
}
资料来源:connectors/google-workspace/src/tools/definitions/gmail.ts
其他专业连接器
#### Zendesk 连接器
| 工具类别 | 工具示例 | 功能 |
|---|---|---|
| 工单管理 | list_zendesk_tickets | 列出或搜索工单 |
get_zendesk_ticket | 获取工单详情 | |
update_zendesk_ticket | 更新工单状态/字段 | |
add_comment_to_ticket | 添加评论 | |
| 宏 | list_zendesk_macros | 列出或搜索宏 |
get_zendesk_macro | 获取宏详情 | |
apply_zendesk_macro | 预览和应用宏到工单 |
资料来源:connectors/zendesk/README.md
#### Google Analytics 连接器
| 工具类别 | 工具名称 | 功能 |
|---|---|---|
| 维度/指标 | ga_get_dimensions_by_category | 按类别获取维度 |
ga_get_metrics_by_category | 按类别获取指标 | |
| 报告 | ga_run_report | 核心报告生成(支持行数安全估计) |
ga_run_pivot_report | 交叉表报告 | |
ga_run_realtime_report | 最近 30 分钟活动 | |
| 管理 | ga_get_property_quotas_snapshot | 剩余配额查询 |
资料来源:connectors/google-analytics/README.md
#### AI/视觉工具连接器
| 连接器 | 工具数量 | 主要功能 |
|---|---|---|
| ElevenLabs | 语音合成 | configure_elevenlabs_api_key、napkin_generate_visual、napkin_check_status、napkin_download_visual |
| Napkin AI | 视觉生成 | 将文本描述转换为专业图表 |
| NanoBanana | Gemini 图像 | 使用 Google Gemini 模型生成图像 |
NanoBanana 特殊配置:
| 环境变量 | 描述 | 默认值 |
|---|---|---|
GEMINI_API_KEY | Google Gemini API 密钥 | 必填 |
MCP_WORKSPACE_PATH | 保存生成图像的工作区路径 | 可选 |
NANO_BANANA_GEMINI_TIMEOUT_MS | Gemini 请求超时 | 180000ms (3分钟) |
NANO_BANANA_BRIDGE_TIMEOUT_MS | 主机桥接请求超时 | 30000ms |
资料来源:connectors/nano-banana/README.md
工具注解系统
MCP 连接器使用标准化的注解系统来标记工具的行为特性:
| 注解名称 | 含义 |
|---|---|
readOnlyHint: true | 工具仅读取数据,不修改状态 |
destructiveHint: true | 工具执行破坏性操作,需要谨慎使用 |
idempotentHint: true | 重复执行相同操作不会产生额外副作用 |
openWorldHint: false | 工具仅访问本地/内部资源 |
requiresAuth: true | 工具需要有效的认证凭据 |
annotations: {
readOnlyHint: true,
destructiveHint: false,
idempotentHint: true,
openWorldHint: false,
}
资料来源:connectors/office/src/index.ts
对于名称包含 delete、remove、destroy 等模式或被列入 FORCE_DESTRUCTIVE_HINT 集合的工具,系统自动强制设置 destructiveHint: true。
错误处理机制
统一错误响应格式
连接器采用统一的错误响应结构,便于 MCP 主机进行错误恢复:
{
error: '错误描述',
errorCode: 'ERROR_CODE',
suggestion: '用户友好的修复建议',
details: { /* 可选的详细信息 */ }
}
Office 错误代码映射
| 核心错误代码 | Office 品牌化消息 |
|---|---|
APP_NOT_CONNECTED | 应用程序未连接,请检查 Office 加载项状态 |
ADDIN_DISCONNECTED | 加载项已断开连接,请重新启动 Office |
COMMAND_TIMEOUT | 操作超时,请重试 |
资料来源:connectors/office/src/shared/office/errors.ts:20-40
HubSpot 错误处理
| 状态码 | 错误代码 | 建议操作 |
|---|---|---|
| 404 | NOT_FOUND | 验证 ID 是否正确 |
| 401/403 | AUTH_ERROR | 检查凭据和权限 |
| 429 | RATE_LIMIT | 等待后重试 |
| 其他 | API_ERROR | 检查请求参数 |
快速开始
安装与构建
# 进入连接器目录
cd connectors/<connector-name>
# 安装依赖
npm install
# 构建项目
npm run build
本地运行
# 直接运行编译后的 JavaScript
node dist/index.js
MCP 主机配置
#### Claude Desktop 配置示例
{
"mcpServers": {
"Microsoft Office": {
"command": "npx",
"args": ["-y", "@mindstone/mcp-server-office"],
"env": {
"MCP_OFFICE_SIDECAR_STATE": ""
}
},
"HubSpot": {
"command": "node",
"args": ["/path/to/repo/connectors/hubspot/dist/index.js"],
"env": {
"HUBSPOT_CONFIG_PATH": "/path/to/config"
}
}
}
}
配置参考
Office 连接器环境变量
| 变量名 | 必需 | 描述 |
|---|---|---|
MCP_OFFICE_SIDECAR_STATE | 是 | sidecar 状态文件(JSON)的绝对路径 |
MCP_OFFICE_SIDECAR_DISABLE | 否 | 禁用 sidecar(用于无头环境) |
HubSpot 连接器环境变量
| 变量名 | 必需 | 描述 |
|---|---|---|
HUBSPOT_CONFIG_PATH | 是 | 包含 accounts.json 的配置目录路径 |
accounts.json 格式:
{
"subdomain": "your-company",
"email": "[email protected]",
"apiKey": "your-private-app-token"
}
Microsoft 产品连接器环境变量
| 变量名 | 必需 | 描述 |
|---|---|---|
MS_CLIENT_ID | 是 | Microsoft Entra 应用程序客户端 ID |
MS_CONFIG_DIR | 是 | 配置目录(包含 credentials/ 和 accounts.json) |
MS_ACCOUNT_EMAIL | 否 | 多账户模式下的指定账户 |
MS_MCP_PACKAGE_ID | 否 | 错误响应中的包标识符 |
MICROSOFT_REQUEST_TIMEOUT_MS | 否 | Graph API 超时(最大 300000ms) |
MICROSOFT_DISABLE_REFRESH | 否 | 设为 1 禁用令牌刷新 |
安全注意事项
| 连接器 | 安全特性 |
|---|---|
| Microsoft Mail | 令牌文件权限设为 0600;云表面默认禁用刷新 |
| Microsoft Teams/SharePoint | 继承 Microsoft Mail 的认证体系 |
| Office | 使用 sidecar 架构隔离敏感操作 |
| HubSpot | 通过 accounts.json 管理 API 密钥 |
所有连接器的成功响应遵循标准 successResult 格式;业务错误返回 isError: true 和 { ok: false, error, action_required, next_step } 有效载荷,便于主机恢复层处理。
故障排查
常见问题与解决方案
| 症状 | 可能原因 | 解决方案 |
|---|---|---|
| 连接器启动失败 | 项目未构建 | 运行 npm install && npm run build |
| 认证错误或空结果 | 配置路径错误或凭据无效 | 检查环境变量和 accounts.json |
| MCP 主机协议问题 | stdio 会话中有标准输出噪音 | 确保无 console.log 调用(所有日志使用 console.error) |
| Office 连接器无法工作 | Office 加载项未安装 | 运行 rebel_office_setup 安装或修复 |
| Google Workspace 邮件发送失败 | 输入验证失败(v0.1.2+) | 确保 to、subject、body 字段非空 |
Office 连接器烟雾测试
MCP_OFFICE_SIDECAR_STATE=/tmp/rebel-office-smoke/sidecar-state.json \
node dist/index.js
发送 listTools MCP 请求到标准输入,应返回完整的工具清单。服务器无需活动的 sidecar 即可响应 listTools 请求。
Zendesk 连接器烟雾测试
在 MCP 主机中运行:
列出我的待处理 Zendesk 工单
如果失败,请确认:
dist/index.js存在(运行npm run build)ZENDESK_CONFIG_PATH指向可读目录accounts.json包含有效的子域、邮箱和 API 令牌
参见
CRM 与客服连接器
MCP Servers 仓库提供了一系列专注于客户关系管理(CRM)和客服系统的连接器,使 AI 代理能够与主流 CRM 平台和客服工具进行交互。这些连接器通过 Model Context Protocol (MCP) 标准接口暴露工具函数,实现对客户数据、工单、线索、交易等业务对象的读取和操作。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
继续阅读本节完整说明和来源证据。
概述
MCP Servers 仓库提供了一系列专注于客户关系管理(CRM)和客服系统的连接器,使 AI 代理能够与主流 CRM 平台和客服工具进行交互。这些连接器通过 Model Context Protocol (MCP) 标准接口暴露工具函数,实现对客户数据、工单、线索、交易等业务对象的读取和操作。
支持的平台:
| 连接器 | 类型 | 主要功能 |
|---|---|---|
| HubSpot | CRM | 账户、联系人、公司、交易、工单、线索、任务、备注、市场营销 |
| Salesforce | CRM | 账户、联系人、潜在客户、机会、自定义对象 |
| Zendesk | 客服 | 工单、用户、宏、附件 |
| Freshdesk | 客服 | 工单、客户、对话、解决方案 |
| Outreach | CRM/Sales | 潜在客户、序列、任务 |
架构概览
CRM 与客服连接器遵循统一的技术架构模式,每个连接器都是一个独立的 MCP 服务器,通过标准输入输出(stdio)进行通信。
graph TD
A[MCP Host<br/>Claude/AI Agent] -->|MCP Protocol| B[CRM/客服连接器]
B --> C[平台 API 客户端]
C --> D[HubSpot API]
C --> E[Salesforce API]
C --> F[Zendesk API]
C --> G[Freshdesk API]
C --> H[Outreach API]
I[配置文件<br/>accounts.json] --> B
J[环境变量] --> BHubSpot 连接器
功能范围
HubSpot 连接器是最全面的 CRM 连接器,提供了对 HubSpot CRM 几乎所有核心对象的访问能力。工具按照功能分为多个类别:
资料来源: connectors/hubspot/src/tools/definitions.ts:1-50
工具分类
| 类别 | 工具数量 | 主要功能 |
|---|---|---|
| 账户工具 | 3 | 账户创建、读取、更新 |
| 联系人工具 | 5 | 联系人 CRUD、搜索、关联 |
| 公司工具 | 4 | 公司管理、域名匹配 |
| 交易工具 | 5 | 交易阶段、管道、关闭操作 |
| 工单工具 | 4 | 工单创建、状态更新、评论 |
| 线索工具 | 3 | 线索识别、转换 |
| 任务工具 | 4 | 任务创建、关联 |
| 备注工具 | 3 | 备注关联、CRM 对象关联 |
| 关联工具 | 6 | 对象间关联管理 |
| 属性工具 | 4 | 自定义属性读取 |
| 所有者工具 | 2 | 用户/所有者查询 |
| 管道工具 | 3 | 交易管道配置 |
| 互动工具 | 5 | 邮件、会议、日志 |
| 产品工具 | 3 | 产品目录管理 |
| 方案行工具 | 3 | 交易方案行项 |
| 表单工具 | 2 | 表单列表和详情 |
| 分析工具 | 2 | 分析数据查询 |
| 营销邮件工具 | 3 | 营销邮件管理 |
| 列表工具 | 2 | 静态列表操作 |
| 知识库工具 | 2 | 知识库文章 |
| 文件工具 | 2 | 文件上传下载 |
| 工作流工具 | 2 | 工作流触发 |
| 对话工具 | 2 | 会话管理 |
工具注解机制
HubSpot 连接器实现了智能的工具注解系统,根据工具的性质自动添加安全提示注解:
function applyCohortHygieneAnnotations(tool: ToolMetadata): ToolMetadata {
const shouldForceDestructiveHint =
DESTRUCTIVE_TOOL_NAME_PATTERN.test(tool.name) ||
FORCE_DESTRUCTIVE_TOOL_SET.has(tool.name);
const openWorldHint = !LOCAL_ONLY_TOOL_SET.has(tool.name);
return {
...tool,
requiresAuth: !AUTH_EXEMPT_TOOL_SET.has(tool.name),
annotations: {
...tool.annotations,
destructiveHint: shouldForceDestructiveHint ? true : tool.annotations?.destructiveHint,
openWorldHint,
},
};
}
资料来源: connectors/hubspot/src/tools/definitions.ts:60-75
输入限制
为防止 API 限流和数据量过大,HubSpot 连接器定义了严格的输入限制:
| 参数类型 | 限制值 | 说明 |
|---|---|---|
limit | 最大 100 | 单次请求返回记录数上限 |
properties | 最大 200 | 单次请求指定属性数上限 |
| 批量操作 | 100 条/批次 | 大批量操作需分批处理 |
资料来源: connectors/hubspot/src/tools/input-limits.ts
错误处理
HubSpot 连接器实现了结构化的错误处理机制,针对不同类型的 API 错误返回标准化的错误响应:
if (error.statusCode === 404) {
return {
error: `${context.feature} not found`,
errorCode: 'NOT_FOUND',
suggestion: `Verify the ${context.feature} ID is correct.`
};
}
资料来源: connectors/hubspot/src/tools/marketing-handlers.ts:50-60
Zendesk 连接器
功能范围
Zendesk 连接器专注于客服工单管理,提供了完整的工单生命周期管理能力。
核心工具
| 工具名称 | 功能描述 | 操作类型 |
|---|---|---|
list_zendesk_tickets | 列出工单,支持状态和分页过滤 | 只读 |
get_zendesk_ticket | 获取单个工单详情 | 只读 |
create_zendesk_ticket | 创建新工单 | 写入 |
update_zendesk_ticket | 更新工单状态、优先级等 | 写入 |
list_zendesk_users | 列出终端用户和支持人员 | 只读 |
list_zendesk_macros | 列出或搜索宏 | 只读 |
get_zendesk_macro | 获取宏详情 | 只读 |
apply_zendesk_macro | 预览并应用宏到工单 | 写入 |
配置要求
Zendesk 连接器需要通过 ZENDESK_CONFIG_PATH 环境变量指定配置目录,配置目录中需包含 accounts.json 文件:
{
"subdomain": "your-company",
"email": "[email protected]",
"api_token": "your-api-token"
}
资料来源: connectors/zendesk/README.md
常见故障排查
| 症状 | 可能原因 | 解决方案 |
|---|---|---|
| 连接器启动失败 | 尚未构建 | 运行 npm install && npm run build |
| 认证错误或空结果 | 配置路径错误或凭据无效 | 检查 ZENDESK_CONFIG_PATH 和 accounts.json |
| MCP 协议问题 | stdio 会话中有 stdout 噪声 | 确保使用 console.error 进行日志输出 |
Freshdesk 连接器
功能范围
Freshdesk 连接器提供了工单管理、客户服务和知识库访问能力。
核心工具
| 类别 | 工具名称 | 功能描述 |
|---|---|---|
| 工单 | freshdesk_create_ticket | 创建新客服工单 |
| 工单 | freshdesk_list_tickets | 列出工单,支持多种过滤条件 |
| 工单 | freshdesk_get_ticket | 获取工单详情 |
| 工单 | freshdesk_update_ticket | 更新工单状态或属性 |
| 工单 | freshdesk_delete_ticket | 删除工单 |
| 对话 | freshdesk_create_reply | 在工单下创建回复 |
| 对话 | freshdesk_get_conversation | 获取工单对话历史 |
| 解决方案 | freshdesk_list_solutions | 列出知识库文章 |
| 解决方案 | freshdesk_get_solution | 获取解决方案详情 |
| 客户 | freshdesk_get_contact | 获取客户/联系人信息 |
资料来源: connectors/freshdesk/src/tools/tickets.ts
数据流示意
graph LR
A[MCP Host] -->|create_ticket| B[Freshdesk Connector]
B --> C[Freshdesk REST API]
C --> D{工单创建成功?}
D -->|是| E[返回工单 ID]
D -->|否| F[返回错误信息]Outreach 连接器
功能范围
Outreach 连接器专注于销售外展流程,支持潜在客户管理和序列自动化。
核心工具
| 工具名称 | 功能描述 | 操作类型 |
|---|---|---|
list_outreach_prospects | 列出潜在客户 | 只读 |
get_outreach_prospect | 获取潜在客户详情 | 只读 |
create_outreach_prospect | 创建新潜在客户 | 写入 |
update_outreach_prospect | 更新潜在客户信息 | 写入 |
list_outreach_sequences | 列出外展序列 | 只读 |
enroll_outreach_sequence | 将潜在客户加入序列 | 写入 |
资料来源: connectors/outreach/src/tools/prospects.ts
通用配置模式
配置文件结构
CRM 和客服连接器普遍采用基于文件的配置模式:
config-directory/
├── accounts.json # 账户凭据配置
└── credentials/ # 敏感凭据存储
└── *.token.json # OAuth 令牌文件
账户配置文件格式
{
"subdomain": "平台子域",
"email": "管理员邮箱",
"api_token": "API 令牌"
}
环境变量配置
| 环境变量 | 连接器 | 说明 |
|---|---|---|
ZENDESK_CONFIG_PATH | Zendesk | 配置文件目录路径 |
MS_CONFIG_DIR | Microsoft 365 | Microsoft 配置目录 |
HUBSPOT_ACCESS_TOKEN | HubSpot | HubSpot 私有应用访问令牌 |
安全最佳实践
令牌文件权限
所有包含敏感凭据的文件必须设置严格的文件权限:
- 令牌文件权限:
0600(仅所有者可读写) - 配置目录权限:
0700(仅所有者可访问)
云端部署注意事项
在云端部署场景下,建议禁用连接器自身的令牌刷新能力:
MICROSOFT_DISABLE_REFRESH=1 # Microsoft 连接器
这样可以确保桌面会话是唯一的刷新令牌权威,避免单次使用刷新令牌的竞争条件。
资料来源: connectors/microsoft-mail/README.md
输入验证与故障关闭
根据社区反馈(Issue #67),部分连接器已实现故障关闭(fail-closed)的输入验证机制。这确保了无效输入不会被静默接受并使用默认值,而是会抛出明确的 McpError(InvalidParams) 错误。
这种验证机制应用于:
- 必填字段的空值检查
- 必填参数的默认值检测
- 数据类型验证
性能优化建议
避免 API 限流
- 合理设置分页大小:单次请求量不超过平台限制
- 使用批量工具:需要处理多条记录时优先使用批量接口
- 添加请求间隔:高频操作间添加适当延迟
数据量控制
| 连接器 | 单次查询上限 | 建议 |
|---|---|---|
| HubSpot | 100 条/页 | 使用游标分页遍历大结果集 |
| Zendesk | 100 条/页 | 结合时间过滤减少数据量 |
| Freshdesk | 30 条/页 | 使用服务端过滤 |
故障排查指南
认证失败
- 验证
accounts.json中的凭据是否正确 - 检查 API 令牌是否有效且未过期
- 确认配置文件路径正确设置
工具执行失败
- 检查工具名称拼写是否正确
- 验证参数类型和必填字段
- 查看连接器日志确认错误详情
数据不同步
- 确认目标平台的数据更新状态
- 检查 Webhook 是否正常工作
- 验证 OAuth 刷新令牌有效性
相关连接器
- Google Workspace 连接器 — 邮件和日历集成
- Microsoft 365 Mail 连接器 — Outlook 邮件操作
- Office 连接器 — 文档处理能力
参考资料
- HubSpot API 文档:https://developers.hubspot.com/docs/api/overview
- Zendesk API 文档:https://developer.zendesk.com/api-reference/
- Freshdesk API 文档:https://developers.freshdesk.com/api/
- Outreach API 文档:https://api.outreach.io/api/v2/
来源:https://github.com/mindstone/mcp-servers / 项目说明书
失败模式与踩坑日记
保留 Doramagic 在发现、验证和编译中沉淀的项目专属风险,不把社区讨论只当作装饰信息。
Developers may expose sensitive permissions or credentials: ci(pages): release commits to main bypass the catalogue-drift gate
可能影响授权、密钥配置或安全边界。
用户照着仓库名搜索包或照着包名找仓库时容易走错入口。
Developers may fail before the first successful local run: Publish approval: google-workspace v0.1.2
Pitfall Log / 踩坑日志
项目:mindstone/mcp-servers
摘要:发现 13 个潜在踩坑项,其中 2 个为 high/blocking;最高优先级:安全/权限坑 - 失败模式:security_permissions: ci(pages): release commits to main bypass the catalogue-drift gate。
1. 安全/权限坑 · 失败模式:security_permissions: ci(pages): release commits to main bypass the catalogue-drift gate
- 严重度:high
- 证据强度:source_linked
- 发现:Developers should check this security_permissions risk before relying on the project: ci(pages): release commits to main bypass the catalogue-drift gate
- 对用户的影响:Developers may expose sensitive permissions or credentials: ci(pages): release commits to main bypass the catalogue-drift gate
- 建议检查:Before packaging this project, run the relevant install/config/quickstart check for: ci(pages): release commits to main bypass the catalogue-drift gate. Context: Observed when using node
- 防护动作:Do not recommend enabling privileged or credential-bearing paths until the source-backed risk is reviewed: https://github.com/mindstone/mcp-servers/issues/55
- 证据:failure_mode_cluster:github_issue | fmev_666f4299f397eb35a75616d6d577d2f2 | https://github.com/mindstone/mcp-servers/issues/55 | ci(pages): release commits to main bypass the catalogue-drift gate
2. 安全/权限坑 · 来源证据:Publish approval: google-workspace v0.1.2
- 严重度:high
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Publish approval: google-workspace v0.1.2
- 对用户的影响:可能影响授权、密钥配置或安全边界。
- 建议检查:来源问题仍为 open,Pack Agent 需要复核是否仍影响当前版本。
- 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
- 证据:community_evidence:github | cevd_cda254fc0c504be3b3868bae771fc8e6 | https://github.com/mindstone/mcp-servers/issues/67 | 来源讨论提到 node 相关条件,需在安装/试用前复核。
3. 身份坑 · 仓库名和安装名不一致
- 严重度:medium
- 证据强度:runtime_trace
- 发现:仓库名
mcp-servers与安装入口@mindstone/mcp-server-google-workspace不完全一致。 - 对用户的影响:用户照着仓库名搜索包或照着包名找仓库时容易走错入口。
- 建议检查:在 npm/PyPI/GitHub 上确认包名映射和官方 README 说明。
- 复现命令:
npx @mindstone/mcp-server-google-workspace - 防护动作:页面必须同时展示 repo 名和真实安装入口,避免用户搜索错包。
- 证据:identity.distribution | mcp_registry:io.github.mindstone/mcp-server-google-workspace:0.1.2 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.mindstone%2Fmcp-server-google-workspace/versions/0.1.2 | repo=mcp-servers; install=@mindstone/mcp-server-google-workspace
4. 安装坑 · 失败模式:installation: Publish approval: google-workspace v0.1.2
- 严重度:medium
- 证据强度:source_linked
- 发现:Developers should check this installation risk before relying on the project: Publish approval: google-workspace v0.1.2
- 对用户的影响:Developers may fail before the first successful local run: Publish approval: google-workspace v0.1.2
- 建议检查:Before packaging this project, run the relevant install/config/quickstart check for: Publish approval: google-workspace v0.1.2. Context: Observed when using node
- 防护动作:State this as source-backed community evidence, not as Doramagic reproduction.
- 证据:failure_mode_cluster:github_issue | fmev_ceadd6904b4ab0cf84ff4f94f1151954 | https://github.com/mindstone/mcp-servers/issues/67 | Publish approval: google-workspace v0.1.2
5. 安装坑 · 失败模式:installation: Publish approval: hubspot v0.2.0
- 严重度:medium
- 证据强度:source_linked
- 发现:Developers should check this installation risk before relying on the project: Publish approval: hubspot v0.2.0
- 对用户的影响:Developers may fail before the first successful local run: Publish approval: hubspot v0.2.0
- 建议检查:Before packaging this project, run the relevant install/config/quickstart check for: Publish approval: hubspot v0.2.0. Context: Observed when using node
- 防护动作:State this as source-backed community evidence, not as Doramagic reproduction.
- 证据:failure_mode_cluster:github_issue | fmev_340ebf69d011beb0ee55df9cc658fe46 | https://github.com/mindstone/mcp-servers/issues/63 | Publish approval: hubspot v0.2.0
6. 能力坑 · 能力判断依赖假设
- 严重度:medium
- 证据强度:source_linked
- 发现:README/documentation is current enough for a first validation pass.
- 对用户的影响:假设不成立时,用户拿不到承诺的能力。
- 建议检查:将假设转成下游验证清单。
- 防护动作:假设必须转成验证项;没有验证结果前不能写成事实。
- 证据:capability.assumptions | mcp_registry:io.github.mindstone/mcp-server-google-workspace:0.1.2 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.mindstone%2Fmcp-server-google-workspace/versions/0.1.2 | README/documentation is current enough for a first validation pass.
7. 维护坑 · 维护活跃度未知
- 严重度:medium
- 证据强度:source_linked
- 发现:未记录 last_activity_observed。
- 对用户的影响:新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。
- 建议检查:补 GitHub 最近 commit、release、issue/PR 响应信号。
- 防护动作:维护活跃度未知时,推荐强度不能标为高信任。
- 证据:evidence.maintainer_signals | mcp_registry:io.github.mindstone/mcp-server-google-workspace:0.1.2 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.mindstone%2Fmcp-server-google-workspace/versions/0.1.2 | last_activity_observed missing
8. 安全/权限坑 · 下游验证发现风险项
- 严重度:medium
- 证据强度:source_linked
- 发现:no_demo
- 对用户的影响:下游已经要求复核,不能在页面中弱化。
- 建议检查:进入安全/权限治理复核队列。
- 防护动作:下游风险存在时必须保持 review/recommendation 降级。
- 证据:downstream_validation.risk_items | mcp_registry:io.github.mindstone/mcp-server-google-workspace:0.1.2 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.mindstone%2Fmcp-server-google-workspace/versions/0.1.2 | no_demo; severity=medium
9. 安全/权限坑 · 存在评分风险
- 严重度:medium
- 证据强度:source_linked
- 发现:no_demo
- 对用户的影响:风险会影响是否适合普通用户安装。
- 建议检查:把风险写入边界卡,并确认是否需要人工复核。
- 防护动作:评分风险必须进入边界卡,不能只作为内部分数。
- 证据:risks.scoring_risks | mcp_registry:io.github.mindstone/mcp-server-google-workspace:0.1.2 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.mindstone%2Fmcp-server-google-workspace/versions/0.1.2 | no_demo; severity=medium
10. 安全/权限坑 · 来源证据:Publish approval: hubspot v0.2.0
- 严重度:medium
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:Publish approval: hubspot v0.2.0
- 对用户的影响:可能影响授权、密钥配置或安全边界。
- 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
- 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
- 证据:community_evidence:github | cevd_31605309e751483ebe4289c7e27a9335 | https://github.com/mindstone/mcp-servers/issues/63 | 来源讨论提到 node 相关条件,需在安装/试用前复核。
11. 安全/权限坑 · 来源证据:ci(pages): release commits to main bypass the catalogue-drift gate
- 严重度:medium
- 证据强度:source_linked
- 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:ci(pages): release commits to main bypass the catalogue-drift gate
- 对用户的影响:可能影响授权、密钥配置或安全边界。
- 建议检查:来源问题仍为 open,Pack Agent 需要复核是否仍影响当前版本。
- 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
- 证据:community_evidence:github | cevd_67be881bdf36428099e1bc23b99554c8 | https://github.com/mindstone/mcp-servers/issues/55 | 来源讨论提到 node 相关条件,需在安装/试用前复核。
12. 维护坑 · issue/PR 响应质量未知
- 严重度:low
- 证据强度:source_linked
- 发现:issue_or_pr_quality=unknown。
- 对用户的影响:用户无法判断遇到问题后是否有人维护。
- 建议检查:抽样最近 issue/PR,判断是否长期无人处理。
- 防护动作:issue/PR 响应未知时,必须提示维护风险。
- 证据:evidence.maintainer_signals | mcp_registry:io.github.mindstone/mcp-server-google-workspace:0.1.2 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.mindstone%2Fmcp-server-google-workspace/versions/0.1.2 | issue_or_pr_quality=unknown
13. 维护坑 · 发布节奏不明确
- 严重度:low
- 证据强度:source_linked
- 发现:release_recency=unknown。
- 对用户的影响:安装命令和文档可能落后于代码,用户踩坑概率升高。
- 建议检查:确认最近 release/tag 和 README 安装命令是否一致。
- 防护动作:发布节奏未知或过期时,安装说明必须标注可能漂移。
- 证据:evidence.maintainer_signals | mcp_registry:io.github.mindstone/mcp-server-google-workspace:0.1.2 | https://registry.modelcontextprotocol.io/v0.1/servers/io.github.mindstone%2Fmcp-server-google-workspace/versions/0.1.2 | release_recency=unknown
来源:Doramagic 发现、验证与编译记录