AMS360 MCP服务器
用于Vertfore AMS360 WSAPI v3的MCP服务器,用TypeScript实现 @modelcontextprotocol/sdk 以及用于AMS360 WCF端点的真正SOAP 1.1客户端。
它做什么
此服务器公开以下MCP工具:
search_clients(query)get_client(clientId)get_policies(clientId)get_renewals(startDate, endDate)get_activities(filter)
在引擎盖下,它使用公共AMS360 WSAPI v3合约:
Login建立会话CustomerGetByIdCustomerGetByNumberCustomerGetListByNamePrefixPolicyGetPolicyGetListByCustomerIdPolicyGetListByCustomerNumberPolicyGetListByPolicyNumberCustomerSuspenseGetListByCustomerIdCommonSuspenseGetListByEntityIdPersonalNoteGetListLineOfBusinessGetByCode
WSAPI重要注意事项
公开的Vertfore AMS360 WSAPI v3文档目前描述了一个SOAP端点:
https://wsapi.ams360.com/v3/WSAPIService.svc
身份验证不是纯REST风格的身份验证。记录的流程是:
- 呼叫
Login和AgencyNo,LoginId,Password,并且可选EmployeeCode. - 阅读
WSAPISession登录响应中的SOAP标头。 - 发送这个
WSAPISession带有后续请求的标头。
此服务器遵循该流程,还支持将WSAPI置于额外HTTPS身份验证层后面的机构的可选HTTP基本身份验证。
公共文档的限制
当前公开的WSAPI v3表面没有完全公开其中两个请求的概念:
- 文档显示
CustomerActivityInsert和CommonActivityInsert,但不是活动列表检索操作。 - 这些文档不会发布全球机构范围内的续订日期范围查询。
因此:
get_activities针对机构通常用于提醒的可检索WSAPI实体实现:客户暂停、常见暂停和个人笔记。get_renewals返回一个结构化的基于文档的限制消息,而不是在不存在完整续订提要时假装存在。
先决条件
- Node.js 20+推荐
- 在AMS360中创建的AMS360 WSAPI凭据
- 您的代理编号
安装
npm install
npm run build在开发过程中直接从源代码运行:
npm run dev要运行已编译的服务器,请执行以下操作:
npm start配置
设置这些环境变量:
export AMS360_AGENCY_NO="YOUR_AGENCY_NO"
export AMS360_USERNAME="YOUR_WSAPI_LOGIN_ID"
export AMS360_PASSWORD="YOUR_WSAPI_PASSWORD"
export AMS360_ENDPOINT_URL="https://wsapi.ams360.com/v3/WSAPIService.svc"可选变量:
export AMS360_EMPLOYEE_CODE="ABC"
export AMS360_TIMEOUT_MS="30000"
export AMS360_POLICY_DETAIL_LIMIT="25"
export AMS360_DEBUG="false"可选的HTTP基本身份验证,如果您的代理机构在WSAPI前端使用另一个身份验证层:
export AMS360_HTTP_AUTH_MODE="basic"
export AMS360_HTTP_USERNAME="basic-auth-user"
export AMS360_HTTP_PASSWORD="basic-auth-password"此服务器支持的别名:
AMS360_AGENCY_URL作为别名AMS360_ENDPOINT_URLAMS360_LOGIN_ID作为别名AMS360_USERNAME
克劳德桌面
将服务器添加到 claude_desktop_config.json:
{
"mcpServers": {
"ams360": {
"command": "node",
"args": [
"/absolute/path/to/ams360-mcp-server/dist/index.js"
],
"env": {
"AMS360_AGENCY_NO": "YOUR_AGENCY_NO",
"AMS360_USERNAME": "YOUR_WSAPI_LOGIN_ID",
"AMS360_PASSWORD": "YOUR_WSAPI_PASSWORD",
"AMS360_ENDPOINT_URL": "https://wsapi.ams360.com/v3/WSAPIService.svc"
}
}
}
}如果你想让Claude Desktop从包目录启动它:
{
"mcpServers": {
"ams360": {
"command": "npx",
"args": [
"tsx",
"/absolute/path/to/ams360-mcp-server/src/index.ts"
],
"env": {
"AMS360_AGENCY_NO": "YOUR_AGENCY_NO",
"AMS360_USERNAME": "YOUR_WSAPI_LOGIN_ID",
"AMS360_PASSWORD": "YOUR_WSAPI_PASSWORD"
}
}
}
}克劳德代码
将相同的服务器定义添加到 .claude.json:
{
"mcpServers": {
"ams360": {
"command": "node",
"args": [
"/absolute/path/to/ams360-mcp-server/dist/index.js"
],
"env": {
"AMS360_AGENCY_NO": "YOUR_AGENCY_NO",
"AMS360_USERNAME": "YOUR_WSAPI_LOGIN_ID",
"AMS360_PASSWORD": "YOUR_WSAPI_PASSWORD",
"AMS360_ENDPOINT_URL": "https://wsapi.ams360.com/v3/WSAPIService.svc"
}
}
}
}工具行为
search_clients(query)
尽力搜索策略:
- GUID->
CustomerGetById - 数字字符串->
CustomerGetByNumber - 文本->
CustomerGetListByNamePrefix - 策略查找字符串->
PolicyGetListByPolicyNumber,然后水合物匹配客户记录
get_client(clientId)
通过以下方式获取完整的客户记录:
- 客户GUID,或
- 客户编号
get_policies(clientId)
退货:
- 所有匹配策略的策略摘要
- 为高达
AMS360_POLICY_DETAIL_LIMIT政策 - 通过以下方式丰富业务线
LineOfBusinessGetByCode
重要提示:
- 返回所有匹配策略的策略摘要
- 满的
PolicyGet只获取第一个细节AMS360_POLICY_DETAIL_LIMIT政策 - 默认的详细信息限制为
25 - 工具输出包括
detailHydrationTruncated和detailHydrationMessage当细节集不完整时
get_activities(filter)
支持的筛选路由:
{"customerId":""}->CustomerSuspenseGetListByCustomerId{"entityId":"","entityType":}->CommonSuspenseGetListByEntityId{"source":"personalNotes","dateFrom":"2026-01-01","dateTo":"2026-01-31"}->PersonalNoteGetList
重要提示:
- 当筛选器为空时,此工具不会默认为个人笔记
- 要检索个人笔记,请设置
source到"personalNotes"明确地
get_renewals(startDate, endDate)
返回一个结构化的限制响应,解释公共WSAPI v3文档没有公开真正的机构范围续订日期范围查询。这是作为正常的工具响应返回的,而不是运输/工具故障。
参考文献
- Vertafore AMS360 API简介: link.vertafore.com/vertafore/documentation/AMS360简介
- AMS360 WSAPI设置帮助: help.vertafore.com/AMS360内容/上下文敏感/下载集成/扫描服务apisetup.htm
- AMS360开发者门户TOC: api.apps.vertafore.com/。../实体/AMS360/toc
- AMS360 WSAPI包元数据: api.apps.vertafore.com/。../实体/AMS360/docs/AMS360:WSAPI:22f503
