# sap-mcp **Repository Path**: time90/sap-mcp ## Basic Information - **Project Name**: sap-mcp - **Description**: SAP RFC MCP Server - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-24 - **Last Updated**: 2026-04-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SAP RFC MCP Server 基于 **Model Context Protocol (MCP)** 的企业级 SAP RFC 连接器。本项目旨在为 AI 智能体(如 Claude Desktop, GPT-4, Cursor 等)提供安全、高效、上下文感知的 SAP 系统访问能力。通过标准化的 MCP 协议,Agent 可以像调用本地函数一样执行 SAP RFC 并检索业务数据。 --- ## 🌟 项目亮点 - **企业级安全**:支持 Master Key 管理架构,具备动态令牌(Dynamic Tokens)生成、有效期管理及一键撤销功能。 - **全链路追踪**:身份感知的日志系统,每条日志均包含客户端 IP 和 Agent 身份,支持每日凌晨自动分割。 - **智能表读取**:内置数据缓冲区保护机制,自动处理 `DATA_BUFFER_EXCEEDED` 错误,支持大规模数据的迭代安全读取。 - **AI 优化元数据**:提供详尽的函数接口定义、参数描述,并支持导出 RAG(检索增强生成)友好格式的知识库。 - **高可用会话**:支持智能会话复用,Agent 无需手动管理 Session ID,系统自动基于 Token 恢复活跃会话。 --- ## 🚀 核心能力 (Tools) 本服务器向 MCP 客户端暴露了以下工具集,涵盖了从系统发现到数据操作的全流程: ### 1. 核心 RFC 交互 - `call_rfc_function`: 动态调用任意 SAP RFC 函数,支持复杂嵌套结构的参数传递。 - `rfc_system_info`: 获取 SAP 系统版本、协议、内核、数据库类型等元数据。 - `get_rfc_functions`: 通过模糊匹配查询 SAP 系统中可用的远程调用函数。 ### 2. 安全数据读取 - `read_table`: 具备**自动溢出保护**的表读取工具,能根据 RFC 512 字节限制自动选择字段。 - `read_table_complete`: 迭代读取模式,支持请求超过缓冲区限制的大量字段,自动分批处理。 - `get_table_structure`: 检索 SAP 表的详细定义,包括字段技术属性和多语言描述。 - `test_table_access`: 快速验证当前用户对特定表的读取权限及数据连通性。 ### 3. 元数据管理 - `get_function_metadata`: 获取函数的完整“说明书”,包括参数方向、类型、长度及多语言注释。 - `search_rfc_functions`: 针对函数名和描述进行全文检索,帮助 Agent 发现合适的接口。 - `export_metadata_for_rag`: 将 SAP 接口知识导出为 JSON,用于构建 Agent 的离线知识库。 --- ## � 运行模式 项目支持三种运行模式,满足不同场景下的集成需求: - **HTTP 模式 (默认)**:基于 FastAPI 提供的 Streamable HTTP 传输,支持流式 (SSE) 响应,适用于远程 Agent 访问。 - **STDIO 模式**:通过标准输入输出通信,适用于 Claude Desktop 等本地安装的 MCP 客户端。 - **双模式 (Dual)**:同时开启 HTTP 和 STDIO,兼顾本地调试与远程服务。 --- ## 📦 快速部署 ### 1. 环境要求 - **Python**: 3.9 或更高版本。 - **SAP NW RFC SDK**: 必须安装 SAP 官方 SDK,并配置 `SAPNWRFC_HOME` 环境变量。 ### 2. 安装 ```bash git clone cd sap-rfc-mcp-server python -m venv .venv source .venv/bin/activate # Windows 使用 .venv\Scripts\activate pip install -e . ``` ### 3. 配置 复制 `.env.example` 为 `.env` 并填写您的 SAP 连接参数及安全密钥: ```env # SAP 连接 SAP_ASHOST=192.168.1.100 SAP_SYSNR=00 SAP_CLIENT=100 SAP_USER=YOUR_USER SAP_PASSWD=YOUR_PASSWD # 安全密钥 MCP_MASTER_KEY=admin-secret-key-2026 ``` --- ## � 身份验证指南 服务器采用双层认证架构: 1. **管理层 (Master)**:使用 `MCP_MASTER_KEY` 访问 `/auth/*` 接口,执行 Token 颁发。 2. **业务层 (Agent)**:使用生成的动态 Token 访问 `/mcp/*` 接口调用 SAP 功能。 **生成 Token 示例 (使用 Master Key)**: ```http POST /auth/token/generate X-API-Key: admin-secret-key-2026 Body: {"agent_name": "Finance_Agent", "ttl_hours": 48} ``` --- ## 📂 项目结构 ```text sap_rfc_mcp_server/ ├── auth.py # 动态 Token 管理与持久化 ├── server.py # MCP 工具定义与处理核心逻辑 ├── sap_client.py # 底层 pyrfc 连接管理与池化 ├── rfc_table_reader.py # 增强型表数据安全读取逻辑 ├── streamable_http_server.py # HTTP/SSE 传输层实现 ├── logger.py # 身份感知的自动切分日志系统 └── metadata_manager.py # SAP 元数据分析与 RAG 优化 ``` ## 📖 更多文档 - [QUICKSTART.md](QUICKSTART.md):5 分钟快速上手指南。 - [MODES_GUIDE.md](MODES_GUIDE.md):运行模式与配置详解。 - [DEPLOY.md](DEPLOY.md):生产环境 Systemd 与 Docker 部署。 --- © 2026 SAP RFC MCP Server Team. Licensed under MIT.