数据查询服务器

轻量级MCP服务器,用于通过Data Fabric SQL查询Infor Data Lake,提供SQL查询执行、数据目录浏览和ION API发现功能。

  • by douglaslinsmeyer
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 douglaslinsmeyer/infor-ion-mcp-lite

使用说明

Infor数据结构MCP服务器

一个轻量级的MCP(模型上下文协议)服务器,用于通过数据结构SQL查询Infor数据湖。此精简版本专门关注Data Fabric功能,为SQL查询执行、数据目录浏览和ION API发现提供了22种专用工具。

备注:这是轻量级版本。有关完整的M3 API程序访问和商业智能工具,请参阅 @douglaslismeyer/info-mcp服务器.

特性

  • 📊 7数据结构工具:使用自动验证对Infor Data Lake执行SQL查询
  • 📚 3数据目录工具:从数据湖中浏览表、字段和元数据
  • 🔍 6 ION API工具:了解API套件、产品和操作
  • 📦 6块管理工具:处理超过MCP令牌限制的大型查询结果
  • ✅ 查询验证:根据数据目录元数据自动验证
  • 🔧 删除列修复:针对“已删除”列字符串类型问题的内置更正
  • ⚡ 响应分块:对100000多条记录的结果进行自动分块
  • 🔐 OAuth 2.0身份验证:使用Infor.ionapi密钥格式进行安全身份验证

安装

使用npx(推荐)

无需安装!直接使用npx运行:

npx @douglaslinsmeyer/infor-datafabric-mcp

本地安装

npm install -g @douglaslinsmeyer/infor-datafabric-mcp

来源

git clone https://github.com/douglaslinsmeyer/infor-ion-mcp-lite.git
cd infor-ion-mcp-lite
npm install
npm run build

快速开始

先决条件

  1. 信息API密钥:你需要一个 .ionapi 来自Infor ION API设置的文件
  2. Node.js:版本18或更高版本

Claude桌面设置

Claude Desktop将MCP配置存储在:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json

编辑配置文件并添加:

{
  "mcpServers": {
    "infor-datafabric": {
      "command": "npx",
      "args": ["-y", "@douglaslinsmeyer/infor-datafabric-mcp"],
      "env": {
        "IONAPI_KEY": "{\"ti\":\"YOUR_TENANT_ID\",\"cn\":\"Connection Name\",\"ci\":\"YOUR_CLIENT_ID\",\"cs\":\"YOUR_CLIENT_SECRET\",\"iu\":\"https://your-ionapi.inforcloudsuite.com\",\"pu\":\"https://your-sso.inforcloudsuite.com/tenant/as/\",\"oa\":\"authorization.oauth2\",\"ot\":\"token.oauth2\",\"or\":\"revoke_token.oauth2\",\"sc\":[\"Infor-ION\"],\"v\":\"1.1\",\"saak\":\"YOUR_SAAK\",\"sask\":\"YOUR_SASK\"}"
      }
    }
  }
}

备注:IONAPI_KEY必须是带转义引号的单行JSON字符串。

Claude代码设置

# Using .ionapi file
claude mcp add infor-datafabric \
  -e IONAPI_KEY="$(cat /path/to/your.ionapi)" \
  -- npx -y @douglaslinsmeyer/infor-datafabric-mcp

# Or using individual environment variables
claude mcp add infor-datafabric \
  -e INFOR_TENANT_ID="YOUR_TENANT" \
  -e INFOR_CLIENT_ID="YOUR_CLIENT_ID" \
  -e INFOR_CLIENT_SECRET="YOUR_SECRET" \
  -e INFOR_ION_BASE_URL="https://your-ionapi.com" \
  -e INFOR_OAUTH_URL="https://your-sso.com/tenant/as/" \
  -e INFOR_SAAK="YOUR_SAAK" \
  -e INFOR_SASK="YOUR_SASK" \
  -- npx -y @douglaslinsmeyer/infor-datafabric-mcp

配置后,重新启动Claude Desktop或Claude Code。

可用工具(共22个)

数据结构工具(7)

工具 说明
datafabric_ping 检查数据结构服务可用性
datafabric_build_query 使用经过验证的表/列名构建SQL查询
datafabric_submit_query 将原始SQL提交到Data Lake执行
datafabric_query_status 检查正在运行的查询的执行状态
datafabric_get_results 使用分页获取已完成的查询结果
datafabric_cancel_query 取消正在运行的数据结构查询
datafabric_execute_query 通过自动轮询端到端执行查询

数据目录工具(3)

