Token导航 LogoToken导航TokenDH.com
Sap MCP Config logo
运维云端stdio官方级别未说明来源级核验

Sap MCP Config

MCP Server

用于管理SAP MCP服务器凭证的标准化工具,支持Go和Python语言,提供统一的配置文件格式和验证机制。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
Python多语言支持本地部署

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Hochfrequenz

提供方

Hochfrequenz

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install sap-mcp-config

详细介绍

sap mcp配置

Go Tests Go Coverage Go Lint ![Go Reference](https://pkg.go.dev/github.com/Hochfrequenz/sap-mcp-config) ![Go Report Card](https://goreportcard.com/report/github.com/Hochfrequenz/sap-mcp-config) Python Tests Python Coverage Python Lint Python Formatting

PyPI

管理MCP服务器SAP凭据的标准方法。

如果您正在构建连接到SAP的MCP服务器,请使用此软件包。它通过一个共享的配置文件,在Go和Python中为您提供经过验证的、类型安全的配置。不再需要重新设计凭据加载,项目之间不再有不一致的格式。

默认配置路径(~/.config/sap-mcp/systems.json)遵循 XDG基本目录规范.

特性

  • 一个配置文件,两种语言 --Go和Python读取相同的配置,由共享测试夹具保证
  • JSON和YAML --使用您喜欢的任何格式(由文件扩展名自动检测)
  • 热切验证 --报告 _全部_ 一次出错,因此用户可以一次性修复所有问题
  • 密码在打印/日志输出中永远不会泄漏 --蒙面 str()/repr()/fmt.Println()/fmt.Sprintf("%+v") (去: fmt.Formatterpython pydantic.SecretStr)
  • 加载后不可变 --Python中冻结的Pydantic模型;在Go中,将返回的结构体用作只读
  • .env 文件支持SAP_CONFIG_FILE 可以设置为 .env 文件
  • 易于扩展 --子类 SAPSystem 在Python中或在Go中嵌入结构以添加特定于项目的字段

MCP JSON配置

此软件包与 MCP JSON配置标准.通过将MCP服务器指向共享配置文件 SAP_CONFIG_FILE 环境变量:

{
  "mcpServers": {
    "sap-abap": {
      "command": "mcp-server-abap",
      "env": {
        "SAP_CONFIG_FILE": "/home/user/.config/sap-mcp/systems.json"
      }
    },
    "sap-webgui": {
      "command": "sapwebgui-mcp",
      "env": {
        "SAP_CONFIG_FILE": "/home/user/.config/sap-mcp/systems.json"
      }
    }
  }
}

两台服务器都读取 相同的配置文件 随着 相同的凭据 --没有重复。

安装

go get github.com/Hochfrequenz/sap-mcp-config

python

pip install sap-mcp-config

配置文件

创建 ~/.config/sap-mcp/systems.json (或 systems.yaml --格式由扩展自动检测):

JSON

{
  "default_system": "dev",
  "systems": {
    "dev": {
      "connection_name": "DEV - ERP Development",
      "host": "https://your-sap-system:44300",
      "client": "100",
      "user": "YOUR_USER",
      "password": "YOUR_PASSWORD",
      "language": "DE"
    },
    "prod": {
      "connection_name": "PROD - ERP Production",
      "host": "https://prod-sap:44300",
      "client": "200",
      "user": "PROD_USER",
      "password": "PROD_PASSWORD",
      "language": "EN"
    }
  }
}

YAML

default_system: dev
systems:
  dev:
    connection_name: "DEV - ERP Development"
    host: "https://your-sap-system:44300"
    client: "100"
    user: YOUR_USER
    password: YOUR_PASSWORD
    language: DE
  prod:
    connection_name: "PROD - ERP Production"
    host: "https://prod-sap:44300"
    client: "200"
    user: PROD_USER
    password: PROD_PASSWORD
    language: EN

通过以下方式覆盖配置文件位置 SAP_CONFIG_FILE 环境变量:

export SAP_CONFIG_FILE=/path/to/my/config.yaml

这也适用于a .env 当前目录中的文件。

领域

字段类型必填默认描述
connection_namestring""SAP登录连接条目名称--必须与 粗体描述文本 显示在SAP登录板上,而不是系统ID(SID)。由桌面后端(如SAP GUI)使用,以打开正确的连接。
hoststringyesSAP系统基本URL(必须以开头 http://https://)
clientstring""SAP客户端/管理员,必须是3位数字(例如。 "100")
userstring条件""SAP用户名(OAuth2省略)
passwordstring条件""SAP密码(OAuth2省略)
languagestring"EN"登录语言: "DE""EN"
tls_skip_verifyboolfalse跳过TLS证书验证
oauth2_client_idstring""用于基于令牌的身份验证的OAuth2客户端ID

重要提示: 字典键(例如。 "dev", "prod")仅用于在配置中查找系统。它与SAP系统本身没有连接。这 connection_name 该字段用于标识桌面后端的SAP登录条目。这种区别允许您使用不同的客户端或凭据为同一SAP系统配置多个条目:

{
  "default_system": "dev-100",
  "systems": {
    "dev-100": {
      "connection_name": "DEV - ERP Development",
      "host": "https://dev-sap.example.com:44300",
      "client": "100",
      "user": "DEV_USER",
      "password": "DEV_PASSWORD"
    },
    "dev-200": {
      "connection_name": "DEV - ERP Development",
      "host": "https://dev-sap.example.com:44300",
      "client": "200",
      "user": "QA_USER",
      "password": "QA_PASSWORD"
    }
  }
}

两个条目共享相同的内容 connection_name (相同的SAP登录条目),但使用不同的客户端和凭据。

验证规则:

  • 必须至少定义一个系统
  • default_system 必须引用现有系统密钥
  • host 是必需的,必须以开头 http://https://
  • client如果已设置,则必须恰好为3位数字
  • language如果已设置,则必须为 "DE""EN"
  • 要么两者都有 userpassword 必须设置,或者两者都不设置(对于OAuth2)

用法

package main

import (
    "fmt"
    "os"

    sapmcpconfig "github.com/Hochfrequenz/sap-mcp-config"
)

func main() {
    // Load from SAP_CONFIG_FILE env var or ~/.config/sap-mcp/systems.json
    cfg, err := sapmcpconfig.LoadDefault()
    if err != nil {
        fmt.Fprintf(os.Stderr, "Configuration error:\n%s\n", err)
        os.Exit(1)
    }

    // Access the default system
    dev := cfg.GetDefault()
    fmt.Println(dev.Host, dev.Client, dev.User)

    // Access a specific system
    prod := cfg.Systems["prod"]
    fmt.Println(prod.Host, prod.Client, prod.User)

    // Password is safe to print — it won't leak
    fmt.Println(dev) // Output: SAPSystem{ConnectionName:DEV - ERP Development Host:https://... Client:100 User:DEV_USER Password:*** Language:DE}
}

python

import sys

from pydantic import ValidationError

from sap_mcp_config import load_default

try:
    # Load from SAP_CONFIG_FILE env var or ~/.config/sap-mcp/systems.json
    cfg = load_default()
except FileNotFoundError:
    print("Config file not found. Create ~/.config/sap-mcp/systems.json")
    sys.exit(1)
except ValidationError as e:
    print(f"Configuration error:\n{e}")
    sys.exit(1)

# Access the default system
dev = cfg.get_default()
print(dev.host, dev.client, dev.user)

# Access a specific system
prod = cfg.systems["prod"]
print(prod.host, prod.client, prod.user)

# Password is a SecretStr — it won't leak in print/logs
print(dev)  # password=SecretStr('**********')

# Access the actual password value when needed
password = dev.password.get_secret_value()

错误消息

这两个实现都急切地验证并返回 全部 错误一次。一个配置错误的文件,如下所示:

{
  "default_system": "missing",
  "systems": {
    "dev": { "host": "ftp://wrong", "client": "1", "user": "u" }
  }
}

…将在一个错误中报告所有问题:

invalid configuration:
  - default_system "missing" not found in systems
  - system "dev": host must start with http:// or https://, got "ftp://wrong"
  - system "dev": client must be a 3-digit string (e.g. "100"), got "1"
  - system "dev": must have both user and password, or neither (for OAuth2)

这样用户就可以在一次传球中解决所有问题,而不是玩打地鼠游戏。

扩展配置

这两种语言都使得在共享基础上添加特定于项目的字段变得容易。

python

子类 SAPSystem 添加您自己的字段:

from pydantic import ConfigDict
from sap_mcp_config import SAPSystem

class MySAPSystem(SAPSystem):
    model_config = ConfigDict()  # unfreeze for subclass

    custom_timeout: int = 30

嵌入 SAPSystem 在你自己的结构中:

type MySAPSystem struct {
    sapmcpconfig.SAPSystem
    CustomTimeout int `json:"custom_timeout"`
}

发展

go test ./...

python

pip install -e ".[tests]"
PYTHONPATH=src pytest unittests

或通过毒素:

pip install tox
tox -e tests       # unit tests
tox -e linting     # pylint
tox -e type_check  # mypy --strict
tox -e coverage    # coverage with 80% minimum

许可证

麻省理工学院

目录标签

目录标签

Python多语言支持本地部署SAP凭证管理配置文件验证MCP服务器

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP