Open Horizon MCP 服务器

Open Horizon MCP 服务器是一个基于模型上下文协议(MCP)的服务器,用于管理 Open Horizon 边缘计算平台的服务、节点和部署策略。

  • by open-horizon-services
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 open-horizon-services/service-open-horizon-mcp-server

使用说明

Open Horizon MCP服务器

用于与Open Horizon Exchange API交互的模型上下文协议(MCP)服务器。此服务器提供用于管理Open Horizon服务、节点和部署策略的工具和资源。

概述

Open Horizon MCP Server基于模型上下文协议(MCP)框架构建,为AI助手与Open Horizo n Exchange API交互提供了一个标准化的接口。它使AI助手能够执行与Open Horizon边缘计算平台管理相关的各种操作。

特性

  • 服务管理

    • 列出可用服务
    • 获取特定服务的详细信息
    • 将新服务发布到Exchange
    • 从Exchange中删除服务
    • 生成服务定义文件
  • 节点管理

    • 列出已注册的节点
    • 获取节点策略详细信息
    • 使用策略注册节点
    • 从Exchange注销节点
  • 策略管理

    • 列出部署策略
    • 获取有关特定政策的详细信息
    • 检查使用特定策略部署了哪些工作负载
    • 检查服务与策略的兼容性
    • 创建、更新和删除部署策略
    • 列出并管理管理策略
  • 行政

    • 获取Exchange版本信息
    • 获取Exchange状态信息
    • 获取组织状态
  • 高可用性管理

    • 列出高可用性组
    • 创建、更新和删除高可用性组
    • 在高可用性组中添加和删除节点

先决条件

  • Node.js(v16或更高版本)
  • npm(v7或更高版本)
  • 访问Open Horizon Exchange实例
  • Open Horizon Exchange凭据

安装

  1. 克隆存储库:

    git clone <repository-url>
    cd open-horizon-mcp-server
    
  2. 安装依赖项:

    npm install
    
  3. 创建一个 .env 根目录中的文件,包含以下变量:

    EXCHANGE_URL=<your-exchange-url>
    EXCHANGE_ORG=<your-organization>
    EXCHANGE_CREDENTIAL=<your-base64-encoded-credentials>
    PORT=3000
    

用法

启动服务器

在默认端口(3000)上启动服务器:

npm start

在自定义端口上启动服务器:

npm run start:port --port=8080

在开发模式下运行并自动重新加载:

npm run dev

Docker支持

为不同架构构建Docker镜像:

# For ARM64
npm run build:docker:arm64

# For AMD64
npm run build:docker:amd64

IBM云代码引擎部署

该项目包括部署到IBM Cloud Code Engine的脚本:

# Deploy to development environment
npm run deploy:dev

# Deploy to staging environment
npm run deploy:stage

# Deploy to production environment
npm run deploy:prod

API终点

  • POST /mcp:MCP协议通信的主要端点
  • GET /health:用于监视的健康检查端点

MCP工具

服务器通过MCP协议提供以下工具。每个工具都有特定的触发短语,像克劳德这样的人工智能助手可以用来识别何时调用它们。

节点管理工具

工具名称 描述 触发器短语示例
list-nodes 列出在Exchange/Management Hub中注册的所有节点 “列出Exchange中的所有节点”、“显示所有注册的节点”、”获取管理Hub中所有节点的列表”、“系统中注册了哪些节点?”
get-node-policy 获取与特定节点关联的策略 “显示节点X的策略”,“将什么策略应用于节点X?”,“从管理中心获取节点X策略”
register-node-policy 使用策略注册节点 “使用策略Y注册节点X”、“将策略Y应用于节点X”,“使用策略Y将节点X添加到管理中心”
unregister-node 从Exchange/管理中心注销节点 “注销节点X”、“从Exchange中删除节点X”和“从管理中心删除节点X

服务管理工具

工具名称 描述 触发器短语示例
list-services 列出Open Horizon Exchange/Management Hub中的所有服务 “列出所有服务”、“显示可用服务”、”Exchange中有哪些服务?“显示Management Hub中的服务”
get-service-details 获取特定服务的详细信息 “显示服务X的详细信息”、“告诉我服务X的情况”、“从管理中心获取服务X的信息”
publish-service 将新服务发布到Exchange/管理中心 “发布新服务”、“将服务X添加到Exchange”、“在管理中心注册服务X”
delete-service 从Exchange/管理中心删除服务 “删除服务X”,“从Exchange中删除服务X,“从管理中心中删除服务X”
generate-service-definition 生成服务定义文件 “生成服务定义”、“为X创建服务定义”和“制作服务定义模板”

策略管理工具

