用 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 的基本概念與運作方式。

參考連結

chatGPT與line官方帳號結合 = line ai 小助理

OpenAI設計的ChatGPT問世後,很快的ai的使用人數破億。且chatgpt讓ai整個流行了起來~ 想說台灣最流行的通訊工具line,有沒有機會跟chatgpt串到一起,於是很快的用php以及.net core都串了一次。簡單明瞭~很易懂

分享關鍵的php,有問題歡迎line: superlevin 林壽山


$api_key = 'xxxxxxxxxx';
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.openai.com/v1/completions',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer ' . $api_key
],
CURLOPT_POSTFIELDS => json_encode([
'prompt' => $ask_question,
'model' => 'text-davinci-003',
'max_tokens' => 1000,
'temperature' => 0.3
])
]);
$response = curl_exec($curl);

$json = json_decode($response, true);

 

 

Delphi拿Line Notify來當通知

  • 取得個人的TOKEN

進到網站 https://notify-bot.line.me/zh_TW/ ,右上角有一個登入,登入後選個人頁面

往下拉可以看到一個發行存取權杖(TOKEN),按發行權杖功能。按照步驟就可以取得權杖

複製權杖下來備用。

接下來在安裝ipwork的Delphi上,加入ipwhhtp的元件後,呼叫LINE NOTIFY的程式如下:

2021.06.12 更新 Delphi 版本 ipwork試用連結(官網)
https://www.nsoftware.com/download/download.aspx?sku=IPDF-A&type=demo

七行程式就可以了!

  ipwhttp1.Config(‘CodePage=65001’);

  ipwhttp1.Timeout := 10;

  ipwhttp1.ResetHeaders;

  ipwhttp1.OtherHeaders := ‘Authorization: Bearer +’這裡改成剛才的權杖';

  ipwhttp1.ContentType := ‘application/x-www-form-urlencoded;’;

  ipwhttp1.PostData:= ‘message=’+’這裡改成你要通知的內容';

  ipwhttp1.Post(‘https://notify-api.line.me/api/notify’);

C# ASP.net Core開發line bot使用ngrok出現307 Temporary Redirect

使用asp.net core 開發LINE BOT時,使用ngrok做本機的服務器時,驗證Webhook出現錯誤。ngrok出現 307 Temporary Redirect的錯誤!

解決方式:

Starup.cs中有一句app.UseHttpsRedirection(); 前面加上 // 註解掉就可以了

參考:

ngrok http [port] -host-header="localhost:[port]"

LINE@官方帳號機器人PHP試做

1465549488137
試著寫了個PHP for LINE@ BOT API的小程式。
收到的訊息大致像這樣

Array
(
    [result] => Array
        (
            [0] => Array
                (
                    [content] => Array
                        (
                            [toType] => 1
                            [createdTime] => 1465548731679
                            [from] => ubde68bb73a93d53886dc814720423971
                            [location] => 
                            [id] => 4442057145631
                            [to] => Array
                                (
                                    [0] => u0182d0ce673d4b950318618870074d49
                                )

                            [text] => 妳好
                            [contentMetadata] => Array
                                (
                                    [AT_RECV_MODE] => 2
                                    [SKIP_BADGE_COUNT] => true
                                )

                            [deliveredTime] => 0
                            [contentType] => 1
                            [seq] => 
                        )

                    [createdTime] => 1465548731699
                    [eventType] => 138311609000106303
                    [from] => u206d25c2ea6bd87c17655609a1c37cb8
                    [fromChannel] => 1341301815
                    [id] => WB1521-3502883001
                    [to] => Array
                        (
                            [0] => u0182d0ce673d4b950318618870074d49
                        )

                    [toChannel] => 1470435594
                )

        )

)

LINE推出BOT API聊天機器人


LINE 的 BOT API Trial Account可透過 LINE 連結現有系統或服務,設立能傳送或接收 API 驅動訊息的 BOT 帳號,開發出 LINE 使用者與企業間雙向溝通的 API 功能。

https://business.line.me/
https://developers.line.me/bot-api/getting-started-with-bot-api-trial

https://developers.line.me/bot-api/overview

https://github.com/line/line-bot-sdk-php

Line原創貼圖拼經濟!設計師新商機

5

Line在上個月開放LINE Creators Market註冊,5/8正式在LINE STORE亮相,目前排名第一名的是由台灣相機APP-香蕉相機所設計的香蕉人系列(香蕉人嬌嬌蕉香蕉弟弟兄弟)拔得頭籌。根據今天的新聞報導,個人原創貼圖是採設計者和LINE五五分帳,也讓推出短短二天的香蕉人就獲得三萬多的分紅(在前一天半天,就賺進台幣1萬多的分紅,第二天更達到2萬5)。

LINE提供的個人原創貼圖不只提供設計師曝光機會外,也可以賺取額外收入,有興趣想投入設計的朋友不妨參考。

 

1

2

3

相關下載:
香蕉人: http://goo.gl/15oi6I
嬌嬌蕉: http://goo.gl/zRwmYd
香蕉弟弟兄弟: http://goo.gl/V0KwdY

香蕉相機下載連結 >> APP Store

4

Line免費貼圖下載!(含快速下載連結)

馬上點連結下載
7/24為「熊大&兔兔(約會篇)」line://shop/detail/1036

7/25為「 兔兔(粉領OL篇)」line://shop/detail/1037

7/26為「饅頭人(火冒三丈篇)」line://shop/detail/911

7/27為「莎莉(特別篇)」line://shop/detail/912

可愛且逗趣的貼圖一向是 Line的主要賣點,該公司也宣佈貼圖約占2013年第一季總營收的 30%,也就是約 1,700 萬美金。

c3e84818

這次為了慶祝用戶破2億,也舉辦了貼圖限時免費的活動,不過這種約定時間開放下載的服務,是非常考驗主機的(因為大家都想第一時間拿到炫耀XD)。果不其然原本預計昨天開放第一梯次下載時,因為瞬間流量太大而導致系統故障延了一天,不過今天還是很多人無法下載到就是了XDD

活動內容如下:

80c38c71

7/24為「熊大&兔兔(約會篇)」(Brown & Cony’s Secret Date)

line://shop/detail/1036

7/25為「 兔兔(粉領OL篇)」(Cony’s Happy Work Life)

line://shop/detail/1037

7/26為「饅頭人(火冒三丈篇)」(Moon: Mad Angry Edition)

line://shop/detail/911

7/27為「莎莉(特別篇)」(Sally: Special Edition)。

line://shop/detail/912

不過有一個重點是這些貼圖效期為180天

呵呵~

訊息來源:

LINE官方部落格(lineblog.tw/archives/30744666.html

LINE facebook(www.facebook.com/taiwan.line