项目简介

OpenIntent (OIML) MCP 服务端是一个基于 Model Context Protocol (MCP) 构建的后端服务,专注于为大型语言模型 (LLM) 客户端提供结构化上下文和工具。它通过托管和管理 OIML 意图文件和项目配置的模式定义,并提供相应的验证和加载工具,确保 AI 代理在代码生成和开发过程中使用一致、可审计的标准。

主要功能点

  • 意图文件验证: 验证 OIML 意图文件('.oiml.yaml'),确保其符合 OpenIntent 规范,帮助 AI 代理理解开发需求。
  • 项目配置验证: 验证 'project.yaml' 项目配置文件,确保其符合项目模式定义,为 AI 代理提供项目环境的准确信息。
  • 项目配置加载: 加载并解析 'project.yaml' 文件,将项目元数据(如框架、路径、数据库配置)提供给 AI 代理。
  • 模式缓存管理: 管理 OIML 模式定义的本地缓存,支持列出、清除特定或所有缓存,确保验证工具的高效运行。
  • 标准化通信: 通过 JSON-RPC 协议与 LLM 客户端通信,以标准化的方式提供上下文信息和功能调用。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/openintent/oiml.git
    cd oiml
  2. 安装依赖:
    npm install # 或 pnpm install 或 yarn install
  3. 构建项目:
    npm run build # 或 pnpm build 或 yarn build
  4. 运行 MCP 服务器:
    npm start # 或 pnpm start 或 yarn start
    服务器默认运行在 'http://localhost:3000'。您可以通过设置 'PORT' 环境变量来更改端口。

服务器配置

MCP 客户端连接此服务器时,需要配置以下 JSON 格式信息。此配置假设 MCP 客户端将作为子进程启动该服务器并通过标准输入输出 (Stdio) 进行通信:

{
  "name": "oiml-mcp", // 服务器名称,建议保持一致
  "command": "node",   // 启动MCP服务器的命令
  "args": [            // 命令的参数
    "/path/to/your/oiml/repository/dist/mcp/src/server.js" // 请替换为 OIML 仓库下 MCP 服务端编译后的 JavaScript 文件的**绝对路径**。
  ],
  "transport": {
    "kind": "stdio"    // 默认通过 stdio 协议通信
  }
}

注意: 如果 MCP 客户端选择通过 HTTP/HTTPS 连接,则需要配置 'kind: "http"' 或 'kind: "https"',并提供相应的 'url'(例如 'http://localhost:3000/mcp')。

基本使用方法

一旦 MCP 服务器运行,LLM 客户端即可通过其提供的工具('validate_intent', 'validate_project', 'load_project', 'manage_schema_cache')与 OIML 意图和项目配置进行交互。

示例:验证意图文件 LLM 客户端可以调用 'validate_intent' 工具,将 OIML 意图文件的内容作为参数传入,以检查其有效性。

LLM 客户端调用示例 (逻辑示意):

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tool_code",
  "params": {
    "toolName": "validate_intent",
    "args": {
      "content": "version: 0.1.3\nintents:\n  - kind: add_entity\n    scope: data\n    entity: User\n    fields: [{ name: id, type: integer, required: true }]",
      "format": "yaml"
    }
  }
}

服务器将返回一个响应,指示意图文件是否有效以及任何验证错误。

示例:加载项目配置 LLM 客户端可以调用 'load_project' 工具来获取当前项目的 'project.yaml' 配置,从而了解项目的技术栈、文件路径等信息。

LLM 客户端调用示例 (逻辑示意):

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tool_code",
  "params": {
    "toolName": "load_project",
    "args": {} // 可选提供 project_path 参数
  }
}

服务器将返回包含项目配置解析后内容的响应。

信息

分类

开发者工具