工具名称 描述 触发器短语示例
list-deployment-policies 列出Exchange/管理中心中的所有部署策略 “列出所有策略”、“显示部署策略”、
get-policy-details 获取特定策略的详细信息 “显示策略X的详细信息”、“告诉我策略X的情况”、“从管理中心获取策略X信息”
check-policy-deployments 检查哪些工作负载是使用特定策略部署的 “哪些工作负载使用策略X?”、“显示策略X的部署”、“哪些服务是使用策略X部署的?”
check-policy-compatibility 检查哪些服务与特定策略兼容 “哪些服务与策略X兼容?”,“显示与策略X相容的服务”,“哪些服务可以与策略X一起运行?”
delete-policy 从Exchange/管理中心删除策略 “删除策略X”、“从Exchange中删除策略X“、”从管理中心删除政策X“
manage-deployment-policy 创建、更新或获取部署策略的详细信息 “创建新的部署策略”、“更新策略X”、“获取策略X的详细信息”
list-management-policies 列出Exchange中的所有管理策略 “列出所有管理策略”、“显示管理策略”,“有哪些可用的管理策略?”
manage-management-policy 创建、更新或获取管理策略的详细信息 “创建新的管理策略”、“更新管理策略X”、“获取管理策略X的详细信息”

管理工具

工具名称 描述 触发器短语示例
admin-version 获取Exchange版本信息 “正在运行哪个版本的Exchange?”、“获取Exchange版本”、“显示Exchange版本信息”
admin-status 获取Exchange状态信息 “Exchange的状态是什么?”、“获取Exchange状态”、“显示Exchange运行状况信息”
org-status 获取组织状态信息 “组织X的状态是什么?”,“获取组织状态”,“显示组织运行状况信息”

高可用性管理工具

工具名称 描述 触发器短语示例
list-ha-groups 列出所有高可用性组 “列出所有HA组”、“显示高可用性分组”、“哪些HA分组可用?”
manage-ha-group 创建、更新或获取高可用性组的详细信息 “创建新的HA组”、“更新HA组X”、“获取HA组X的详细信息”
manage-ha-group-node 在高可用性组中添加或删除节点 “将节点X添加到HA组Y”,“从HA组Y中删除节点X”,“管理HA组X中的节点”

文档查询工具

工具名称 描述 触发器短语示例
ieam-doc-query 使用RAG查询IEAM官方文档以获取概念信息、解释、安装指南和最佳实践 “什么是IBM Edge Application Manager?”,“解释IEAM架构”,“如何安装IEAM?”,”安装IEAM的先决条件是什么?“IEAM支持Kubernetes吗?”
api-query-tool 查询Open Horizon Exchange REST API规范,了解有关端点、参数和请求/响应格式的技术详细信息 “What API endpoint lists services?”,“Showme the GET services API”,“node registration API需要什么参数?”,”,“showme curl examples for the nodes API”
api-query-tool-nlp 增强的API查询工具,具有用于复杂或对话式API查询的自然语言处理 “如何更新节点策略?”,“注册节点的最佳方式是什么?”,《如何创建部署策略?》

了解文档查询工具

服务器提供了三种不同的查询文档的工具,每种工具都针对不同类型的问题进行了优化:

ieam-doc-query -关于概念和文档问题

  • 目的:使用检索增强生成(RAG)查询IEAM官方文档
  • 最适合:
    • 了解IEAM概念和架构
    • 安装和设置指南
    • 功能说明和功能
    • 最佳实践和故障排除
  • 示例问题:
    • “什么是IBM Edge应用程序管理器?”
    • “解释IEAM架构”
    • “安装IEAM的先决条件是什么?”
    • “IEAM支持Kubernetes工作负载吗?”
  • 数据源:IEAM官方文档知识图

api-query-tool -API技术细节

  • 目的:查询有关REST API技术信息的OpenAPI规范
  • 最适合:
    • 正在查找特定的API终结点
    • 了解API参数和请求格式
    • 获取curl命令示例
    • 学习HTTP方法和响应代码
  • 示例问题:
    • “什么API端点列出服务?”
    • “服务创建端点需要哪些参数?”
    • “显示用于节点注册的curl命令”
  • 数据源:OpenAPI/Swagger规范文件

api-query-tool-nlp -对于复杂的API查询

  • 目的:增强的API查询工具,可理解自然语言
  • 最适合:
    • 复杂或对话式API问题
    • 关于API使用的“如何”问题
    • 与确切端点模式不匹配的问题
  • 示例问题:
    • “如何更新节点策略?”
    • “注册节点的过程是什么?”
  • 数据源:带有NLP分析的OpenAPI规范

建筑

Open Horizon MCP服务器采用模块化架构,使人工智能助手能够通过模型上下文协议(MCP)与Open HorizonExchange API进行交互。

┌─────────────────┐     ┌───────────────────────┐     ┌─────────────────────┐
│                 │     │                       │     │                     │
│  MCP Clients    │     │  Open Horizon         │     │  Open Horizon       │
│                 │     │  MCP Server           │     │  Exchange API       │
│  - Claude       │◄───►│                       │◄───►│                     │
│  - bobShell     │     │  - Tools              │     │  - Services         │
│  - Custom       │     │  - Resources          │     │  - Nodes            │
│  - Applications │     │  - Prompts            │     │  - Policies         │
│                 │     │                       │     │  - HA Groups        │
└─────────────────┘     └───────────────────────┘     └─────────────────────┘

