用 LINE Messaging API 打造 MCP 伺服器,c#如何實作

一、MCP說明

MCP(Model Context Protocol) 是一種協定,讓大型語言模型(LLM)可以與外部系統或服務進行互動,例如查詢資料庫、調用 API 或執行特定功能。其主要目的是解決 LLM 的「幻覺問題」(hallucination),即模型可能基於訓練數據生成不準確的回應。

MCP 的架構分為三個角色:

  1. Host:負責接收使用者請求的 LLM 應用程式,例如 Claude 桌面應用程式。

  2. Client:Host 的一部分,負責與 MCP server 通信。

  3. Server:提供外部功能或資料的服務端,具備工具(Tools)和資源(Resources)。

MCP 的運作流程:

  1. Host 啟動時,Client 會向 Server 請求工具清單。

  2. 根據使用者的輸入,LLM 決定使用哪些工具。

  3. Client 調用 Server 的工具,完成功能後回傳結果。

  4. Host 整合回應並傳遞給使用者。

應用案例: 可以用 MCP server 與 LINE Messaging API 結合,讓 LLM 發送訊息給 LINE 官方帳號的好友,或根據天氣資訊生成動態內容。


二、C# MVC 範例:簡易 MCP Server

以下是基於 C# ASP.NET Core MVC 實作的一個簡單 MCP Server 範例,實現一個名為 broadcast_message 的工具,用於模擬發送訊息。

1. 建立 Model(工具定義)

 // Models/Tool.cs
 public class Tool
 {
     public string Name { get; set; }
     public string Description { get; set; }
 }

2. 建立 Controller(處理請求)

 // Controllers/McpController.cs
 using Microsoft.AspNetCore.Mvc;
 
 [ApiController]
 [Route("mcp")]
 public class McpController : ControllerBase
 {
     // 模擬工具清單
     private static readonly List<Tool> Tools = new List<Tool>
     {
         new Tool { Name = "broadcast_message", Description = "Send a message to all users" }
     };
 
     // Endpoint: tools/list
     [HttpGet("tools/list")]
     public IActionResult GetTools()
     {
         return Ok(Tools);
     }
 
     // Endpoint: tools/call
     [HttpPost("tools/call")]
     public IActionResult CallTool([FromBody] dynamic request)
     {
         string toolName = request.tool;
         string message = request.parameters?.message;
 
         if (toolName == "broadcast_message" && !string.IsNullOrEmpty(message))
         {
             // 模擬訊息廣播
             return Ok(new { success = true, message = $"Broadcasted: {message}" });
         }
 
         return BadRequest(new { success = false, error = "Invalid tool or parameters" });
     }
 }

3. 建立 View(測試頁面)

 <!-- Views/Home/Index.cshtml -->
 <!DOCTYPE html>
 <html>
 <head>
     <title>MCP Test</title>
 </head>
 <body>
     <h1>MCP Server 測試</h1>
     <p>訪問 `/mcp/tools/list` 取得工具清單</p>
     <p>訪問 `/mcp/tools/call` 測試工具呼叫</p>
 </body>
 </html>

4. 啟動專案並測試

  1. 啟動 ASP.NET Core 專案。

  2. 測試工具清單:

    • 用瀏覽器訪問:http://localhost:5000/mcp/tools/list

    • 回應:

       [
           {
               "name": "broadcast_message",
               "description": "Send a message to all users"
           }
       ]
  3. 測試工具呼叫:

    • 用 Postman 或其他工具發送 POST 請求到 http://localhost:5000/mcp/tools/call,Body(JSON)如下:

       {
           "tool": "broadcast_message",
           "parameters": {
               "message": "Hello, MCP!"
           }
       }
    • 回應:

       {
           "success": true,
           "message": "Broadcasted: Hello, MCP!"
       }

總結

以上範例展示了如何用 C# MVC 實現一個簡單的 MCP Server,包含工具清單和工具調用功能,適用於理解 MCP 的基本概念與運作方式。

參考連結

中臺科技大學資訊管理系第21屆畢業專題成果展

能夠與中臺科技大學結緣,主是因為國泰電腦的李信宏總經理的關係,因為李總在DELPHI的造詣以及醫療系統、檢驗系統開發的成就,因為李總沒空的原因,再加上一直習慣透過部落格記錄問題解決方式,在十多年前就與李桂春老師、王國安老師持續合作,從還沒重新到公司就職,就以個人開發工作室的名義擔任產業學院的講師,因此有了五年左右的講師經驗~後來因為工作的關係,就逐漸減少上課的時間,專心在系統開發架構以及人工智慧相關技術的學習以及鑽研。

最近因為王國安老師接下系主任的原因,身為老朋友的關係,當然就是意氣相挺 🙂 也趁著特休假稍微放鬆一下,且持續與年輕人有一定的互動與瞭解,也讓自己在管理上可以有更多瞭解。於是今天又擔任了評審~  🙂  這次有VR、NO-CODE、AI等元素,也是挺不錯的體驗。

高度模擬Notebooklm語音摘要功能,使用Google Gemini 與Google AI Studio實作

前陣子Notebooklm的語音摘要由原本的英語,增加了繁體中文的語音摘要功能。讓許多人對這功能感到驚艷~於是想想是不是可以自己做出來,首先先向google Gemini 打聽一下Notebooklm voice overview的提示詞是什麼?

起手式,先試探性的問一下提示詞是什麼

然後,換個方式問說可不可以模擬撰寫提示詞,於是生出來第一版本

你是一個強大的多模態模型,專精於理解和總結文本及音訊資訊,並以引人入勝的對話形式呈現。你的任務是根據以下提供的文本資料,生成一段由兩位虛擬主持人(稱為「主持人 A」和「主持人 B」)進行的語音摘要腳本。

