产品目录管理CLI工具

TMF620产品目录管理命令行工具,提供HTTP CLI API和MCP服务器接口,用于产品目录的发现、管理和测试。

  • by oopsyz
  • Python
  • 本地部署
  • 3 星标
  • 更新于

使用说明

TMF620命令行界面与MCP

此仓库通过两个接口公开TMF620命令层:

  • 用于渐进式发现的紧凑型HTTP CLI API
  • 这里用作基准测试和测试的参考表面的MCP服务器

文件索引: docs/README.md

发动机特定 oa引擎CLI over HTTP控制平面配置文件 保持在 oa_engine 知识库;此存储库拥有通用 CLI风格的HTTP协议。

存储库布局:

  • tmf620/ -TMF620模拟API、共享客户端、命令、服务器和基准测试
  • tests/ -pytest-discoverable包装器加上独立一致性、API和edge-case脚本
  • docs/ -长格式协议文档和指南
  • benchmarks/ -基准脚本和基准数据
  • scripts/ -回购入口点脚本
  • specs/ -源代码OpenAPI和协议规范
  • tmf620/config/ -TMF620运行时配置文件
  • DOMAIN.md / AGENTS.md -回购级合约和代理指令
  • tmf620/config/config.json -规范运行时数据和配置

TMF620示例实现保存在服务本地文件夹中,因此可以独立于其他系统进行部署。

对于一次只需要一个命令分支的代理,CLI API是更便宜的发现路径。这里保留MCP服务器作为发现有效载荷、工具列表大小和延迟测量的比较点。

保持两者的实际原因是:

  • 紧凑型发现:代理可以从 GET /cli/tmf620/catalogmgt 而不是预先获取完整的MCP工具列表
  • 渐进式帮助:代理可以一次扩展一个命令分支 help
  • 更强的MCP契约:MCP工具现在公开显式模式,而不是通用模式 args 物体
  • 更简单的自动化: curl 对人类和代理都很有效,尤其是在命令界面已经结构化的情况下
  • 一个共享的命令层:相同的命令定义支持HTTP CLI API、MCP参考表面和基准

TMF620产品目录管理,分为三层:

  • 模拟TMF620 API
  • 共享Python客户端
  • 客户端上的两个适配器:HTTP CLI API和MCP

这将操作逻辑保持在一个地方,同时通过相同的TMF620命令集支持HTTP和MCP适配器。

请求路径:

  • HTTP CLI API-> tmf620/server.py -> tmf620/commands.py -> tmf620/core.py ->TMF620 API
  • MCP客户端-> tmf620/server.py -> tmf620/core.py ->TMF620 API

组件

1.模拟TMF620 API

文件: tmf620/mock_api.py

  • 基于FastAPI的TMF620模拟服务器
  • 示例目录、产品和规格
  • Swagger文档

2.共享TMF620客户端

文件: tmf620/core.py

  • 配置加载
  • HTTP请求处理
  • 健康检查
  • TMF620资源的通用CRUD帮助程序
  • 目录、类别、产品、价格、规格、进出口作业和枢纽运营

3.共享命令层

文件: tmf620/commands.py

  • 规范TMF620命令注册表
  • 机器可读的发现/帮助有效载荷
  • shell和HTTP适配器共享的结构化命令调用

4.MCP+HTTP CLI适配器

文件: tmf620/server.py

  • FastAPI+官方MCP SDK(FastMCP)
  • 暴露 /cli/tmf620/catalogmgt 作为主要的HTTP CLI端点
  • 保持 /cli 和 /api/cli 作为兼容性别名
  • 公开用于基准测试和测试覆盖率的显式MCP工具
  • 将HTTP CLI请求委托给 tmf620/commands.py
  • 将MCP工具委托到共享命令层

为模拟API+MCP服务器使用TMF620组合文件。

docker compose -f docker-compose.yml up --build

TMF620堆栈公开了:

  • 模拟API http://localhost:8801/tmf-api/productCatalogManagement/v5
  • MCP运输 http://localhost:7701/mcp
  • 位于的HTTP CLI API http://localhost:7701/cli/tmf620/catalogmgt

