使用说明
Box AI MCP服务器
一种模型上下文协议(MCP)服务器,使AI助手能够使用Box AI从Box文件中提取元数据。该服务器提供了使用Box进行身份验证、从文档中提取结构化和非结构化元数据以及检索文件信息的工具。
⚠️ 免责声明: 这是一个独立的开源项目,不隶属于、不受Box,股份有限公司认可或与之关联。这是一项有趣的个人项目,旨在进行教育和实验。使用风险自负。
特性
- 🔐 JWT身份验证 -使用BoxJWT进行安全的服务器到服务器身份验证
- 🤖 Box AI集成 -利用Box AI从文档中提取元数据
- 📊 结构化元数据提取 -使用预定义的字段定义或模板提取数据
- 🎯 自由格式元数据提取 -使用自然语言提示提取任何元数据
- 📁 文件信息 -获取有关Box文件的详细信息
- 🔄 许可证管理 -自动跟踪和刷新令牌到期时间
先决条件
- Node.js 18+(支持ES模块)
- Box开发者帐户
- 配置了JWT身份验证的Box应用程序
安装
-
克隆或下载此存储库
-
安装依赖项:
npm install
- 确保您的Box开发人员控制台中有以下内容:
- 客户端ID
- 客户端密码(企业ID)
- 私钥(来自生成的密钥对)
- 公钥ID(儿童)
- 主题ID(用户ID或企业ID)
配置
设置Box应用程序
- 首选 Box开发人员控制台
- 创建新的“自定义应用程序”
- 选择“服务器身份验证(使用JWT)”
- 生成公钥/私钥对
- 下载配置文件(包含您的凭据)
- 在您的Box企业中授权应用程序
Claude桌面配置
将服务器添加到Claude Desktop MCP配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"box-ai-server": {
"command": "/opt/homebrew/bin/node",
"args": ["/path/to/MCP_DEMO/mcp.js"],
"env": {
"NODE_OPTIONS": "--no-deprecation"
}
}
}
}
窗户: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"box-ai-server": {
"command": "node",
"args": ["C:\\path\\to\\MCP_DEMO\\mcp.js"]
}
}
}
更新配置后,重新启动Claude Desktop。
用法
认证
在使用任何Box API工具之前,您需要使用 box_authenticate 工具:
所需参数:
clientId-您的Box应用程序客户端IDclientSecret-您的Box应用程序客户端机密(企业ID)privateKey-PEM格式的私钥(来自Box Developer Console)publicKeyId-Box开发者控制台中的公钥ID(kid)subjectType-要么"user"或"enterprise"subjectId-要验证的用户ID或企业ID
例子:
Authenticate with Box API using:
- Client ID: abc123...
- Client Secret: xyz789...
- Private Key: -----BEGIN RSA PRIVATE KEY-----...
- Public Key ID: abc123def456
- Subject Type: enterprise
- Subject ID: 12345678
备选方案:环境变量
您还可以直接通过环境变量设置Box访问令牌:
export BOX_ACCESS_TOKEN="your-access-token-here"
可用工具
1. box_authenticate
使用JWT身份验证使用Box API进行身份验证。将访问令牌存储在内存中,供其他工具使用。
参数:
clientId(string)-Box应用程序客户端IDclientSecret(string)-Box应用程序客户端机密privateKey(string)-PEM格式的私钥publicKeyId(string)-公钥IDsubjectType(“用户”|“企业”)-主体类型subjectId(string)-用户ID或企业ID
2. box_set_access_token
如果您已经有来自其他来源的Box访问令牌,请手动设置一个Box访问令牌。
参数:
accessToken(string)-盒子访问令牌expiresIn(数字,可选)-令牌过期时间(秒)
3. box_get_auth_status
检查当前身份验证状态和令牌信息。
参数: 无
4. box_extract_metadata
使用带有自然语言提示的Box AI从Box文件中提取元数据(自由提取)。
参数:
fileId(string)-Box文件IDprompt(string)-描述提取内容的自然语言提示format(“json”|“xml”|“text”,可选)-输出格式(默认:“json”)
例子:
Extract metadata from file "123456789" with prompt:
"Extract the invoice number, date, total amount, and vendor name"
5. box_extract_structured_metadata
使用预定义的字段定义或元数据模板提取结构化元数据。
参数:
fileId(string)-Box文件IDfields(array,可选)-字段定义数组:name(string)-字段名称description(string)-提取内容的描述type(“string”|“number”|“date”|“boolean”,可选)-数据类型
templateId(字符串,可选)-元数据模板ID(如果使用模板)
例子:
{
"fileId": "123456789",
"fields": [
{
"name": "invoiceNumber",
"description": "The invoice number",
"type": "string"
},
{
"name": "totalAmount",
"description": "The total amount due",
"type": "number"
}
]
}
6. box_get_file_info
获取有关Box文件的基本信息,包括名称、大小、类型和元数据。
参数:
fileId(string)-Box文件ID
例子
示例1:提取发票元数据
1. Authenticate with Box API
2. Use box_extract_metadata with:
- File ID: 123456789
- Prompt: "Extract invoice number, date, vendor, line items with descriptions and amounts, and total"
- Format: json
示例2:提取结构化合同数据
1. Authenticate with Box API
2. Use box_extract_structured_metadata with:
- File ID: 987654321
- Fields:
- name: "contractDate", description: "Contract execution date", type: "date"
- name: "parties", description: "Names of all parties to the contract", type: "string"
- name: "expirationDate", description: "Contract expiration date", type: "date"
- name: "isActive", description: "Whether the contract is currently active", type: "boolean"
示例3:获取文件信息
1. Authenticate with Box API
2. Use box_get_file_info with File ID: 123456789
故障排除
服务器未显示工具
- 确保
inputSchema格式与预期格式匹配(纯对象,不是z.object()) - 检查Node.js版本是否为18+
- 验证Claude Desktop配置中的文件路径是否正确
- 配置更改后重新启动Claude Desktop
身份验证错误
- 验证您的私钥是否采用正确的PEM格式(包括
-----BEGIN和-----END线路) - 确保您的Box应用程序在您的企业中获得授权
- 检查主题ID是否与有效的用户或企业ID匹配
- 验证公钥ID(kid)是否与Box Developer Console中的ID匹配
令牌到期
- 代币会被自动跟踪,并在其生命周期结束后过期
- 使用
box_get_auth_status检查令牌过期 - 使用重新验证
box_authenticate令牌到期时
API错误
- 确保您在Box中对正在访问的文件具有适当的权限
- 验证文件ID是否正确
- 检查您的Box帐户是否启用了Box AI功能
项目结构
MCP_DEMO/
├── mcp.js # Main MCP server implementation
├── package.json # Dependencies and scripts
├── package-lock.json # Locked dependency versions
└── README.md # This file
依赖项
@modelcontextprotocol/sdk(^1.16)-用于服务器实现的MCP SDKzod(^3.25.76)-工具输入的模式验证- 内置Node.js
crypto-JWT签名
许可证
国际协调委员会
贡献
这是一个个人项目,但请随意分叉和修改以供自己使用!
致谢
注: 本项目不隶属于Box,股份有限公司Box,Box AI,相关商标为其各自所有者的财产。