关键组件

  1. MCP客户端

    • 克劳德桌面版:可以与MCP服务器交互的AI助手
    • bobShell:用于与MCP服务器交互的命令行界面
    • 自定义应用程序:任何实现MCP客户端协议的应用程序
  2. Open Horizon MCP服务器

    • 工具:用于与Exchange API交互的专用函数
    • 资源:服务器提供的静态或动态内容
    • 提示:AI助手的预定义说明
  3. Open Horizon Exchange API

    • 用于管理Open Horizon资源的RESTful API
    • 服务、节点、策略等的端点

数据流

  1. 用户向MCP客户端发送请求(例如,要求Claude“列出Exchange中的所有节点”)
  2. MCP客户端识别意图并向MCP服务器发送请求
  3. MCP服务器调用适当的工具(例如。, list-nodes)
  4. 该工具向Open Horizon Exchange API发出HTTP请求
  5. Exchange API将数据返回到MCP服务器
  6. MCP服务器格式化响应并将其返回给MCP客户端
  7. MCP客户端向用户呈现格式化的响应

使用AI助手

此MCP服务器旨在与支持模型上下文协议的Claude等AI助手配合使用。以下是一些提示,以确保AI助手正确识别和使用可用工具:

工具识别的最佳实践

  1. 使用明确和具体的请求

    • 而不是:“显示节点”
    • 使用:“列出在Open Horizon Exchange中注册的所有节点”
  2. 包括关键术语

    • 在您的请求中包括“节点”、“服务”、“策略”、“Exchange”/“管理中心”和“Open Horizon”等术语
    • 示例:“显示Open Horizon Exchange中的所有节点”或“列出管理中心中的所有结点”
    • 注:术语“Exchange”和“Management Hub”在Open Horizon中可以互换
  3. 明确行动

    • 明确说明要执行的操作(列出、获取详细信息、发布、删除等)
    • 示例:“列出Exchange中的所有部署策略”
  4. 故障排除

    • 如果AI无法识别工具,请尝试使用MCP工具部分中列出的示例触发短语重新表述您的请求
    • 对于复杂的操作,将其分解为更小的步骤

交互示例

User: "List all nodes registered in the Open Horizon Exchange"
AI: [Uses list-nodes tool to retrieve and display all registered nodes]

User: "Show me details about the deployment policy named 'my-policy'"
AI: [Uses get-policy-details tool to retrieve and display policy information]

User: "I want to publish a new service to the Exchange"
AI: [Uses publish-service tool and guides you through the process]

特定工具使用提示

使用列表节点工具

这 list-nodes 该工具对于查看在Open Horizon实例中注册的所有边缘设备特别有用。为确保Claude识别何时使用此工具:

  • 明确表示希望看到“节点”或“边缘设备”
  • 使用以下短语:
    • “列出Open Horizon Exchange中的所有节点”
    • “显示管理中心中注册的所有节点”
    • “系统中注册了哪些边缘设备?”
    • “获取所有节点的列表”
    • “显示所有已注册的边缘设备”

如果克劳德不认识你的请求,试着用这些特定的模式之一重新措辞。

模板

服务器包括用于常见操作的模板:

  • service-definition.json:基本服务定义模板
  • service-definition-with-inputs.json:带有用户输入的服务定义模板
  • node.policy.json:节点策略模板
  • config.json:配置模板
  • config-with-inputs.json:带有用户输入的配置模板

发展

项目结构

open-horizon-mcp-server/
├── src/
│   ├── models/
│   │   └── model.ts
│   ├── services/
│   │   └── common.ts
│   ├── tools/
│   │   ├── admin-status.ts
│   │   ├── admin-version.ts
│   │   ├── api-query-tool-nlp.ts
│   │   ├── api-query-tool.ts
│   │   ├── check-policy-compatibility.ts
│   │   ├── check-policy-deployments.ts
│   │   ├── delete-policy.ts
│   │   ├── delete-service.ts
│   │   ├── generate-service-definition.ts
│   │   ├── get-node-policy.ts
│   │   ├── get-policy-details.ts
│   │   ├── get-service-details.ts
│   │   ├── ieamDocQueryTool.ts
│   │   ├── list-deployment-policies.ts
│   │   ├── list-ha-groups.ts
│   │   ├── list-management-policies.ts
│   │   ├── list-nodes.ts
│   │   ├── list-services.ts
│   │   ├── manage-deployment-policy.ts
│   │   ├── manage-ha-group-node.ts
│   │   ├── manage-ha-group.ts
│   │   ├── manage-management-policy.ts
│   │   ├── org-status.ts
│   │   ├── publish-service.ts
│   │   ├── register-node-policy.ts
│   │   ├── update-node-policy.ts
│   │   └── unregister-node.ts
│   ├── mcp-server.ts
│   └── server.ts
├── templates/
│   ├── config-with-inputs.json
│   ├── config.json
│   ├── node.policy.json
│   ├── service-definition-with-inputs.json
│   └── service-definition.json
├── package.json
└── tsconfig.json

建设项目

npm run build

许可证

国际学生委员会

贡献

欢迎投稿!请随时提交拉取请求。