返回市场
ibmi-mcp服务器

ibmi-mcp服务器

作者:FanMnz2 星标更新:2025-08-10

项目介绍

IBM i MCP 服务器

一个模型上下文协议(MCP)服务器,使AI助手能够与IBM i AS/400源成员进行交互,提供无缝集成以管理源代码、编译和开发工作流程。

🚀 特性

  • 🔗 IBM i 集成: 连接到IBM i AS/400系统
  • 📂 源成员管理: 读取、写入、列出和管理源成员
  • 🔧 编译支持: 编译RPG、DDS和其他源类型
  • 🏷️ 自动源标记: 对所有修改应用源标记“5719A”
  • 🌐 MCP 协议: 完全符合模型上下文协议
  • 🎯 AI 助手准备: 直接集成ChatGPT、Claude和其他AI工具

📋 目录

⚡ 快速开始

1. 安装依赖

git clone https://github.com/[your-username]/ibmi-mcp-server.git
cd ibmi-mcp-server
npm install

2. 构建服务器

npm run build

3. 测试安装

npm test

4. 配置MCP客户端

在您的MCP客户端配置中添加以下内容:

{
  "mcpServers": {
    "ibmi-mcp-server": {
      "command": "node",
      "args": ["path/to/ibmi-mcp-server/build/index.js"]
    }
  }
}

5. 开始使用

连接到您的IBM i系统并通过您的AI助手开始管理源成员!

🛠 安装

先决条件

  • Node.js 1.8.0或更高版本
  • npm(随Node.js一起提供)
  • 访问IBM i AS/400系统
  • 兼容MCP的AI助手或客户端

本地开发设置

# 克隆仓库
git clone https://github.com/[your-username]/ibmi-mcp-server.git
cd ibmi-mcp-server

# 安装依赖
npm install

# 构建项目
npm run build

# 运行测试
npm test

# 启动开发模式(自动重载)
npm run dev

生产部署

# 安装生产依赖
npm ci --production

# 构建生产环境
npm run build

# 启动服务器
npm start

⚙️ 配置

环境变量

在项目根目录创建一个.env文件:

# 默认IBM i连接设置
DEFAULT_IBMI_HOST=your-ibmi-system.com
DEFAULT_IBMI_USER=your-username
DEFAULT_LIBRARY=QGPL
DEFAULT_SOURCE_FILE=QRPGLESRC

# 开发设置
NODE_ENV=development
DEBUG=false

MCP客户端集成

对于带有MCP扩展的VS Code

在您的VS Code设置或MCP配置文件中添加以下内容:

{
  "mcpServers": {
    "ibmi-mcp-server": {
      "command": "node",
      "args": ["C:\\path\\to\\ibmi-mcp-server\\build\\index.js"],
      "env": {
        "NODE_ENV": "production"
      }
    }
  }
}

对于Claude桌面版

claude_desktop_config.json中添加以下内容:

{
  “mcpServers”: {
    “ibmi”: {
      “command”: “node”,
      “args”: [“path/to/ibmi-mcp-server/build/index.js”]
    }
  }
}

🔧 工具参考

connect_ibmi

连接到IBM i AS/400系统。

参数:

  • host (字符串,必需): IBM i系统主机名或IP
  • user (字符串,必需): 用户配置文件名
  • password (字符串,可选): 密码
  • port (数字,默认值: 23): 连接端口
  • library (字符串,默认值: "QGPL"): 默认库
  • sourceFile (字符串,默认值: "QRPGLESRC"): 默认源文件

示例:

{
  "host": "ibmi-system.company.com",
  "user": "DEVELOPER",
  "library": "MYLIB",
  "sourceFile": "QRPGLESRC"
}

list_source_members

列出源成员,可选过滤。

参数:

  • library (字符串,可选): 库名
  • sourceFile (字符串,可选): 源物理文件名
  • member (字符串,可选): 成员名模式
  • type (字符串,可选): 源类型过滤器(RPGLE, DSPF等)

示例:

{
  "library": "MYLIB",
  "sourceFile": "QRPGLESRC",
  "type": "RPGLE"
}

read_source_member

读取源成员内容,可选行范围。

参数:

  • member (字符串,必需): 源成员名
  • library (字符串,可选): 库名
  • sourceFile (字符串,可选): 源文件名
  • startLine (数字,可选): 起始行号
  • endLine (数字,可选): 结束行号

示例:

{
  "member": "MYPROG",
  "startLine": 1,
  "endLine": 100
}

write_source_member

写入或更新源成员,并自动应用“5719A”源标记。

参数:

  • member (字符串,必需): 源成员名
  • content (字符串,必需): 源成员内容
  • library (字符串,可选): 库名
  • sourceFile (字符串,可选): 源文件名
  • sourceType (字符串,可选): 源类型(RPGLE, DSPF等)
  • description (字符串,可选): 成员描述

示例:

{
  "member": "MYPROG",
  "content": "// RPG代码在这里...",
  "sourceType": "RPGLE",
  "description": "由AI助手更新"
}

