D-Tools MCP服务器


生产准备就绪 模型上下文协议(MCP) 将AI助手连接到 D-Tools系统集成商(SI) 平台。专为专业视听(AV)集成商设计,它暴露了 25工具 涵盖完整的SI工作流程——项目、客户端、目录、任务、服务订单、采购订单和健康监控——直接发送到Claude Desktop、Cursor和任何其他MCP兼容主机。
为什么选择D-Tools SI+MCP?
D-Tools SI管理完整的AV项目生命周期:报价、设备跟踪、任务管理和客户记录。其API使用基于队列的发布/订阅模型,其中集成商发布更改,消费者轮询或接收webhook。
MCP规范了AI代理如何调用外部工具。将两者结合起来意味着Claude(或任何人工智能主机)可以查找项目、分析其盈利能力、创建任务或检查采购订单——所有这些都可以通过自然语言完成,无需自定义粘合代码。
快速开始
# 1. Clone and install
git clone https://github.com/Saml1211/D-Tools-MCP-Server.git
cd D-Tools-MCP-Server
npm install
# 2. Configure
cp .env.example .env
# Edit .env — set DTOOLS_API_URL and DTOOLS_API_KEY
# 3. Build and run
npm run build
npm start服务器通过stdin/stdout连接,任何MCP主机都可以立即使用。
添加到克劳德桌面
编辑您的Claude桌面配置(%APPDATA%/Claude/config.json 在Windows上, ~/Library/Application Support/Claude/config.json 在macOS上):
{
"mcpServers": {
"d-tools": {
"command": "node",
"args": ["/path/to/D-Tools-MCP-Server/dist/index.js"],
"env": {
"DTOOLS_API_URL": "https://api.d-tools.com",
"DTOOLS_API_KEY": "your-dtools-api-key"
}
}
}
}重新启动Claude Desktop并尝试: *“列出所有活动项目”* 或 *“分析项目12345的盈利能力”*.
码头工人
docker build -t dtools-mcp .
docker run -it --rm \
-e DTOOLS_API_URL=https://api.d-tools.com \
-e DTOOLS_API_KEY=your-dtools-api-key \
dtools-mcp特性
| 功能 | 详细信息 |
|---|---|
| 25个MCP工具 | 项目、客户、目录、任务、服务订单、采购订单、健康状况 |
| 严格验证 | 在进入API之前,每个工具输入都经过Zod验证 |
| 弹性HTTP | Axios为瞬态故障提供指数重试/回退功能 |
| 速率限制 | 令牌-数据包限制器保护SI API配额 |
| Webhook支持 | 具有HMAC SHA-256签名验证的可选侦听器 |
| 结构化日志记录 | Pino JSON日志记录到stderr;敏感标头已编辑 |
| 172+次测试 | 单元、MCP协议、调度和健康套件——全部离线 |
工具参考
| 类别 | 工具 | 目的 |
|---|---|---|
| 项目 | get_project | 按ID获取项目或变更单 |
list_projects | 带有搜索和状态过滤器的分页列表 | |
create_project | 发布包含可选行项目的新项目 | |
update_project | 更新字段的任意组合 | |
archive_project | 存档或取消存档一个或多个项目 | |
analyze_project_profitability | 行项目的成本、收入、利润和毛利率 | |
get_equipment_summary | 按类别分组的设备总数 | |
| 客户 | get_client | 按ID检索客户端 |
list_clients | 带搜索的分页列表 | |
create_client | 发布新的客户端记录 | |
update_client | 更新联系人或公司详细信息 | |
| 目录 | get_catalog | 按ID获取产品目录条目 |
search_products | 在产品目录中按关键字搜索 | |
list_catalogs | 分页目录列表 | |
| 任务 | get_task | 按ID检索任务 |
list_tasks | 列出任务,可选择按项目筛选 | |
create_task | 发布新任务 | |
update_task | 更新状态、受让人或到期日 | |
| 服务订单 | get_service_order | 按ID检索服务订单 |
list_service_orders | 包含客户端和进度过滤器的列表 | |
create_service_order | 发布新的服务订单 | |
| 采购订单 | get_purchase_order | 按ID检索采购订单 |
list_purchase_orders | 列出供应商和状态筛选器 | |
| 健康 | health_check | API连接、配置、网络挂钩和速率链接状态 |
server_status | 正常运行时间、内存使用情况和Node.js版本 |
示例工具调用
// Fetch a project
{ "name": "get_project", "arguments": { "id": "12345" } }
// Analyse profitability
{ "name": "analyze_project_profitability", "arguments": { "id": "12345" } }
// Create a client
{
"name": "create_client",
"arguments": {
"client": { "name": "Acme Corp", "email": "info@acme.example" }
}
}
// Search catalog
{ "name": "search_products", "arguments": { "searchText": "65 inch display" } }配置
复制 .env.example 到 .env 并设置变量:
| 变量 | 必填 | 描述 |
|---|---|---|
DTOOLS_API_URL | 是 | SI API的基本URL(无尾部斜线) |
DTOOLS_API_KEY | 是 | 您的SI API密钥(X-DTSI-ApiKey 头球 |
WEBHOOK_PORT | 否 | 在此端口上启用webhook侦听器 |
WEBHOOK_SECRET | 没有 | 用于webhook签名验证的HMAC-SHA256密钥 |
LOG_LEVEL | 否 | 引脚日志级别-- trace / debug / info / warn / error / fatal (默认值: info) |
从下的D-Tools SI桌面应用程序获取API密钥 设置→ API集成.
发展
# Install dependencies
npm install
# Type-check
npx tsc --noEmit
# Lint
npm run lint
# Run offline test suite
npm test
# Run with coverage
npm run test:ci
# Run MCP-protocol tests only
npm run test:mcp
# Run tests against the local mock API
node mock-api/server.js # Terminal 1
cp .env.test .env && npm test # Terminal 2看 测试.md 完整的测试指南,包括集成测试和模拟API服务器。
项目结构
src/
├── index.ts # Entry point — creates McpServer, registers tools, starts stdio transport
├── config.ts # Zod-validated environment configuration
├── logger.ts # Pino logger (sensitive header redaction)
├── lib/
│ ├── dtools-client.ts # Axios HTTP client with retry/backoff
│ ├── auth.ts # API key auth helper
│ ├── errors.ts # Custom error classes
│ ├── rate-limiter.ts # Token-bucket rate limiter
│ ├── request-context.ts # Async-local-storage request tracing
│ ├── webhook-handlers.ts # SI event handlers
│ └── webhook-server.ts # Optional HMAC-verified HTTP listener
├── tools/
│ ├── projects.ts # 7 project tools
│ ├── clients.ts # 4 client tools
│ ├── catalogs.ts # 3 catalog tools
│ ├── tasks.ts # 4 task tools
│ ├── service-orders.ts # 3 service order tools
│ ├── purchase-orders.ts # 2 purchase order tools
│ └── health.ts # 2 health tools
├── types/
│ ├── dtools.ts # SI domain types
│ └── mcp.ts # MCP response types
└── __tests__/ # Vitest test suite (172+ tests, all offline)架构说明
发布/订阅模型
SI API使用基于队列的模型: Publish/… 端点写入更改, Subscribe/… 端点读取它们。列出实体时,您可能需要分页以清空整个队列——使用 pageNumber 和 pageSize 在任何列表工具上。
安全
- API密钥是从加载的
.env并注射为X-DTSI-ApiKey在每一个请求。Pino记录器会编辑此标头,使其永远不会出现在日志输出中。 - 如果启用了webhooks,服务器将验证每个传入请求的
x-signature在调度之前,使用HMAC SHA-256作为标头。 - 在进行任何API调用之前,Zod将验证所有工具输入。
故障排除
| 症状 | 修复 |
|---|---|
| 主机中未列出工具 | 确保服务器进程已启动并记录 D-Tools MCP server started.检查 DTOOLS_API_KEY. |
| 401未经授权 | 无效或缺失 DTOOLS_API_KEY 在 .env. |
| 空列表响应 | SI仅返回已发布到队列的数据。使用 searchText 或窄滤光片。 |
| 重复超时 | 客户端以指数回退重试3次。检查网络访问 api.d-tools.com. |
贡献
欢迎拉取请求。看 贡献.md 了解分支约定、代码风格以及如何添加新工具。
许可证
麻省理工学院 ©山姆·林登
______________________________________________________________________
*专为AV集成社区打造*