容器使用环境重写,而不是重写配置文件。在匹配的撰写文件中设置它们,或使用 .env 使用Docker Compose编写文件:

  • TMF620_API_URL

没有Docker

使用此路径进行本地开发 uv.

安装依赖项

uv sync

启动模拟API

uv run tmf620-mock-server

使用HTTP CLI API

curl http://localhost:7701/cli/tmf620/catalogmgt
curl "http://localhost:7701/cli/tmf620/catalogmgt?verbose=true"
curl -X POST http://localhost:7701/cli/tmf620/catalogmgt \
  -H "Content-Type: application/json" \
  -d '{"command":"help","args":{"command":"offering patch"}}'
curl -X POST http://localhost:7701/cli/tmf620/catalogmgt \
  -H "Content-Type: application/json" \
  -d '{"command":"catalog list","args":{"lifecycle_status":"Active","limit":5}}'

启动MCP服务器

uv run tmf620-mcp-server

默认MCP服务器URL:

http://localhost:7701

配置

tmf620/config/config.json 由HTTP CLI API和MCP服务器使用:

{
  "mcp_server": {
    "host": "localhost",
    "port": 7701,
    "name": "TMF620 Product Catalog API"
  },
  "tmf620_api": {
    "url": "http://localhost:8801/tmf-api/productCatalogManagement/v5"
  }
}

环境变量在运行时覆盖文件值:

  • TMF620_API_URL

您还可以用以下命令覆盖配置路径 TMF620_CONFIG_PATH.

HTTP CLI命令

# Discovery
curl http://localhost:7701/cli/tmf620/catalogmgt
curl "http://localhost:7701/cli/tmf620/catalogmgt?verbose=true"
curl -X POST http://localhost:7701/cli/tmf620/catalogmgt \
  -H "Content-Type: application/json" \
  -d '{"command":"help","args":{"command":"offering"}}'

# Read/list commands
curl -X POST http://localhost:7701/cli/tmf620/catalogmgt \
  -H "Content-Type: application/json" \
  -d '{"command":"catalog list","args":{"limit":5}}'
curl -X POST http://localhost:7701/cli/tmf620/catalogmgt \
  -H "Content-Type: application/json" \
  -d '{"command":"catalog list","args":{"lifecycle_status":"Active","limit":5}}'

# Create/patch commands use JSON bodies because TMF620 resource payloads are wide
curl -X POST http://localhost:7701/cli/tmf620/catalogmgt \
  -H "Content-Type: application/json" \
  -d '{"command":"catalog create","args":{"body":{"name":"Business Catalog","lifecycleStatus":"Active"}}}'

MCP使用

Claude桌面配置示例:

{
  "mcpServers": {
    "tmf620-mcp": {
      "command": "uv",
      "args": ["run", "tmf620-mcp-server"],
      "cwd": "/path/to/tmf620-mcp-server"
    }
  }
}

可用的MCP工具:

  • tmf620_health
  • tmf620_config
  • tmf620_discover
  • 每个叶子命令一个显式工具 tmf620/commands.py

测试

# Mock API
curl http://localhost:8801/tmf-api/productCatalogManagement/v5/productCatalog

# HTTP CLI API
curl http://localhost:7701/cli/tmf620/catalogmgt
curl -X POST http://localhost:7701/cli/tmf620/catalogmgt -H "Content-Type: application/json" -d '{"command":"catalog list","args":{}}'

# MCP server
curl http://localhost:7701/health

# Pytest suite
pytest tests

代币基准

使用内置基准测试来测量实时MCP工具有效负载以及紧凑的HTTP CLI发现流:

uv run tmf620-benchmark token
uv run tmf620-benchmark token --output json

延迟基准

当您希望请求到应答的计时,而不仅仅是调用计时时,请使用延迟基准:

uv run tmf620-benchmark latency 30 --warmup 1

包装

控制台脚本由以下人员公开 pyproject.toml:

  • tmf620-mock-server
  • tmf620-mcp-server
  • tmf620-benchmark