唤醒MCP
连接到的MCP(模型上下文协议)服务器 Arobid后端,允许AI工具和编辑器以结构化的方式调用后端API。
概述
Arobid MCP提供了一个标准化的接口,用于通过模型上下文协议与Arobid后端服务进行交互。这使得AI助手和开发工具能够与Arobid的后端功能无缝集成。
服务器当前提供 10+综合工具 涵盖帐户管理、身份验证、密码重置工作流、参展商发现和活动搜索。所有工具都包括强大的输入验证、错误处理和详细的日志记录。
特性
账户管理
- ✅ 创建个人帐户 -通过Arobid后端注册新用户帐户
- ✅ 验证用户 -使用发送到电子邮件的OTP代码验证用户帐户
认证
- ✅ 用户登录 -登录以在上一个OTP过期时检索新的OTP
- ✅ 重新发送OTP -验证失败或OTP过期时,将OTP代码重新发送到用户电子邮件
密码重置和更改密码
- ✅ 检查重置密码 -通过向用户电子邮件发送重置链接/OTP来启动密码重置(忘记密码)或更改密码(更新现有密码)过程。支持具有相同工作流的两种场景。
- ✅ 确认重置密码 -检查重置密码后,使用发送到电子邮件的OTP确认密码重置/更改ResetPassword
活动与展览
- ✅ 搜索事件 -在Arobid平台上搜索活跃的展览/活动。自动抓取所有页面以检索完整结果。支持过滤、分页、排序和本地化。
- ✅ 在活动中搜索企业 -在一次活动中检查参展商。
- ✅ 在多个事件中搜索企业 -一次在多个活动中批量搜索参展商。
- ✅ 查找商务活动参与 -通过将事件发现与批量参展商查找相结合,发现特定企业加入了哪些事件。
即将推出
- 🔄 配置文件管理工具
- 🔄 其他用户管理功能
技术栈
- 语言:TypeScript
- 运行时:Node.js(v18+)
- 框架:MCP SDK(
@modelcontextprotocol/sdk) - 包管理器:npm
先决条件
- Node.js 18.0.0或更高版本
- npm(或者pnpm,如果你愿意的话)
安装
- 克隆或导航到此存储库:
cd arobid-mcp- 安装依赖项:
npm install- 设置环境变量(请参见 配置 在......下面
配置
创建一个 .env 项目根目录中的文件,包含以下变量:
# Required: Arobid Backend base URL
AROBID_BACKEND_URL=https://api.arobid.com
# Optional: API key for authentication (if required by backend)
AROBID_API_KEY=your-api-key-here
# Optional: Tenant ID (if multi-tenant support is needed)
AROBID_TENANT_ID=your-tenant-id环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
AROBID_BACKEND_URL | 是 | Arobid后端API的基本URL |
AROBID_API_KEY | 没有用于身份验证请求的 | neneneba API密钥(如果需要) |
AROBID_TENANT_ID | 否 | 多租户设置的租户标识符 |
发展
构建
将TypeScript编译为JavaScript:
npm run build跑
启动MCP服务器(stdio传输):
npm start发展模式
注意更改并自动重建:
npm run dev类型检查
在不构建的情况下检查TypeScript类型:
npm run type-check代码格式化
使用Prettier格式化代码:
# Format all files
npm run format
# Check formatting without making changes
npm run format:check项目结构
arobid-mcp/
├── src/
│ ├── index.ts # MCP server entrypoint (stdio transport)
│ ├── client/
│ │ └── arobidClient.ts # HTTP client for Arobid Backend
│ ├── utils/
│ │ └── validation.ts # Shared validation utilities (email regex, etc.)
│ ├── server/
│ │ ├── registerTools.ts # Tool registration orchestrator
│ │ └── tools/
│ │ ├── registerCreatePersonalAccount.ts
│ │ ├── registerUserLogin.ts
│ │ ├── registerVerifyUser.ts
│ │ ├── registerResendOtp.ts
│ │ ├── registerCheckResetPassword.ts
│ │ ├── registerConfirmResetPassword.ts
│ │ ├── registerSearchEvents.ts
│ │ ├── registerSearchBusinessesInEvent.ts
│ │ └── registerSearchBusinessesInMultipleEvents.ts
│ └── tools/
│ ├── createPersonalAccount.ts # Create account tool
│ ├── userLogin.ts # User login tool
│ ├── verifyUser.ts # Verify user tool
│ ├── resendOtp.ts # Resend OTP tool
│ ├── checkResetPassword.ts # Check/reset password tool
│ ├── confirmResetPassword.ts # Confirm reset password tool
│ ├── searchEvents.ts # Search events/exhibitions tool
│ ├── searchBusinessesInEvent.ts
│ └── searchBusinessesInMultipleEvents.ts
├── api/
│ └── server.ts # Vercel API route handler (HTTP transport)
├── dist/ # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
└── README.md可用工具
工作流
帐户创建和验证工作流程
- 使用
createPersonalAccount注册新帐户 - 检查电子邮件中的OTP代码
- 使用
verifyUser使用OTP完成账户验证 - 如果OTP过期,请使用
resendOtp或userLogin买一个新的
密码重置和更改密码工作流
用例1:密码重置(忘记密码)
- 使用
checkResetPassword使用用户电子邮件启动密码重置 - 检查电子邮件中的OTP代码
- 使用
confirmResetPassword使用电子邮件、新密码和OTP完成重置
用例2:更改密码(更新现有密码)
- 使用
checkResetPassword使用用户电子邮件启动密码更改 - 检查电子邮件中的OTP代码
- 使用
confirmResetPassword使用电子邮件、新密码和OTP完成更改
这两种情况都遵循相同的工作流程——该工具自动处理重置和更改密码请求。
OTP恢复工作流程
- 如果验证过程中OTP过期:使用
resendOtp获取新的OTP - 替代方案:使用
userLogin登录并接收新的OTP
______________________________________________________________________
createPersonalAccount
在Arobid后端创建新的个人用户帐户。
参数:
email(字符串,必填):用户电子邮件地址password(字符串,必填):用户密码(6-20个字符,有复杂度要求)firstName(string,必填):用户名lastName(string,必填):用户名title(string,必填):用户名(Mr或Mrs)phone(字符串,必填):用户电话号码(越南语或国际格式)national(字符串,必填):用户国籍代码(2个字母大写的国家代码)
例子:
{
"email": "user@example.com",
"password": "SecurePass123!",
"firstName": "John",
"lastName": "Doe",
"title": "Mr",
"phone": "+841231231123",
"national": "VN"
}userLogin
在Arobid后端执行用户登录。这可用于在前一个OTP过期时检索新的OTP。
参数:
email(字符串,必填):用户电子邮件地址password(string,必填):用户密码
例子:
{
"email": "user@example.com",
"password": "SecurePass123!"
}备注:成功登录后,新的OTP将发送到用户的电子邮件中。当您需要在上一个OTP过期后检索新的OTP时,请使用此工具。
resendOtp
在Arobid后端将OTP代码重新发送到用户电子邮件。当验证用户因OTP过期或无效而失败时,请使用此选项。
参数:
userEmail(字符串,必填):用户电子邮件地址
例子:
{
"userEmail": "user@example.com"
}备注:调用此工具后,新的OTP将发送到用户的电子邮件中。当验证失败或OTP已过期时使用此工具,而不是使用 userLogin.
checkResetPassword
在Arobid后端启动密码重置或更改密码过程。这将向用户的电子邮件发送重置链接或OTP。
使用案例:
- 密码重置:当用户忘记密码并需要重置密码时
- 更改密码:当用户出于安全原因想要更改现有密码时
参数:
email(字符串,必填):用户电子邮件地址
例子:
{
"email": "user@example.com"
}备注:调用此工具后,密码重置链接或OTP将发送到用户的电子邮件中。在以下两种情况下都可以使用此工具:(1)当用户需要重置忘记的密码时,或(2)当用户想要更改现有密码时。该工具自动处理这两种情况。收到OTP后,使用 confirmResetPassword 以完成该过程。
confirmResetPassword
使用发送给用户电子邮件的OTP在Arobid后端确认密码重置。使用此后 checkResetPassword 成功。
参数:
email(字符串,必填):用户电子邮件地址password(字符串,必填):新密码(6-20个字符,有复杂性要求)otp(字符串,必填):一次性密码(OTP)代码-恰好6位数字
例子:
{
"email": "user@example.com",
"password": "NewSecurePass123!",
"otp": "123456"
}备注:使用此工具后 checkResetPassword 成功。OTP代码将在以下情况下发送到用户的电子邮件中 checkResetPassword 被称为。密码必须满足复杂性要求(小写、大写、数字和特殊字符)。
verifyUser
使用发送到用户电子邮件的OTP代码验证Arobid后端中的用户帐户。
参数:
userEmail(字符串,必填):用户电子邮件地址otp(字符串,必填):一次性密码(OTP)代码-恰好6位数字
例子:
{
"userEmail": "user@example.com",
"otp": "123456"
}备注:本示例中的OTP仅用于演示。在生产中,使用发送到用户电子邮件的实际OTP代码。如果OTP已过期或验证失败,请使用 resendOtp 获取新的OTP代码,或使用 userLogin 通过登录检索新的。
searchEvents
在Arobid平台上搜索活跃的展览/活动。此工具在返回之前自动抓取所有可用页面以检索完整结果,确保您在单个响应中获得所有匹配的事件。
主要特点:
- 自动分页:自动加载所有页面,直到找不到更多事件
- 大默认页面大小:默认情况下每页使用1000个项目,以实现高效的数据检索
- 完整结果:在单个响应中返回所有匹配的事件,无需手动分页
参数:
search(字符串,可选):用于过滤事件的搜索词(例如,“foodex”)pageSize(数字,可选):每页结果数(默认值:1000)pageIndex(数字,可选):起始页索引(默认值:1)sortField(字符串,可选):排序依据的字段(例如“startTime”)asc(boolean,可选):按升序排序(默认值:false)currencyId(数字,可选):定价货币ID(默认值:1)language(字符串,可选):本地化语言代码(默认值:“en”)
例子:
{
"search": "foodex",
"pageSize": 1000,
"pageIndex": 1,
"sortField": "startTime",
"asc": false,
"currencyId": 1,
"language": "en"
}最小示例:
{
"search": "foodex"
}响应结构:
答复包括:
- 所有已爬网页面中的所有事件合并到一个数组中
- 分页元数据
_pagination字段:
- totalPagesLoaded:已爬网的页面数 - startPageIndex:起始页索引 - endPageIndex:加载的最后一页索引 - totalEvents:检索到的事件总数
备注:此工具将自动抓取所有可用页面,直到找不到更多事件。对于大型结果集,该过程可能需要更长的时间,但可以确保您在单个响应中收到完整的结果。该工具包括1000页的安全限制,以防止无限循环。
searchBusinessesInEvent
按ID搜索单个活动中的参展商/企业。支持分页、排序、本地化和过滤(原产国、国家代码、企业类别等)。当您已经知道活动ID并想要原始参展商名册时,请使用此功能。
最小示例:
{
"eventId": "123",
"search": "coffee"
}searchBusinessesInMultipleEvents
上一个工具的批处理变体。提供一组事件ID和一个可选的搜索词,该工具将同时扫描每个事件(每批20个事件)。答复包括:
businesses:所有匹配项的扁平列表resultsByEvent:对象由事件ID键控,因此您可以检查每个事件的匹配情况- 执行元数据(处理的事件、处理的批次、摘要文本)
使用此功能可快速检查供应商是否出现在任何策划的事件列表中。
MCP服务器集成
MCP服务器使用stdio传输,可以与任何兼容MCP的客户端集成。配置您的MCP客户端以指向此服务器的入口点。
示例配置(适用于Claude Desktop或类似设备):
{
"mcpServers": {
"arobid": {
"command": "node",
"args": ["/path/to/arobid-mcp/dist/index.js"],
"env": {
"AROBID_BACKEND_URL": https://api.example.com",
"AROBID_API_KEY": "your-api-key"
}
}
}
}错误处理
服务器包括全面的错误处理:
- 输入验证:在进行API调用之前验证所需的字段和数据类型
- 共享验证实用程序,可在所有工具中实现一致的电子邮件验证 - 强制执行密码复杂性要求 - OTP格式验证(6位数字)
- HTTP错误:将后端HTTP错误转换为用户友好的消息
- 网络错误:优雅地处理网络故障
- 日志记录:将重要事件和错误记录到stderr(MCP标准)
- 敏感数据(密码、OTP)会在日志中自动编辑
代码质量
代码库遵循最佳实践:
- 干燥原理:共享验证实用程序可防止代码重复
- 类型安全:完全支持TypeScript,具有正确的类型定义
- 一致的模式:所有工具都遵循相同的结构和错误处理模式
- 模块化架构:工具、注册和实用程序之间的明确分离
测试和光标集成
局部测试
使用MCP检查器在本地测试MCP服务器(推荐):
为了获得更好的测试体验,请使用MCP检查器:
npm run build && npx @modelcontextprotocol/inspector node dist/index.js这将打开一个web UI,您可以在其中交互式地测试工具、查看日志和调试问题。
配置光标
要将此MCP服务器与Cursor一起使用,请执行以下操作:
- 找到Cursor的MCP配置文件:
- macOS: ~/Library/Application Support/Cursor/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json - 视窗: %APPDATA%\Cursor\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json - Linux: ~/.config/Cursor/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
- 获取项目的绝对路径:
pwd
# Example output: /path/to/arobid-mcp- 添加配置 (参见
cursor-mcp-config.json.example对于模板):
{
"mcpServers": {
"arobid": {
"command": "node",
"args": ["/absolute/path/to/arobid-mcp/dist/index.js"],
"env": {
"AROBID_BACKEND_URL": https://api.example.com",
"AROBID_API_KEY": "your-api-key-here"
}
}
}
}- 重新启动游标 加载MCP服务器
- 游标测试:询问“有哪些MCP工具可用?”或直接尝试使用这些工具。
有关详细说明和故障排除,请参阅 MCP_估计.md.
部署到Vercel
此MCP服务器可以作为无服务器功能部署到Vercel,允许通过HTTP而不是stdio访问它。
先决条件
- Vercel帐户
- 已安装Vercel CLI(可选,用于本地测试)
部署步骤
- 安装Vercel命令行界面 (如果尚未安装):
npm i -g vercel- 在Vercel中设置环境变量:
- 转到Vercel项目设置 - 导航到环境变量 - 添加以下变量: - AROBID_BACKEND_URL (必填) - AROBID_API_KEY (可选) - AROBID_TENANT_ID (可选)
- 部署到Vercel:
vercel或者将您的GitHub存储库连接到Vercel进行自动部署。
- 获取您的MCP服务器URL:
部署后,您将获得一个URL,如下所示 https://your-project.vercel.appMCP端点将在以下位置可用:
https://your-project.vercel.app/api/mcp为Vercel部署配置MCP客户端
对于光标
更新您的 .cursor/mcp.json 使用HTTP传输的配置:
{
"mcpServers": {
"arobid": {
"url": "https://your-project.vercel.app/mcp",
"headers":{
"X-Arobid-Backend-Url": https://api.example.com"
}
}
}
}对于其他MCP客户端
在Vercel部署URL中使用Streamable HTTP传输格式:
https://your-project.vercel.app/api/mcp测试Vercel部署
您可以使用MCP检查器测试部署的MCP服务器:
pnpm dlx @modelcontextprotocol/inspector@latest http://your-project.vercel.app/api/mcp undefined然后:
- 打开
http://127.0.0.1:6274在浏览器中 - 在下拉菜单中选择“Streamable HTTP”
- 输入您的Vercel网址:
https://your-project.vercel.app/api/mcp - 点击“连接”
Vercel的地方发展
要在本地测试Vercel集成,您可以运行模仿Vercel无服务器环境的Vercel开发服务器。
先决条件
- 安装Vercel命令行界面 (如果尚未安装):
npm i -g vercel- 设置环境变量:
创建一个 .env 项目根目录中的文件(或使用 .env.local):
AROBID_BACKEND_URL=https://api.arobid.com
AROBID_API_KEY=your-api-key-here
AROBID_TENANT_ID=your-tenant-id备注:环境变量也可以通过请求头传递:
- X-Arobid-Backend-Url - X-Arobid-Api-Key - X-Arobid-Tenant-Id
本地运行
选项1:使用npm脚本 (推荐):
npm run dev:vercel选项2:直接使用Vercel CLI:
vercel dev --listen 3001这将:
- 在以下位置启动本地开发服务器
http://localhost:3001 - 注意文件更改并自动重新加载
- Mimic Vercel的无服务器环境
- 使用以下环境变量
.env或.env.local
访问MCP服务器
服务器运行后,MCP端点将在以下位置可用:
http://localhost:3001/api/server或者简单地说:
http://localhost:3001/(基于中的重写规则 vercel.json)
测试本地服务器
您可以使用MCP检查器测试本地MCP服务器:
npx @modelcontextprotocol/inspector@latest http://localhost:3001/api/server undefined或者使用curl进行测试:
curl http://localhost:3001/api/server故障排除
- 端口已在使用中:如果端口3001已在使用中,您可以通过修改
--listen旗在dev:vercel脚本在package.json,否则Vercel将自动使用下一个可用端口 - 环境变量未加载:确保
.env或.env.local位于项目根目录中 - 构建错误:运行
npm run build首先确保TypeScript编译成功
API终点
所有用户管理端点都使用 /b2b 未来可扩展性的前缀:
/b2b/api/user/create_user_for_sign_up_async-创建个人帐户/b2b/api/user/user_login-用户登录/b2b/api/user/verify_user-使用OTP验证用户/b2b/api/user/resend_otp_for_user-重新发送OTP/b2b/api/user/check_reset_password-启动密码重置/更改/b2b/api/user/reset_password_for_users-确认密码重置/更改
事件搜索端点:
/tradexpo/api/events-搜索展览/活动(否/b2b前缀,因为它是一个单独的API)
TODO/已知限制
以下项目需要根据实际的Arobid后端API进行配置:
- \[x\] 将电子邮件验证正则表达式重构为共享实用程序
- \[x\] 具有自动分页功能的搜索事件工具
- \[x\] 所有用户端点均已重构
/b2b前缀 - \[\]验证精确的端点路径是否与生产API匹配
- \[\]验证身份验证标头格式(当前使用
Authorization: Bearer) - \[\]验证租户ID标头名称(当前使用
X-Tenant-ID) - \[\]根据实际API响应添加响应类型定义
- \[\]添加其他工具(配置文件更新等)
所有TODO项目都标记为 // TODO 代码中的注释。
贡献
添加新工具时:
- 在中创建新文件
src/tools/(例如。,src/tools/myNewTool.ts) - 在中创建注册文件
src/server/tools/(例如。,src/server/tools/registerMyNewTool.ts) - 在中注册该工具
src/server/registerTools.ts - 使用来自的共享验证实用程序
src/utils/validation.ts用于电子邮件验证和其他常见检查 - 使用工具文档更新此README
许可证
麻省理工学院
