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
cd open-horizon-mcp-server- 安装依赖项:
npm install- 创建一个
.env根目录中的文件,包含以下变量:
EXCHANGE_URL=
EXCHANGE_ORG=
EXCHANGE_CREDENTIAL=
PORT=3000用法
启动服务器
在默认端口(3000)上启动服务器:
npm start在自定义端口上启动服务器:
npm run start:port --port=8080在开发模式下运行并自动重新加载:
npm run devDocker支持
为不同架构构建Docker镜像:
# For ARM64
npm run build:docker:arm64
# For AMD64
npm run build:docker:amd64IBM云代码引擎部署
该项目包括部署到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:prodAPI终点
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许可证
国际学生委员会
贡献
欢迎投稿!请随时提交拉取请求。