工具 说明
datacatalog_list_tables 列出Data Lake中的所有可用表
datacatalog_get_table_info 获取特定表的详细元数据
datacatalog_find_tables_with_field 查找包含特定字段名的表

ION API元数据工具(6)

工具 说明
ion_api_suites 在Infor租户中发现可用的API套件
ion_api_suite_details 获取有关特定API套件的详细信息
ion_products 在Infor租户中查找可用产品
ion_operation_search 搜索API产品运营
ion_api_swagger 获取特定程序的Swagger JSON URL
force_refresh_token 强制刷新OAuth身份验证令牌

区块管理工具(6)

工具 说明
mcp_response_chunk 检索存储的响应的特定块
mcp_stored_responses 列出当前存储的所有大型响应
mcp_response_summary 获取有关存储响应的摘要信息
mcp_delete_response 删除已存储的响应以释放内存
mcp_storage_stats 获取有关响应存储使用情况的统计信息
mcp_server_version 获取当前版本和构建信息

用法示例

示例1:执行简单查询

// Query customer orders from Data Lake
await datafabric_execute_query({
  query: "SELECT OKCONO, OKORNO, OKCUNO, OKDIVI FROM OOLINE WHERE deleted = '0' LIMIT 100"
})

示例2:构建已验证的查询

// Build query with automatic table/field validation
await datafabric_build_query({
  tables: ["OOLINE"],
  fields: ["OKCONO", "OKORNO", "OKCUNO", "OKDIVI"],
  conditions: ["deleted = '0'"],
  limit: 100
})

示例3:浏览可用表

// List all tables with "ORDER" in the name
await datacatalog_list_tables({
  searchPattern: "ORDER"
})

示例4:获取表架构

// Get detailed schema for OOLINE table
await datacatalog_get_table_info({
  tableName: "OOLINE"
})

示例5:处理大型结果

// Execute query that returns 10,000+ records
const result = await datafabric_execute_query({
  query: "SELECT * FROM OOLINE WHERE deleted = '0'",
  records: 50000
})

// If response is too large, it will be automatically chunked
// Use mcp_response_chunk to retrieve specific chunks
await mcp_response_chunk({
  responseId: "abc123",
  chunkIndex: 0
})

环境变量

身份验证变量

变量 描述 必填
IONAPI_KEY 以字符串形式完成.ionapi JSON内容 是*
INFOR_TENANT_ID Infor租户标识符 是**
INFOR_CLIENT_ID OAuth客户端ID 是**
INFOR_CLIENT_SECRET OAuth客户端机密 是**
INFOR_ION_BASE_URL ION API基础URL 是**
INFOR_OAUTH_URL OAuth令牌端点URL 是**
INFOR_SAAK 服务帐户访问密钥 可选
INFOR_SASK 服务帐户密钥 可选

*如果不使用单个变量,则需要 **如果不使用IONAPI_KEY,则需要

数据结构变量

变量 描述 默认值
INFOR_DATAFABRIC_MAX_RECORDS 查询的最大记录数 10000
INFOR_DATAFABRIC_TIMEOUT 查询超时(毫秒) 300000

重要说明

关键:“已删除”列数据类型

Infor数据结构文档错误地指出“已删除”列是布尔值。

实际数据类型:字符串值 '0' (虚假)或 '1' (真)

-- ✅ CORRECT
SELECT * FROM OOLINE WHERE deleted = '0'

-- ❌ INCORRECT
SELECT * FROM OOLINE WHERE deleted = false

MCP服务器会自动纠正此错误并提供警告。

数据目录元数据缓存

  • 表架构在本地缓存在 datacatalog-metadata.json
  • 使用更新缓存 npm run fetch-metadata 当数据湖模式更改时
  • 查询验证可防止常见的SQL错误和拼写错误
  • 缓存包含在npm包中,并致力于版本控制

响应分块

大型查询结果(>100KB或>50条记录)会自动分块:

  • 存储了超过20000个令牌以供检索
  • 每个块显示带有导航指令的“Y块X”
  • 使用 mcp_response_chunk 检索特定块
  • 存储的响应将在30分钟后过期

在完整版和精简版之间进行选择

功能 信息mcp服务器(完整) 信息数据结构mcp(精简版)
数据结构查询 ✅ ✅
数据目录 ✅ ✅
ION API元数据 ✅ ✅
响应分块 ✅ ✅
M3 API程序 ✅ ❌
商业智能 ✅ ❌
架构验证 ✅ ❌
安全模式 ✅ ❌
会话管理 ✅ ❌
工具总数 82 22
封装大小 ~8MB ~5MB

