Skip to content

v0.5.1 — MCP Server[fix]

Latest

Choose a tag to compare

@sin1111yi sin1111yi released this 01 Jun 06:27

v0.5.1 — MCP Server[fix]

✨ New: MCP Server (ralqlator-mcp)

ralqlator 现在自带一个 Model Context Protocol (MCP) 服务器,将其所有的计算能力以工具的形式开放给 AI 助手。

# 启动 MCP 服务器(stdio 传输)
ralqlator-mcp

服务器通过标准输入/输出读写 JSON-RPC 2.0 格式的请求和响应,每行一条。

可用工具

工具 描述
calculate 数学表达式求值,支持精确有理数运算和所有内置函数。可选 format 参数(decimal / hex / oct / bin)
calculate_bitwise 位运算表达式求值(仅整数)。可选 format 参数
list_functions 列出所有 50+ 个内置数学函数及其说明
list_constants 列出内置常量(C_PI, C_E)和用户自定义常量
list_user_definitions 列出所有用户自定义函数、序列和常量
create_user_definition 创建用户自定义函数、序列或常量
delete_user_definition 按名称删除用户自定义定义
list_operators 列出所有支持的运算符及其描述和优先级

调用示例

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"calculate","arguments":{"expression":"sin(C_PI/2)"}}}
{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"1"}]}}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"calculate","arguments":{"expression":"255","format":"hex"}}}
{"jsonrpc":"2.0","id":2,"result":{"content":[{"type":"text","text":"0xFF"}]}}

用户定义管理:

{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"create_user_definition","arguments":{"name":"double","type":"function","expression_or_value":"x*2","params":["x"]}}}
{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"calculate","arguments":{"expression":"double(21)"}}}
{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"delete_user_definition","arguments":{"name":"double"}}}

🔧 技术细节

  • 纯 JSON-RPC 2.0 实现:无 MCP SDK 依赖,仅使用已有的 serde + 新增 serde_json
  • 复用现有 API:MCP 服务器直接调用 calculator::calculate_with_functions()calculator::calculate_bitwise(),与 CLI 使用同一套计算引擎
  • 用户自定义数据:自动从 ~/.ralqlator 加载用户自定义函数和常量
  • 标准错误码:JSON-RPC 约定的错误码(parse error -32700、invalid params -32602、method not found -32601 等)

📦 新增文件

文件 说明
src/mcp.rs MCP 协议层——类型定义、5个工具处理器(~600行)
src/bin/ralqlator_mcp.rs 二进制入口——stdio JSON 读取/写入循环
docs/mcp-architecture.md 架构设计文档

⚙️ 构建

cargo build --release --bin ralqlator-mcp

二进制文件在 target/release/ralqlator_mcp(注意文件名中为下划线)。

🧪 测试

  • 5 个库单元测试全部通过
  • MCP 功能测试 12/12 全部通过(覆盖计算、位运算、格式输出、用户定义 CRUD、运算符列表、错误处理等场景)

💬 其他改动

  • = 运算符的返回值从 yes/no 改为 true/false(与 == 保持一致)