基于MCP协议实现本地ERP与AI助手安全集成:以Subiekt GT为例
2026/5/8 19:43:41 网站建设 项目流程

1. 项目概述:当波兰ERP遇上AI助手

如果你在波兰经营一家中小型企业,或者为这样的企业提供IT服务,那么“Subiekt GT”这个名字对你来说一定不陌生。作为InsERT公司旗下最受欢迎的桌面版ERP系统,它几乎是波兰本土商贸、服务行业财务和进销存管理的代名词。每天,无数的销售订单、发票、库存变动和客户数据在这里产生和处理。但不知道你有没有过这样的时刻:面对堆积如山的销售数据,想快速知道某个产品的实时库存,或者想找出账龄最长的未付发票,却不得不在一层层菜单和报表中手动筛选?又或者,当你想让AI助手(比如Claude)帮你分析业务时,却发现它对你的核心业务数据一无所知,只能给出一些泛泛而谈的建议。

这正是SubiektMCP要解决的问题。简单来说,它是一个运行在你Windows电脑上的“翻译官”和“安全网关”。它基于Anthropic公司推出的Model Context Protocol标准,在本地为Claude Desktop这类AI助手创建了一系列可以直接操作你Subiekt GT数据库的工具。这意味着,你可以用最自然的波兰语(当然,其他语言也行)向Claude提问,比如“Sprawdź stan magazynowy towaru ABC-001”(检查产品ABC-001的库存状态),Claude就能通过这个MCP服务器,实时从你的SQL Server数据库中查询并返回准确结果。更强大的是,在Pro授权下,它甚至能直接创建销售订单或发票,将AI的指令转化为ERP系统中的具体业务单据。

这个方案的巧妙之处在于其架构设计。它不是一个将你的敏感财务数据上传到云端服务的SaaS平台,而是一个完全运行在本地的Windows服务。你的所有数据——客户信息、交易记录、库存详情——都牢牢锁在你的电脑或公司服务器内。AI助手通过安全的本地通信协议与这个服务器“对话”,获取上下文或执行操作。这种“隐私优先”的设计,对于受RODO(波兰的通用数据保护条例)严格监管的企业来说,是至关重要的信任基石。

2. 核心架构与安全设计解析

2.1 为什么选择MCP协议?

在AI应用开发领域,让大语言模型(LLM)安全、可控地使用外部工具和数据,一直是个挑战。早期的方案往往需要针对每个AI平台(如OpenAI的GPTs、Claude的Projects)编写特定的插件或集成,工作重复且维护成本高。Anthropic推出的Model Context Protocol,目标就是成为连接AI模型与外部工具和数据的通用标准。

你可以把MCP想象成电脑的USB-C接口。以前,不同的设备需要不同的线缆(专有API);现在,只要设备都支持USB-C(MCP协议),就能即插即用。SubiektMCP就是一个符合MCP标准的“ERP数据读写设备”。它一旦被安装和配置,任何支持MCP协议的AI智能体(目前主要是Claude Desktop)都能自动识别并使用它提供的工具集,无需为每个AI单独开发集成代码。这大大降低了集成的复杂性和未来的维护负担。

2.2 本地化部署与数据安全边界

数据安全是企业,尤其是处理财务数据的ERP用户最核心的关切。SubiektMCP的架构清晰地划定了安全边界:

你的电脑/服务器 (安全边界内) ├── Claude Desktop (AI客户端) ├── SubiektMCP Server (Windows服务, localhost:8000) ├── Subiekt GT 数据库 (MS SQL Server) └── Sfera GT COM API (用于写操作)

整个数据流被严格限制在这个边界内:

  1. 零数据出境:你的ERP业务数据全程不会离开你的本地网络。查询、写入操作全部在本地完成。
  2. 本地通信:Claude Desktop通过HTTP或STDIO与本地端口(默认8000)上的SubiektMCP服务器通信,这属于进程间或本地网络通信,不经过互联网。
  3. 最小化外部依赖:唯一的对外网络请求是每小时一次的许可证验证,该请求仅发送许可证密钥的哈希值到授权服务器(Keygen.sh),不包含任何业务数据。即使网络中断,本地缓存也能让服务继续运行长达7天。

