Token导航 LogoToken导航TokenDH.com
Tririga MCP Server logo
办公协作未说明官方级别未说明来源级核验

Tririga MCP Server

MCP Server

一个为AI助手提供IBM MREF OSLC API访问的模型上下文协议服务器,支持通过自然语言进行智能设施管理、工单创建、资产跟踪和位置管理。

工具数

22

提示词数

0

GitHub Stars

0

资源数

0
JavaClaude团队协作Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

nschwake

提供方

nschwake

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

MREF OSLC MCP服务器

⚠️ 进行中 -该项目正在积极开发中。测试尚未完成。在生产环境中使用,风险自负。

模型上下文协议(MCP)服务器,为Claude等人工智能助手提供对IBM MREF的OSLC(生命周期协作开放服务)API的直接访问,通过自然语言实现智能设施管理、工单创建、资产跟踪和位置管理。

🎯 它的作用

此MCP服务器将MREF的OSLC API公开为大型语言模型可用于以下用途的工具集合:

  • 查询资源:搜索工作任务、地点、资产、人员和其他MREF记录
  • 创建记录:通过适当的工作流操作生成工单、任务和其他记录
  • 更新记录:使用状态转换和字段更新修改现有记录
  • 发现架构:动态探索可用的资源类型、字段和功能
  • 执行工作流:触发MREF工作流操作,如“创建草稿”、“完成”、“退役”
  • 管理位置:搜索建筑物、楼层、空间并导航位置层次结构
  • 跟踪资产:查询和管理设备、装置和实物资产

LLM可以使用自然语言与MREF交互,无需了解OSLC语法、MREF内部结构或API详细信息。

🏗️ 建筑

┌─────────────┐
│   Claude    │  Natural Language: "Create a work order for HVAC repair"
│     AI      │
└──────┬──────┘
       │ MCP Protocol
       │
┌──────▼──────────────────────────────┐
│   MREF OSLC MCP Server              │
│   ├─ Tool Discovery (findShape)     │
│   ├─ Schema Discovery (discover)    │
│   ├─ Query Tools (query, search)    │
│   ├─ CRUD Tools (create, update)    │
│   └─ Workflow Tools (actions)       │
└──────┬──────────────────────────────┘
       │ OSLC HTTP/REST
       │
┌──────▼──────────────────────────────┐
│   IBM MREF Platform                 │
│   ├─ Work Management                │
│   ├─ Space & Location               │
│   ├─ Asset Management               │
│   └─ Custom Applications            │
└─────────────────────────────────────┘

✨ 主要特点

🔍 智能发现

  • 自动编目所有OSLC服务提供商和资源形状
  • 发现查询功能、创建工厂和可用字段
  • 处理内置和自定义MREF资源
  • 无硬编码假设-适应任何MREF配置

🎨 多种查询功能

资源可以有多个专门的查询端点(例如,“建筑查找”、“楼层查找”、《一般位置》)。服务器公开所有这些,让LLM选择最合适的一个。

📦 响应优化

  • 自动解析详细的OSLC RDF/XML响应
  • 删除冗余的命名空间声明和样板
  • 响应大小平均减少约75%
  • 保留所有数据-无截断或限制
  • 返回干净、LLM友好的格式

🔐 安全

  • 支持用户范围的身份验证(每个会话凭据)
  • XML解析中的XXE攻击防御
  • 所有参数的输入验证
  • 全面的错误处理和记录

🧩 符合OSLC标准

  • 从服务目录读取查询功能(不是硬编码模式)
  • 从服务目录读取创建工厂
  • 通过POST更新模式支持MREF的PATCH
  • 处理MREF特定的约定(内联子项的LR后缀)

🚀 快速开始

先决条件

  • Java 17或更高版本
  • Maven 3.6+
  • 在启用OSLC的情况下访问MREF实例
  • 具有适当权限的MREF用户凭据

安装

  1. 克隆存储库
   git clone https://github.com/yourusername/tririga-mcp-server.git
   cd tririga-mcp-server
  1. 配置MREF连接

设置环境变量:

   export MREF_URL=https://your-MREF-server.com
   export MREF_USER=your-username
   export MREF_PASS=your-password

或创建 application.properties:

   MREF_URL=https://your-MREF-server.com
   MREF_USER=your-username
   MREF_PASS=your-password
  1. 构建项目
   mvn clean package
  1. 运行服务器
   java -jar target/tririga-mcp-server.jar

服务器将于启动 http://localhost:8080 默认情况下。

与Claude Desktop一起使用

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "MREF": {
      "command": "java",
      "args": [
        "-jar",
        "/path/to/tririga-mcp-server.jar"
      ],
      "env": {
        "MREF_URL": "https://your-MREF-server.com",
        "MREF_USER": "your-username",
        "MREF_PASS": "your-password"
      }
    }
  }
}

📚 示例用法

连接后,您可以通过自然语言与MREF进行交互:

示例1:创建工单

User: "Create a work order to fix the HVAC system in Building A, due by end of week"

Claude: I'll create that work order for you.
→ Calls findShape("work task")
→ Calls discoverResource("triWorkTask") to see available fields
→ Calls createWorkTask(
    title="Fix HVAC System - Building A",
    description="HVAC repair needed",
    plannedStart="2026-03-04T08:00:00",
    plannedEnd="2026-03-07T17:00:00",
    action="Create Draft"
  )
→ Returns: Work order 147665710 created successfully

示例2:搜索地点

User: "Find all conference rooms on the 3rd floor"

Claude: Let me search for those conference rooms.
→ Calls discoverResource("triLocation")
→ Sees multiple query capabilities available
→ Calls queryByUrl(
    "http://host/oslc/spq/triFloorandSpaceLookupQC",
    "spi:triLevelNU=3"
  )
