2025年4月13日 星期日

透過「MCP」與Claude 桌面板實現T100數據存取

由 Claude 提出的 MCP ,提供了 Python 的 MCP SDK 工具,可作為橋接 T100 ERP 與現在大多數可支持 MCP 的 ai 模型,如 ChatGPT、Gemini 和 Claude。此方案在賦予 AI 直接查詢和理解 ERP 系統內龐大數據的能力,從而釋放數據潛能,提升決策效率,並開創全新的智能化應用場景。

為了解決上述挑戰,可利用 MCP 為橋樑,並藉助 Python + Genero 實現 AI 對傳統 ERP 系統的直接數據存取。

我們選擇使用 Python 的 UV 工具:在 windows 上可以透過 uv 建置 mcp 的步驟可以參考

https://dev.to/codemee/shi-yong-uv-guan-li-python-huan-jing-53hg

整體流程也可以參考

https://youtu.be/cdBRAVYZKFo?si=tL6Wj4ryU_MQDWyL

想像的系統架構如下:

+-----------------+      +----------+      +-----------------------+
|   使用者 (Human) |----->|   LLMs   |----->|      MCP Server       |
|(Natural Language)|      |(ChatGPT, |      |(Python UV Application)|
+-----------------+      | Gemini,  |      +-----------------------+
                           | Claude)  |             ^
                           +----------+             | (Web Service Call)
                                                  |
                                     +-----------------------+
                                     |   傳統 ERP 系統       |
                                     |(Web Service Interface)|
                                     +-----------------------+

實施步驟:

  1. 利用 uv 建置 python 專案 test_mcps,專案內使用  "mcp[cli]" mcp httpx 等套件

    此處也可以參考  https://dev.to/alexmercedcoder/building-a-basic-mcp-server-with-python-5ci7

    uv add "mcp[cli]" mcp httpx

  2. 設定 T9528.py 如下

    下方檔案內的 ERP_SERVER_IP 應換成 T100主機IP,web service 的部分則需要參考 T100 高階 web service開發方式設定

    import httpx
    from mcp.server.fastmcp import FastMCP

    # 初始化 FastMCP 服务器
    mcp = FastMCP("T9528")

    # 常量
    T100_API_BASE = "https://ERP_SERVER_IP/wtopprd/ws/r/top/asahost"

    async def make_nws_request(url: str) -> str:
        """向 T100 API 发起请求,并进行错误处理。"""

        async with httpx.AsyncClient() as client:
            try:
                response = await client.get(url, headers=headers, timeout=30.0)
                response.raise_for_status()
                return response.json()
            except Exception:
                return None
    @mcp.tool()
    async def get_tablename(table_id: str) -> str:
        """指定表格編號,或編號關鍵字,查詢T100系統的表格編號與名稱。

        Args:
            state: 表格編號 或關鍵字 (例如 gzza_t 或 gzxa)
        """
        url = f"{T100_API_BASE}/base/qry_tablename?table_id={table_id}"
        response = httpx.get(url)
        return response.json()
    if __name__ == "__main__":
        # 初始化并运行服务器
        mcp.run(transport='stdio')

透過上述步驟,就可以將 T100內的 high level web servic 作為 AI 查詢工具的一部分,接下來只需要回到 claude 桌面程式配置 T9528.py 就可完成啟用


啟用後,就可以回到 claude 看到桌面下方槌子的部分亮起來 (mcp 工具後續均以 "槌子" 或 "板手" 表示 "工具" ) 。每一個 mcp 程式可以包含不只一個工具。


工具生效後就可以執行詢問,我們首先上傳的是詢問表格名稱的,就針對性的問一下:


至此可以明確地看出 mcp 工具在 windows 桌面是能被使用的。


沒有留言:

張貼留言