这种设计不仅满足了RODO/GDPR关于数据本地化和最小化传输的原则,也从根本上杜绝了因云端服务商数据泄露而导致的风险。作为管理员,你完全掌控着数据的物理存储和访问路径。

2.3 技术栈选型背后的考量

SubiektMCP的技术选型紧密围绕其目标环境(Windows + Subiekt GT)和核心需求(稳定、高效、易维护)展开:

  • 核心语言:Python:选择Python而非C#或Go,主要基于其强大的生态。pyodbc库提供了对MS SQL Server成熟稳定的访问能力,而pywin32库则是与Windows COM组件(这里是Sfera GT的API)交互的事实标准。Python的快速开发特性也适合此类需要与复杂业务系统(ERP)深度集成的中间件。
  • MCP框架:FastMCP:这是在Python中实现MCP服务器的一个高效框架。它处理了协议层复杂的通信、工具注册、资源管理等底层细节,让开发者可以专注于业务工具(Tool)的实现逻辑。这保证了SubiektMCP与MCP协议的兼容性和未来的可升级性。
  • 部署形式:Windows服务 + 安装包:将主程序封装为Windows服务,确保了它在后台持续稳定运行,无需用户保持登录状态或打开命令行窗口。使用专业的安装包制作工具(如Inno Setup)生成.exe安装程序,极大降低了终端用户的部署门槛,实现了“下一步”式的安装体验,这对于面向非技术背景的商务用户至关重要。
  • 数据库连接:ODBC:通过ODBC连接SQL Server是最通用、兼容性最好的方式。安装程序会自动尝试从系统注册表中读取Subiekt GT已配置的数据库连接信息,这避免了用户手动输入复杂的连接字符串(服务器实例名、数据库名、认证方式等),实现了开箱即用的连接。

注意:Pro版中创建单据(如发票)的功能,必须通过pywin32调用Sfera GT的COM API来完成,而不能直接写数据库。这是因为像Subiekt GT这样的成熟ERP,其业务逻辑复杂(如序列号生成、会计科目匹配、库存更新触发等),直接操作数据库表极易导致数据不一致或破坏业务规则。通过官方COM API操作,是唯一安全、可靠的方式。

3. 功能工具集深度剖析与实战场景

SubiektMCP将ERP的核心功能封装成了一组AI可以调用的“工具”。理解每个工具的能力和适用场景,能让你更好地向AI提问,发挥最大效用。

3.1 读取类工具:让AI成为你的超级业务分析师

Starter计划提供的13个读取工具,基本覆盖了日常业务查询的方方面面。它们不仅仅是简单的SQL查询包装,而是内置了业务逻辑的智能接口。

  • 库存查询的两种维度
    • get_product_stock:这是最常用的单产品查询。你只需要提供产品的符号,它就能返回当前的总库存、已订购量、可用量以及最新价格。这里的关键在于“符号”是Subiekt GT中产品的唯一标识,通常是像ABC-001这样的编码,而不是产品名称。
    • get_product_stock_multi_warehouse:对于有多个仓库的公司,这个工具至关重要。它能展示一个产品在每个具体仓库(如“主仓库”、“门店A”、“线上仓”)的详细库存分布,帮助你精准调拨。
  • 客户与财务健康度检查
    • get_customer_balance:这不仅仅是显示应收应付总额。一个负的余额通常意味着公司欠客户钱(比如预付款过多),而正的余额则是客户欠公司的应收账款。结合get_unpaid_invoices(未付发票),你可以快速对客户进行信用风险分级。例如,让Claude“列出余额超过1万兹罗提且账龄大于60天的前5位客户”。
    • search_customers:支持通过名称、NIP(波兰税号)或电话进行模糊搜索。这在接听客户电话时尤其有用——你只需告诉Claude来电者提供的部分信息,它就能快速定位客户档案。
  • 销售分析与决策支持
    • get_sales_report:这是一个强大的时段分析工具。你可以按天、周、月或自定义日期范围查询,并选择按客户、按产品分组。它返回的不只是销售额,还包括毛利、成本等关键指标。例如:“生成上周按产品分类的销售报告,按毛利从高到低排序。”
    • get_top_selling_products:快速识别爆款和滞销品。你可以选择按销售收入排名还是按销售数量排名。这个工具能直接为你的采购和营销策略提供数据支持。
  • 文档追溯
    • search_documentsget_document_details:这两个工具结合使用,可以完美追踪任何业务单据。先用search_documents通过日期、客户、类型(发票、订单、收据)等条件筛选出目标单据列表,然后用get_document_details获取某张单据的完整行项目、支付状态等所有细节。相当于一个语音激活的万能单据检索器。

