MCP_SERVER.md 3.7 KB

MCP 服务器文档

IJS 内置 MCP (Model Context Protocol) 服务器,可将 Symja 符号计算能力暴露给 AI 客户端(如 Claude Desktop)。

快速开始

  1. 打开应用,MCP 服务器默认自动启动(端口 8734)
  2. 在 Claude Desktop 配置中添加:

    {
    "mcpServers": {
    "ijs": {
      "url": "http://127.0.0.1:8734/mcp"
    }
    }
    }
    
  3. 如果 Claude Desktop 和 IJS 不在同一台设备,先通过 adb 转发:

    adb forward tcp:8734 tcp:8734
    
  4. 顶部状态灯变绿表示服务器运行中,灰色表示未启动

工具列表

核心计算

工具 参数 示例
evaluate expression "2+2"
differentiate expression, variable "x^3", "x"
integrate expression, variable, lower?, upper? "x^2", "x", "0", "1"
solve equation, variable "x^2-5*x+6==0", "x"
simplify expression "Sin[x]^2+Cos[x]^2"
numeric expression, precision? "Pi", "50"
to_latex expression "x^2+2*x+1"

绘图

工具 参数 示例
plot function, variable, x_min, x_max "Sin[x]", "x", "0", "2*Pi"
parametric_plot x_func, y_func, t_var, t_min, t_max "2*Cos[t]", "2*Sin[t]", "t", "0", "2*Pi"
list_plot points "{{1,1},{2,4},{3,9}}"

绘图工具返回结构化 JSON,包含 Line/Point 点序列和颜色。控制台自动 Canvas 渲染。

插件管理

工具 参数 说明
list_plugins — 列出所有已安装插件
get_plugin plugin_id 获取插件详情及 JS 代码
create_plugin id, name, js_code, icon?, command?, description?, inputs? 创建/更新插件
delete_plugin plugin_id 删除插件
execute_plugin plugin_id, arguments? 执行插件并返回结果

资源

URI 内容
variables://current 当前 Symja 会话中已定义的变量
history://recent 最近通过 MCP 执行的计算历史

响应格式

所有绘图操作返回结构化 JSON:

{
  "type": "plot",
  "elements": [
    {
      "type": "line",
      "color": [0.368, 0.507, 0.710],
      "points": [[0.0, 0.0], [0.1, 0.0998], ...]
    }
  ],
  "options": {"axes": true}
}

工具调用错误时,result.isError 为 true。

插件开发

MCP 可通过 create_plugin 工具远程创建插件。插件 JS 代码中可使用完整的 Symja API:

function calculate(inputs, Symja) {
  Symja.print('计算中...');
  return Symja.eval('Integrate[' + inputs.func + ', ' + inputs.var + ']');
}

可用 API:eval, print, differentiate, integrate, solve, simplify, expand, factor, plot, parametricPlot, listPlot, numeric, toTeX, gcd, lcm, isPrime, fibonacci, binomial, sum, product, limit, 及矩阵运算。

架构

Claude Desktop ──HTTP──▶ 127.0.0.1:8734/mcp
                              │
                    NanoHTTPd (McpServer.java)
                              │
                    JSON-RPC 2.0 dispatch
                              │
              ┌───────────────┼───────────────┐
              ▼               ▼               ▼
        SymjaEngine    PluginManager    Rhino JS
        (数学计算)      (插件管理)     (插件执行)
              │
              ▼
        AppSession (共享会话 + MCP事件队列)
              │
              ▼
        WebView 控制台 (实时同步显示)

安全

  • 仅监听 127.0.0.1,不对外暴露
  • 无认证(信任本地环境,与主流 MCP 实现一致)
  • 可在设置面板关闭 MCP 服务器