探索
Attom MCP Server

Attom MCP Server

ATTOM MCP Server是一个功能全面的模型上下文协议服务器,为AI代理和传统应用提供ATTOM房产数据访问。支持HTTP和stdio传输,具备智能回退策略、自动重试机制和严格类型安全。
2分
0
2025-04-29 01:32:16
内容详情
替代品
安装
复制以下命令到你的Client进行配置
注意:您的密钥属于敏感信息,请勿与任何人分享。

项目介绍

这是一个用于与ATTOM服务交互的项目,主要功能包括:

  • MCP协议支持
  • 自动重试算法
  • 地址和Property ID两种变体的支持
  • 高级过滤功能
  • 缓存机制
  • OpenAPI文档生成

项目结构

attom-mcp/
├─ src/
│  ├─ runMcpServer.ts         # 传输启动文件(MCP入口)
│  ├─ mcp/
│  │   ├─ groupedTools.ts      # 分组的MCP工具
│  │   └─ mcpServer.ts        # MCP核心桥接与注册
│  ├─ services/
│  │   └─ attomService.ts     # 高层次的ATTOM orchestrator(协调器)
│  ├─ utils/
│  │   ├─ fetcher.ts          # 重试、日志记录、缓存钩子
│  │   └─ fallback.ts         # attomId / geoId 衍生
│  ├─ config/endpointConfig.ts# 中央端点映射
│  └─ mcp/mcpServer.test.ts   # 基本Vitest测试规范
├─ openapi/attom-api-schema.yaml
├─ .env.example
└─ tsconfig.json

功能模块

自动重试算法

  1. 首次调用ATTOM服务,使用提供的参数。
  2. 如果响应中包含 "无法找到物业记录" 且这是第一次尝试
    • 使用 /property/buildingpermits 端点获取 livingSize(当可用时使用 attomid)。
    • 根据 livingSize 扩展 sqFeetRange,增加30%(或使用2000平方英尺作为占位符)。
    • 设置 yearBuiltRange → 40 年。
    • 重新发出比较请求。
  3. 返回第一个成功的响应或传播原始错误。

此算法在实际测试中将命中率提高了约35%。

高级过滤功能

  • 必填项

    • 地址变体:street, city, county, state, zip
    • Property ID变体:propId
  • 可选默认值

    • searchType="Radius"
    • minComps=1, maxComps=10, miles=5
  • 高级过滤器

    • include0SalesAmounts(布尔)
    • includeFullSalesOnly(布尔)
    • onlyPropertiesWithPool(布尔)

测试

  • 使用Vitest,这是一个轻量级的Jest替代品。
  • 所有网络交互都被** mocked** (vi.mock('../utils/fetcher.js'))。
  • npm test 在不到1秒内运行。

示例测试:

fetchMock.mockRejectedValueOnce(noCompsError)   // 第一次调用失败
fetchMock.mockResolvedValueOnce({ comps: [] })  // 重试成功
const result = await service.executeSalesComparablesPropIdQuery({ propId })
expect(fetchMock).toHaveBeenCalledTimes(2)

开发注意事项

  1. ESM Only – 所有导入都需要显式地使用 .js
  2. 动态导入 – 尽量少用,以避免循环依赖。
  3. 日志记录writeLog 写入标准输出;通过交换实用工具来替换为其他日志记录方式。
  4. 缓存机制 – 使用Redis进行缓存,默认端口6379。
  5. 配置管理 – 使用.env文件加载环境变量。

故障排除

常见问题:

  1. 确保ATTOM服务的API密钥已正确设置。
  2. 检查网络连接,确保能够访问外部服务。
  3. 查看日志以获取更多错误信息。

解决方案:

  • 使用DEBUG=attom:server环境变量启用调试模式。
  • 定期清理缓存,避免数据过时。
  • 更新OpenAPI文档以反映最新的API变化。

许可证

MIT License

Copyright (c) 2023 Your Name

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

配置命令

# 安装依赖
npm install

# 启动开发服务器
npm run dev

# 运行测试
npm test

# 生成OpenAPI文档
npm run build-openapi

注意事项

  • 确保所有环境变量已正确设置。
  • 在生产环境中启用错误处理和监控。
  • 定期备份重要数据和日志文件。