3.2 写入类工具:从查询到执行的关键跨越

Pro计划解锁的4个写入工具,将AI从“分析师”变成了“执行助理”。但这背后需要满足一个关键前提:你的Subiekt GT必须拥有有效的Sfera GT许可证。因为所有写操作都必须通过Sfera GT的COM API进行。

  • create_sales_order(创建销售订单):向AI描述“为客户[NIP]创建一份订购5个[产品符号]的订单”,AI就能调用此工具,在Subiekt GT中生成一张状态为“新订单”的Zamówienie od Klienta。工具会自动处理客户和产品的识别、默认价格的应用、以及订单头信息的填充。
  • create_invoice(创建发票):基于已存在的销售订单或直接创建。这是最复杂的写操作之一,因为它涉及税务计算、付款条件、发票编号序列等。工具会遵循你在Subiekt GT中预设的会计和税务规则。
  • create_receipt(创建收据):适用于零售或即时现金交易场景。流程相对发票更简单快捷。
  • update_customer(更新客户):用于快速修改客户信息,如更新联系方式、地址或更改信用额度。

实操心得:在让AI执行写操作前,强烈建议先用读取工具确认一遍数据。例如,在让AI创建发票前,先问一句“Pokaż dane klienta o NIP 1234567890”(显示NIP为1234567890的客户数据),确认客户信息无误;再用get_product_stock确认产品符号和价格正确。这能避免因AI误解你的自然语言描述而生成错误单据。

4. 从零到一的完整部署与配置指南

4.1 环境预检与准备工作

在运行安装程序之前,请确保你的环境满足以下所有条件,这能避免绝大多数安装失败的问题:

  1. 操作系统:Windows 10 或 11 的64位版本。32位系统无法运行。
  2. Subiekt GT:版本需在1.50及以上。你可以在Subiekt GT的“帮助”->“关于”中查看版本号。
  3. 数据库:MS SQL Server 2012或更高版本。Subiekt GT的后端数据库必须正在运行且可访问。
  4. Sfera GT许可证:仅当你需要使用Pro版的写入功能时才需要。如果只使用Starter版的读取功能,则不需要。请向你的InsERT经销商确认你的Sfera GT许可状态。
  5. Node.js 18+:这是Claude Desktop通过mcp-remote桥接连接本地MCP服务器所必需的。它是一个独立的组件,通常Claude Desktop安装时会自带,但为了保险起见,你可以访问Node.js官网下载并安装最新的LTS版本。
  6. 网络连接:安装和首次运行时需要互联网连接,以完成许可证验证。后续运行可容忍间歇性断网。

4.2 分步安装与配置详解

假设你已从发布页面下载了SubiektMCP_Setup_v1.0.1.exe

步骤一:获取许可证访问subiektgt.chat网站。选择Starter或Pro计划,完成注册。你会收到一封包含许可证密钥的邮件。14天的免费试用期让你有充足时间测试所有功能。

步骤二:运行安装程序

  1. 右键点击安装程序,选择“以管理员身份运行”。这是必要的,因为安装过程需要向系统注册Windows服务。
  2. 跟随安装向导。通常它会建议默认安装路径(如C:\Program Files\SubiektMCP\),保持默认即可。
  3. 关键步骤:数据库配置。安装程序会尝试自动从Windows注册表中探测Subiekt GT配置的数据库连接信息。在大多数标准安装环境下,这一步会自动填充:
    • SQL Server实例:可能是localhost\SQLEXPRESS或你的服务器名。
    • 数据库名:你的Subiekt GT数据库名称。
    • 认证方式:通常是Windows集成认证(推荐)或SQL Server认证。 如果自动探测失败,你需要手动填写这些信息。这些信息应与你在Subiekt GT中登录时使用的数据库连接信息一致。
  4. 粘贴许可证密钥。将邮件中的长串密钥复制粘贴到输入框。安装程序会立即在线验证该密钥的有效性。
  5. 完成安装。安装程序会自动启动SubiektMCP Windows服务,并将其设置为开机自启。