→ Returns: Found 5 conference rooms on floor 3

示例3:更新工作任务状态

User: "Mark work task 147665710 as complete"

Claude: I'll complete that work task.
→ Calls readResource("triWorkTask", "147665710") to get current state
→ Calls getAvailableActions("triWorkTask", "147665710")
→ Sees available actions: ["Save", "Complete", "Cancel"]
→ Calls updateWorkTask(recordId="147665710", action="Complete")
→ Returns: Work task completed successfully

🛠️ 可用工具

服务器提供30多种工具,按类别组织:

发现和模式

  • findShape -按关键字搜索资源类型
  • discoverResource -获取资源的完整字段目录
  • describeShape -获取详细的形状信息

查询和搜索

  • queryResource -带过滤的常规资源查询
  • queryByUrl -使用特定查询功能进行查询
  • searchWorkTasks -跨工作任务的全文搜索
  • queryMyAssignedWorkTasks -获取用户分配的任务
  • lookupBuildings -搜索建筑物
  • lookupFloorsAndSpaces -搜索楼层和空间

CRUD操作

  • createResource -创建任何MREF记录
  • createWorkTask -工作任务的便利方法
  • readResource -获取完整记录详细信息
  • updateResource -更新任何MREF记录
  • updateWorkTask -工作任务的便利方法
  • deleteResource -删除记录

工作流程和操作

  • getAvailableActions -获取记录当前状态的有效操作
  • getWorkTaskStatuses -获取所有有效的状态值
  • getPriorities -获取所有优先级
  • getTaskTypes -获取所有任务类型

公用事业

  • oslcFetch -直接获取任何OSLC URL
  • refreshCatalog -重新加载服务目录
  • refreshShape -重新加载特定的资源形状

🏗️ 项目结构

src/main/java/com/microsoft/mcp/sample/server/
├── McpServerApplication.java          # Spring Boot main application
├── config/
│   └── StartupConfig.java            # Startup configuration
├── controller/
│   └── HealthController.java         # Health check endpoint
├── exception/
│   └── GlobalExceptionHandler.java   # Exception handling
├── oslc/
│   ├── OslcResponseParser.java       # XML response parser
│   ├── OslcServiceCatalog.java       # Service provider catalog
│   ├── OslcShape.java                # Resource shape parser
│   ├── OslcShapeEntry.java           # Catalog entry
│   ├── OslcProperty.java             # Field metadata
│   ├── OslcJsonBuilder.java          # JSON request builder
│   └── OslcCreateResult.java         # Creation response
└── service/
    ├── MREFOSLCService.java       # Main MCP service (30+ tools)
    └── CalculatorService.java        # Example service (unused)

🔧 配置

环境变量/应用程序属性

变量描述必填默认
MREF_URLMREF基本URL-
MREF_USERMREF用户名-
MREF_PASSMREF密码-

日志记录

配置登录 src/main/resources/logback.xml:


    
        System.err
        
            
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n

        
    
    
    
        
    

重要:对于基于STDIO的MCP服务器,所有日志记录必须转到stderr,而不是stdout。

📊 性能优化

响应大小减小

  • 查询结果:减少约75%(XML→ 解析格式)
  • 单个记录:减少约20-40%
  • 参考数据:减少约80-95%
  • 所有数据均已保存 -无截断

示例:130条状态记录

  • 之前:42000+个XML字符
  • 之后:约8000个字符的干净数据
  • 减少:81%

HTTP客户端优化

  • 单共享HttpClient实例(连接池)
  • 10秒连接超时
  • 30秒请求超时
  • 自动重定向跟踪

缓存

  • 启动时构建一次服务目录
  • 首次加载后缓存的资源形状
  • 用于线程安全的内存并发哈希映射

🧪 测试状态

⚠️ 测试未完成

✅ 测试和工作

  • 基本的CRUD操作(创建、读取、更新、删除)
  • 带过滤的查询操作
  • 资源发现和模式检查
  • 支持多种查询功能
  • 响应解析和大小缩减
  • 常见场景的错误处理

⚙️ 进行中

  • 完整的集成测试套件
  • 性能基准测试
  • 边缘案例处理
  • 自定义资源类型测试
  • 并发操作测试
  • 会话管理测试

📋 待办事项

  • 单元测试覆盖率(目标:80%+)
  • 负载测试
  • 安全审计
  • 文档审查
  • 生产部署指南

🐛 已知问题

  1. 自定义资源类型:使用客户特定(cst前缀)资源进行有限测试
  2. 内联子创建:复杂的嵌套记录创建需要更多的测试
  3. 大型结果集:1000+条记录查询的性能需要优化
  4. 会话清理:未完全实现每会话凭据清理

🤝 贡献

欢迎投稿!请注意,这是一项正在进行的工作。

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

🙏 致谢

📞 支持

  • 问题:请通过以下方式报告错误和功能请求
  • 讨论:对于问题和讨论,请使用

🗺️ 路线图

  • \[\]完整的测试覆盖率
  • \[\]生产硬化
  • \[\]高级查询生成器
  • \[\]批量操作支持
  • \[\]实时通知
  • \[\]GraphQL支持
  • \[\]Docker容器化
  • \[\]Kubernetes部署示例
  • \[\]OAuth2身份验证支持
  • \[\]多租户支持

______________________________________________________________________

状态: 🚧 工作正在进行中| 版本:0.1.0-α| 最后更新2026年3月

目录标签

目录标签

JavaClaude团队协作设施管理本地部署工单管理资产管理位置管理OSLCAPI

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

22

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP