使用说明
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凭据
安装
-
克隆存储库:
git clone <repository-url> cd open-horizon-mcp-server -
安装依赖项:
npm install -
创建一个
.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 │
└─────────────────┘ └───────────────────────┘ └─────────────────────┘
关键组件
-
MCP客户端
- 克劳德桌面版:可以与MCP服务器交互的AI助手
- bobShell:用于与MCP服务器交互的命令行界面
- 自定义应用程序:任何实现MCP客户端协议的应用程序
-
Open Horizon MCP服务器
- 工具:用于与Exchange API交互的专用函数
- 资源:服务器提供的静态或动态内容
- 提示:AI助手的预定义说明
-
Open Horizon Exchange API
- 用于管理Open Horizon资源的RESTful API
- 服务、节点、策略等的端点
数据流
- 用户向MCP客户端发送请求(例如,要求Claude“列出Exchange中的所有节点”)
- MCP客户端识别意图并向MCP服务器发送请求
- MCP服务器调用适当的工具(例如。,
list-nodes) - 该工具向Open Horizon Exchange API发出HTTP请求
- Exchange API将数据返回到MCP服务器
- MCP服务器格式化响应并将其返回给MCP客户端
- MCP客户端向用户呈现格式化的响应
使用AI助手
此MCP服务器旨在与支持模型上下文协议的Claude等AI助手配合使用。以下是一些提示,以确保AI助手正确识别和使用可用工具:
工具识别的最佳实践
-
使用明确和具体的请求
- 而不是:“显示节点”
- 使用:“列出在Open Horizon Exchange中注册的所有节点”
-
包括关键术语
- 在您的请求中包括“节点”、“服务”、“策略”、“Exchange”/“管理中心”和“Open Horizon”等术语
- 示例:“显示Open Horizon Exchange中的所有节点”或“列出管理中心中的所有结点”
- 注:术语“Exchange”和“Management Hub”在Open Horizon中可以互换
-
明确行动
- 明确说明要执行的操作(列出、获取详细信息、发布、删除等)
- 示例:“列出Exchange中的所有部署策略”
-
故障排除
- 如果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
许可证
国际学生委员会
贡献
欢迎投稿!请随时提交拉取请求。