步骤三:验证服务状态安装完成后,按下Win + R,输入services.msc打开“服务”管理器。在列表中找到“SubiektMCP Server”。它的状态应为“正在运行”,启动类型为“自动”。如果状态不是“正在运行”,可以尝试右键点击并选择“启动”。

步骤四:配置Claude Desktop这是最后一步,也是让一切联动起来的关键。SubiektMCP安装程序通常会自动在Claude Desktop的配置文件中添加MCP服务器设置。但了解其原理有助于手动排查问题。 Claude Desktop的MCP服务器配置位于一个JSON文件中。安装程序所做的,本质上是在这个文件里添加了类似下面的一段配置:

{ "mcpServers": { "subiekt-gt": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-subiekt-gt", "http://localhost:8000/sse" ] } } }

这段配置告诉Claude Desktop:“当你需要调用subiekt-gt这个MCP服务器的工具时,请通过npx命令去连接本地8000端口上的SSE端点。” 如果自动配置未生效,你可以手动检查或添加此配置。Claude Desktop的配置文件路径通常位于%APPDATA%\Claude\claude_desktop_config.json

4.3 首次对话测试

打开Claude Desktop。如果一切配置正确,你不会看到任何明显的提示,但Claude已经“知道”了这些新工具。 尝试用波兰语或英语提出一个简单的查询,例如:

“Czy możesz sprawdzić, jaki jest aktualny stan magazynowy dla produktu o symbolu [wstaw tutaj prawdziwy symbol z Twojego Subiekta]?” (你能查一下产品符号为[在此插入你Subiekt中的真实产品符号]的当前库存吗?)

如果Claude回复了具体的库存数据,那么恭喜你,集成成功了!如果它表示不理解或找不到工具,则说明MCP连接可能有问题。

5. 高级使用技巧与集成模式探索

5.1 优化提问方式以获得最佳结果

AI的能力取决于你如何提问。以下是一些针对SubiektMCP工具集的提问技巧:

  • 使用明确的标识符:在查询产品、客户时,尽量使用符号NIP这类唯一标识,而不是可能重复或模糊的名称。例如,“get_product_stockfor symbolELEC-1024”比“for product ‘laptop charger’”要准确得多。
  • 组合使用工具进行复杂分析:你可以要求Claude执行多步操作。例如:“首先,用search_customers找到所有名称中包含‘Sp. z o.o.’的客户。然后,对每个客户,用get_customer_balance获取他们的余额,并列出余额最高的前10位。” Claude可以理解并顺序执行这些指令。
  • 为写操作提供完整上下文:当要求创建订单或发票时,提供尽可能详细的信息。
    • 不佳的提问:“Utwórz fakturę dla Jana Kowalskiego.”(为Jan Kowalski创建发票。)
    • 优秀的提问:“Utwórz fakturę sprzedaży dla kontrahenta o NIP 1234567890. Dodaj 2 sztuki towaru o symbolu ‘USB-CABLE’ oraz 1 sztukę ‘ADAPTER-PL’. Data wystawienia dzisiaj, termin płatności 14 dni.”(为NIP是1234567890的客户创建销售发票。添加2个符号为‘USB-CABLE’的产品和1个‘ADAPTER-PL’。开票日期今天,付款期限14天。)
  • 利用Claude的上下文记忆:在一次对话中,Claude会记住之前的交互。你可以先让它搜索一个客户,然后在后续指令中直接说“为刚才找到的那个客户创建订单”,Claude能理解“那个客户”指的是谁。

5.2 超越Claude Desktop:其他集成可能性

虽然官方目前只正式支持Claude Desktop,但MCP是一个开放协议。理论上,任何支持MCP的客户端都可以与SubiektMCP集成。这为自动化工作流打开了大门:

  • 与n8n或Zapier等自动化平台集成:你可以搭建一个n8n工作流,定期触发(例如每天上午9点),通过HTTP请求调用SubiektMCP服务器的工具(需注意MCP协议并非简单REST API,可能需要一些适配),获取低库存产品列表,然后自动生成采购申请邮件或Slack通知。
  • 自定义脚本或应用:对于开发者,可以编写Python或Node.js脚本,使用MCP客户端SDK直接与本地SubiektMCP服务器交互,将ERP数据拉取到自定义的数据看板或报告中。
  • 其他AI工作台:随着MCP协议的普及,未来可能会有更多的AI开发环境或企业级AI平台支持MCP。SubiektMCP的架构使其能够平滑地接入这些新平台。

注意事项:这些非官方的集成方式需要一定的技术能力,并且可能涉及对MCP协议底层通信(如SSE或STDIO)的理解。在尝试之前,务必在测试环境中进行充分验证。此外,频繁的自动化调用需考虑对ERP数据库的性能影响,避免在业务高峰时段执行大量查询。

6. 常见问题排查与故障解决实录

即使安装顺利,在实际使用中也可能遇到一些问题。以下是我在实际部署和测试中遇到的一些典型情况及解决方法。

6.1 连接类问题

问题:Claude Desktop无法识别SubiektMCP工具,或提示连接MCP服务器失败。

  • 检查1:服务状态。首先确认services.msc中的“SubiektMCP Server”是否正在运行。如果已停止,尝试启动并观察系统事件查看器(eventvwr.msc)中该服务的错误日志。
  • 检查2:端口占用。SubiektMCP默认使用8000端口。运行netstat -ano | findstr :8000命令,查看8000端口是否被其他程序占用。如果被占用,可以在SubiektMCP的配置文件(通常位于安装目录的config.iniconfig.json中)中修改端口号,并同时更新Claude Desktop配置文件中的对应端口
  • 检查3:Claude配置。检查claude_desktop_config.json文件,确认mcpServers部分下subiekt-gt的配置是否正确,特别是args中的URL是否指向正确的本地地址和端口(http://localhost:8000/sse)。
  • 检查4:防火墙:虽然本地连接通常不受防火墙限制,但某些严格的安全策略可能会阻止本地回环地址的通信。可以尝试暂时关闭Windows Defender防火墙进行测试。

问题:安装程序在配置数据库连接时失败。

  • 原因:自动探测依赖于Subiekt GT在注册表中的标准配置。如果你的Subiekt GT是自定义安装,或者使用了非标准的ODBC数据源名称,探测可能会失败。
  • 解决:手动输入连接参数。你需要知道:
    1. SQL Server的主机名或IP地址及实例名(如MYPC\SQLEXPRESS)。
    2. 数据库的具体名称(如SubiektGT_FirmaXYZ)。
    3. 登录方式:优先使用“Windows身份验证”。如果必须使用SQL Server身份验证,请确保账号密码正确且有访问该数据库的权限。

6.2 功能类问题

问题:读取工具可以工作,但写入工具(如创建发票)失败,提示权限或COM错误。

  • 首要原因Sfera GT许可证。请百分之百确认你的Subiekt GT拥有有效且已激活的Sfera GT许可证。写入操作完全依赖Sfera GT的COM API。
  • 其次:运行Claude Desktop和SubiektMCP服务的用户权限。确保当前Windows登录用户(以及运行SubiektMCP服务的账户,默认为LocalSystem或你指定的账户)有权限启动和访问Subiekt GT的COM组件。有时需要以管理员身份运行Claude Desktop进行测试。
  • 调试:查看SubiektMCP的日志文件(位置通常在安装目录的logs文件夹下)。COM错误信息通常会记录在此,能提供更具体的失败原因。

问题:AI返回的结果不准确或为空。

  • 确认查询条件:再次确认你使用的产品符号、客户NIP等是否完全正确,包括大小写和特殊字符。Subiekt GT数据库中的这些字段通常是区分大小写的。
  • 理解工具逻辑:例如,get_unpaid_invoices返回的是“未核销”的发票,而不是“未到期”的发票。一张已部分付款但未完全核销的发票也会出现在结果中。
  • 数据延迟:MCP工具查询的是实时数据库。但如果你的Subiekt GT客户端有本地缓存,或者某些报表是定时生成的,可能会存在短暂的数据不一致。通常直接查询数据库是最实时的。

6.3 许可证与商业问题

问题:试用期过后,如何续费或升级?

所有许可证管理都在panel.subiektgt.chat在线门户完成。登录后,你可以查看当前订阅、更新支付方式、升级从Starter到Pro计划,或者取消订阅。取消是自助式的,立即生效,在当期周期结束后服务将停止。

问题:可以在多台电脑上使用一个许可证吗?

这取决于你的订阅计划:

  • Starter计划:许可证绑定到一台特定机器(通常基于硬件指纹)。不能在多台电脑间转移。
  • Pro计划:提供“浮动”许可证,允许在最多3台机器上激活使用,但同时只能有1台机器在线使用。这适合需要在办公室台式机和家用笔记本电脑上切换使用的场景。

如果你需要更灵活的企业部署(例如为整个团队提供访问),需要联系kontakt@subiektgt.chat咨询企业许可方案。

7. 维护、升级与最佳实践

7.1 日常维护要点

SubiektMCP作为Windows服务运行,日常维护成本很低,但以下几点值得关注:

  1. 日志监控:定期检查安装目录下的日志文件(如app.log,error.log)。正常的操作日志可以帮助你了解使用情况,错误日志则是在出现问题时的第一排查点。
  2. 许可证状态:服务每小时会验证一次许可证。如果计划续费,建议在到期前完成,避免服务因许可证失效而中断。离线缓存最多支持7天。
  3. 系统更新:当Windows系统或Subiekt GT进行重大更新后,建议重启一下SubiektMCP服务,以确保组件加载正常。
  4. 备份配置:如果你手动修改了服务器的配置文件(如端口号),建议备份此文件。在升级安装程序时,这些自定义配置通常会被保留,但备份是万全之策。

7.2 软件升级流程

当新版本发布时,升级过程通常很简单:

  1. 从GitHub Releases页面下载最新的.exe安装程序。
  2. 直接运行新版本安装程序。它会自动检测到已安装的旧版本,并引导你完成升级。
  3. 升级过程通常会保留现有的数据库连接配置和许可证信息。
  4. 安装完成后,服务会自动重启以加载新版本。

升级前建议:虽然升级通常平滑,但出于谨慎,建议在非业务高峰时段进行,并确保你对当前的Subiekt GT数据库有可用的备份。

7.3 安全最佳实践

尽管SubiektMCP设计为本地运行,但安全原则不可松懈:

  • 最小权限原则:为SubiektMCP服务配置的数据库连接账户,应仅具有完成其工具功能所必需的最小权限。对于Starter计划(只读),就创建一个只有SELECT权限的数据库用户。对于Pro计划(读写),该用户需要通过COM API操作,权限控制主要在Windows和Sfera GT层面,但数据库账户权限仍应受到限制。
  • 保护Claude Desktop会话:既然Claude能通过MCP操作你的ERP数据,那么保护你的Claude Desktop会话就和保护你的ERP密码一样重要。在不使用时锁定电脑,为电脑账户设置强密码,避免让他人物理访问已登录Claude的电脑。
  • 网络隔离:确保运行SubiektMCP的机器处于受信任的内部网络环境中,避免将其直接暴露在公网上。MCP服务器监听的localhost:8000端口不应被路由器映射到公网IP。

我个人在测试和使用中的体会是,SubiektMCP最大的价值在于它拆除了数据孤岛与智能应用之间的那堵墙。它没有尝试去替代Subiekt GT,而是用一种标准、安全的方式为其赋能,让企业主和员工能用最自然的方式与自己的业务数据对话。对于波兰本地的中小企业,这无疑是一个能立即提升效率的实用工具。开始使用时,不妨从最简单的库存查询和客户搜索入手,逐渐尝试销售报告分析,等熟悉了AI的“工作方式”后,再探索创建订单等自动化操作,这样能更平滑地将它融入你的日常工作流。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询