compile_source_member

编译源成员。

参数:

  • member (字符串,必需): 源成员名
  • library (字符串,可选): 库名
  • sourceFile (字符串,可选): 源文件名
  • sourceType (字符串,可选): 源类型
  • options (字符串,可选): 编译选项

示例:

{
  "member": "MYPROG",
  "sourceType": "RPGLE",
  "options": "OPTION(*EVENTF)"
}

📚 资源

源成员资源

通过URI模板访问IBM i源成员作为MCP资源:

URI模式: ibmi://source/{library}/{sourceFile}/{member}

示例:

  • ibmi://source/MYLIB/QRPGLESRC/MYPROG
  • ibmi://source/TESTLIB/QDDSSRC/MYDSPF
  • ibmi://source/PRODLIB/QCPYSRC/MYCPY

💡 示例

示例1:连接并列出成员

// 连接到IBM i
await callTool("connect_ibmi", {
  host: "ibmi-system.company.com",
  user: "DEVELOPER",
  library: "MYLIB"
});

// 列出RPG源成员
const members = await callTool("list_source_members", {
  type: "RPGLE"
});

示例2:读取并修改源

// 读取现有源成员
const source = await callTool("read_source_member", {
  member: "MYPROG"
});

// 修改源(添加您的更改)
const updatedSource = source.content + "\n// 由AI助手添加";

// 写回并自动应用源标记
await callTool("write_source_member", {
  member: "MYPROG",
  content: updatedSource,
  sourceType: "RPGLE",
  description: "由AI增强"
});

示例3:编译并检查结果

// 编译源成员
const compileResult = await callTool("compile_source_member", {
  member: "MYPROG",
  sourceType: "RPGLE"
});

console.log("编译:", compileResult.success ? "成功" : "失败");

示例4:使用资源

// 将源成员作为资源访问
const resource = await readResource("ibmi://source/MYLIB/QRPGLESRC/MYPROG");
console.log("源内容:", resource.contents[0].text);

🏗 开发

开发脚本

# 启动开发模式(自动重载)
npm run dev

# 构建项目
npm run build

# 启动服务器
npm start

# 运行测试
npm test

# 代码检查
npm run lint

# 打开MCP检查器(如果已安装)
npm run inspector

添加新工具

  1. src/index.ts中定义工具:
server.registerTool(
  "my_new_tool",
  {
    description: "描述该工具的功能",
    inputSchema: {
      parameter1: z.string().describe("参数描述"),
      parameter2: z.number().optional().describe("可选参数"),
    },
  },
  async ({ parameter1, parameter2 }) => {
    // 工具实现
    return {
      content: [
        {
          type: "text",
          text: `结果: ${parameter1}`,
        },
      ],
    };
  }
);
  1. 构建并测试:
npm run build
npm test

VS Code开发

该项目包括用于调试的VS Code配置:

  1. 在VS Code中打开项目
  2. 在源代码中设置断点
  3. 按F5启动调试
  4. 使用调试控制台与服务器交互

🔒 安全注意事项

  • 永远不要将凭据提交到版本控制系统
  • 使用环境变量来存储敏感配置
  • 实施适当的IBM i用户权限
  • 验证所有输入参数
  • 使用安全的连接方法访问IBM i

📄 源标记

所有源修改都会自动接收“5719A”源标记:

  • RPG源: 标记应用于位置75+
  • DDS源: 标记应用于位置81+
  • 其他源: 标记根据源类型应用于适当位置

这确保了符合源标记标准并跟踪AI辅助修改。

🐛 故障排除

常见问题

构建失败,出现模块错误:

npm install
npm run build

服务器无法连接到IBM i:

  • 检查主机/端口设置
  • 验证用户凭据
  • 确保网络连接

源标记问题:

  • 源标记“5719A”会自动应用
  • 检查您源类型的行长度限制

MCP客户端连接问题:

  • 验证正确的路径到build/index.js
  • 检查Node.js版本(需要18.0.0+)
  • 确保服务器构建成功

调试模式

使用详细日志运行:

DEBUG=* npm start

获取帮助

🤝 贡献

我们欢迎贡献!请参阅我们的贡献指南了解详情。

快速贡献步骤

  1. 分叉仓库
  2. 创建功能分支: git checkout -b feature/amazing-feature
  3. 进行您的更改
  4. 如有必要,请添加测试
  5. 运行质量检查: npm run lint && npm test
  6. 提交更改: git commit -m "添加精彩功能"
  7. 推送到分支: git push origin feature/amazing-feature
  8. 打开拉取请求

📜 许可

此项目采用MIT许可 - 详见LICENSE文件。

🙏 致谢

  • 模型上下文协议团队提供的优秀SDK
  • IBM i社区提供的灵感和需求
  • VS CodeTypeScript团队提供的出色开发工具

🌟 星标历史

如果这个项目对您有帮助,请考虑给它一个星标!⭐


为IBM i社区打造,充满爱心

让您的AI助手直接与IBM i AS/400源成员交互,同时保持专业源标记标准。