如果满足以下条件,请使用Lite版本:

  • 您只需要数据湖/数据结构查询
  • 你想要更快的启动速度和更小的占地面积
  • 您不需要M3 API程序访问权限

如果满足以下条件,请使用完整版:

  • 您需要M3 API程序(CRS610MI、MMS20MI等)
  • 你想要商业智能工具
  • 您需要对M3 API进行模式验证

发展

# Run in development mode
npm run dev

# Run tests
npm test
npm run test:watch
npm run test:coverage

# Build
npm run build

# Update Data Catalog metadata
npm run fetch-metadata

# Type checking
npm run typecheck

发布过程

此包在推送版本标签时使用自动CD发布到npm。

发布新版本

  1. 确保所有更改都已提交并推送到主

    git status  # Verify clean working directory
    
  2. 创建并推送版本标签

    # For a patch release (bug fixes)
    git tag v1.0.1
    
    # For a minor release (new features, backward compatible)
    git tag v1.1.0
    
    # For a major release (breaking changes)
    git tag v2.0.0
    
    # For pre-release versions
    git tag v1.1.0-beta.1
    
    # Push the tag to trigger CD pipeline
    git push origin v1.0.1
    
  3. 自动化工作流程

    • 从标记名称中提取版本
    • 运行测试并构建包
    • 更新package.json版本
    • 根据提交消息生成更改日志
    • 使用changelog创建GitHub版本
    • 发布到npmjs.com
  4. 验证发布

    # Check npm package
    npm view @douglaslinsmeyer/infor-datafabric-mcp
    
    # Test installation
    npx @douglaslinsmeyer/infor-datafabric-mcp@latest --version
    
    # View GitHub release
    gh release view v1.0.1
    

提交消息约定

为了获得最佳的变更日志生成,请遵循以下步骤 约定式提交:

  • feat: -新功能(触发小版本升级)
  • fix: -Bug修复(触发补丁版本升级)
  • docs: -仅文档更改
  • chore: -维护任务、依赖关系更新
  • refactor: -不更改功能的代码重构
  • test: -添加或更新测试
  • perf: -性能改进
  • BREAKING CHANGE: -重大更改(触发主要版本升级)

例子:

git commit -m "feat: add query timeout configuration"
git commit -m "fix: correct deleted column boolean handling in query builder"
git commit -m "docs: update Data Fabric query examples in README"
git commit -m "chore: bump axios to 1.12.0"

回滚策略

如果已发布的版本存在关键问题:

  1. 弃用有问题的版本

    npm deprecate @douglaslinsmeyer/infor-datafabric-mcp@1.0.1 "Critical bug in query execution, use 1.0.2 instead"
    
  2. 发布固定版本

    git tag v1.0.2
    git push origin v1.0.2
    
  3. 可选择删除GitHub版本

    gh release delete v1.0.1 --yes
    git tag -d v1.0.1
    git push --delete origin v1.0.1
    

版本号

跟随 语义化版本:

  • 重大 (X.0.0)-中断更改,不兼容的API更改
  • 次要的 (1.X.0)-新功能,向后兼容
  • 补丁 (1.0.X)-错误修复,向后兼容

故障排除

常见问题

“OAuth客户端未初始化”

  • 确保您的IONAPI_KEY格式正确
  • 检查是否存在所有必填字段

连接超时

  • 验证您的ION API URL是否可访问
  • 检查防火墙/代理设置

查询错误

  • 使用数据目录工具验证表和字段名称
  • 记住:“deleted”列需要字符串值(“0”或“1”)
  • 对照Infor数据结构文档检查查询语法

大结果处理

  • 如果查询超时,请减少 records 参数
  • 对大于10000条记录的结果使用分块
  • 存储的响应将在30分钟后过期

安全考虑

  • 安全存储ION API证书
  • 切勿将.ionapi文件提交到版本控制
  • 对敏感数据使用环境变量
  • 数据结构查询本质上是只读的

贡献

欢迎投稿!拜托:

  1. 克隆该仓库
  2. 创建要素分支
  3. 为新功能编写测试
  4. 确保所有测试通过
  5. 提交拉取请求

许可证

麻省理工学院

支持

  • GitHub问题:https://github.com/douglaslinsmeyer/infor-ion-mcp-lite/issues
  • 完整版本:https://github.com/douglaslinsmeyer/infor-ion-mcp
  • Infor ION API文档:可在您的Infor门户网站中获得

正在寻找具有M3 API访问权限的全功能版本? 结账 @douglaslismeyer/info-mcp服务器