**目標:**

1. **全面理解:** 深入理解提供的文本資料的核心主題、關鍵論點和重要細節。
2. **精準總結:** 以簡潔明瞭的方式總結資料的精華內容。
3. **對話呈現:** 將總結的內容融入兩位主持人之間的自然對話中,使其聽起來像一個資訊豐富的 Podcast 片段。
4. **突出重點:** 在對話中清晰地標示和討論資料中最關鍵的發現或結論。
5. **保持流暢:** 確保對話的流暢性和連貫性。

**指令:**

* 仔細閱讀並分析以下提供的文本資料:
“`
[在此插入使用者提供的文本資料]
“`
* 基於對文本的理解,構思一段由「主持人 A」和「主持人 B」進行的對話腳本。
* 腳本應包含兩位主持人的發言,清晰標註說話者(例如:「主持人 A:」、「主持人 B:」)。
* 對話應涵蓋文本的核心內容,並以易於聽眾理解的方式呈現。
* 鼓勵在對話中進行提問、回答、解釋和相互補充,以增強資訊的傳達效果。
* 腳本的長度應適中,能夠在合理的時間內概括文本的主要內容。

**範例對話風格 (僅供參考):**

主持人 A:歡迎收聽今天的內容摘要。我們今天要討論的是一份關於 [文件主題] 的文件。主持人 B,你覺得這份文件的主要發現是什麼?

主持人 B:你好!是的,[主持人 A]。我認為這份文件最關鍵的地方在於 [核心發現 1]。它指出 [對核心發現 1 的簡要解釋]。

主持人 A:這很有意思。那麼,這對 [相關領域/概念] 有什麼影響呢?

主持人 B:根據文件,這可能意味著 [影響的解釋]。此外,文件中還提到了 [核心發現 2],這也值得我們關注…

**請根據以上指令和提供的文本資料,撰寫完整的語音摘要腳本。**

有了提示詞後,來試試把POS系統的規格書丟進去

產生後,就把內文丟到google ai studio中的 Generate Media→Generate speech新功能

依照下面步驟

1 把gemini 產生的腳本貼到 1的地方
2 如果符合規格(預設是speaker 1 / speaker 2)的話,2就會自動轉換
3 模型是Gemini 2.5 flash preview TTS
4 選Multi-Speaker Audio
5 可以選speaker 1/2的聲音(下拉)
6 都完成後就可以按run 就可以產生了

ipas ai 規劃師中級考試規劃

iPAS AI 規劃師中級考試規劃指南

iPAS AI規劃師考試流程視覺圖

考試概述

iPAS考試結構資訊圖

考試目的與意義

經濟部推動的iPAS AI規劃師中級認證旨在培育人工智慧應用領域專業人才,認證資格獲得包含台灣水泥、東和鋼鐵等超過200家企業認可。此認證不僅驗證專業能力,更是企業徵才時的重要參考依據,根據1111人力銀行調查,獲證者平均薪資較同儕高出15%。

認證資格要求

考生需具備大專以上學歷並有1年相關工作經驗,或完成指定培訓課程。特別值得注意的是,通過初級認證者可豁免部分學歷限制,此設計主要考量實務經驗價值。具體資格審查標準可參考經濟部發證規範

考試科目與內容

中級考試包含「AI系統規劃設計」與「產業應用實務」兩大科目,涵蓋機器學習模型部署、數據治理架構設計等進階內容。其中實務操作題佔比達40%,要求考生在模擬情境中完成完整AI解決方案設計。最新考試範圍可於能力鑑定相關檔案下載。


備考策略

備考資源檢查清單

推薦學習資源

官方指定教材《AI系統架構實務手冊》需精讀3遍以上,搭配工研院產業學院的線上數位課程效果更佳。實戰演練建議使用阿摩線上測驗的模擬題庫,其收錄歷屆考題解析與即時錯誤分析功能,能有效提升應試能力。

時間管理與學習計劃

建議採取「433法則」分配備考時間:40%用於基礎理論研讀,30%進行實作演練,30%用於模擬測試。考前兩週應進入衝刺階段,每日至少進行1次完整模擬考。根據考生心得分享,建立錯題本記錄常犯錯誤能提升30%複習效率。

模擬考試與練習題

官方每年發布3次模擬試題,建議搭配第三方題庫進行交叉練習。特別注意時事題型佔比逐年增加,需定期追蹤專區最新消息掌握產業動態。


考試當日準備

考試日流程指南

考試流程與注意事項

需攜帶雙證件正本與准考證,提前30分鐘完成報到。電腦應試系統提供標記功能,建議先快速瀏覽全卷再作答。特別注意實作題需完整呈現設計邏輯,根據測驗前注意事項,未儲存中間過程將影響部分得分。

心理準備與壓力管理

考前失眠屬正常現象,可透過「478呼吸法」調節緊張情緒。試場提供耳塞應對環境干擾,建議平時練習即模擬考場環境。多位合格考生建議攜帶薄荷精油幫助提神醒腦。

常見問題解答

成績複查需於公布後7日內申請,補考可選擇單科重測。證書有效期3年,續證需累計60小時研習時數。詳細授證規範請參閱測驗後相關事項


結論

iPAS AI規劃師中級認證已成為產業轉型關鍵人才指標,透過系統化學習與實務演練,配合有效時間管理,多數考生能在3-6個月內完成準備。建議結合官方資源與實戰題庫,並定期參與認證培訓機構舉辦的模擬考,以掌握最新命題趨勢。

參考文獻

  1. iPAS經濟部產業人才能力鑑定推動網
  2. 淨零碳規劃管理師考證輔導班
  3. iPAS專業工程師備考建議
  4. IPAS考試心得與題庫