成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MCP協議之MCP-server(sse方式)實踐 原創

發布于 2025-4-3 10:50
瀏覽
0收藏

背景

在《MCP協議簡述之MCP-server實戰》中,我們實現了一個本地的MCP-server,然后在支持MCP協議的客戶端程序(如cursor、cherry-studio)中配置調用了該MCP-server。本章主要探索如何將MCP-server發布為遠程服務,使得其他用戶可以直接使用MCP-server。

回顧問題

在上一章,我們在cherry-studio中配置了獲取天氣的本地mcp-server,關鍵配置如下:

{
    "mcpServers":{
        "weather":{
            "command":"/Users/deadwalk/.local/bin/uv",
            "args":[
                "--directory",
                "/Users/deadwalk/Code/ai_proj_agent/weather",
                "run",
                "weather.py"
            ]
        }
    }
}

這種方式的主要問題是:weather這個mcp-server是本地的,只有當前本地用戶才能使用,網絡上的其他用戶是無法使用的。

解決方案

我們需要將MCP-server進行改造,使得其他用戶可以直接使用。

MCP-server改造前的實現

  1. 導入包并設置實例

from typing import Any, Dict
import httpx
from mcp.server.fastmcp import FastMCP

# 初始化FastMCP服務器
mcp = FastMCP("weather")

# 常量
BAIDU_API_BASE = "https://api.map.baidu.com/weather/v1/"
BAIDU_API_KEY = "8HkEwz5h********"
  1. 實現入口函數的部分

if __name__ == "__main__":
    # 初始化并運行服務器
    mcp.run(transport='stdio')

MCP-server源碼分析

通過查看FastMCP的源碼,可以看到FastMCP在實例化對象的時候,是可以配置setting的

class FastMCP:
    def __init__(
        self, name: str | None = None, instructions: str | None = None, **settings: Any
    ):
        self.settings = Settings(**settings)        #  這里就是設置實例的設置

        self._mcp_server = MCPServer(
            name=name or "FastMCP",
            instructions=instructions,
            lifespan=lifespan_wrapper(self, self.settings.lifespan)
            if self.settings.lifespan
            else default_lifespan,
        )
    # 以下內容省略

進一步查看settings的源碼,可以看到setting中可以配置host、port\message_path\lifespan等參數。

class Settings(BaseSettings, Generic[LifespanResultT]):
    """FastMCP server settings.

    All settings can be configured via environment variables with the prefix FASTMCP_.
    For example, FASTMCP_DEBUG=true will set debug=True.
    """

    model_config = SettingsConfigDict(
        env_prefix="FASTMCP_",
        env_file=".env",
        extra="ignore",
    )

    # Server settings
    debug: bool = False
    log_level: Literal["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"] = "ERROR"

    # HTTP settings
    host: str = "0.0.0.0"
    port: int = 8000
    sse_path: str = "/sse"
    message_path: str = "/messages/"

    # resource settings
    warn_on_duplicate_resources: bool = True

    # tool settings
    warn_on_duplicate_tools: bool = True

    # prompt settings
    warn_on_duplicate_prompts: bool = True

    dependencies: list[str] = Field(
        default_factory=list,
        description="List of dependencies to install in the server environment",
    )

    lifespan: (
        Callable[[FastMCP], AbstractAsyncContextManager[LifespanResultT]] | None
    ) = Field(None, description="Lifespan context manager")

MCP-server改造后的實現

  1. 導入包并設置實例

from typing importAny, Dict
import httpx
from mcp.server.fastmcp import FastMCP

# 初始化FastMCP服務器
# mcp = FastMCP("weather")
mcp = FastMCP(
    name="weather",
    host="0.0.0.0",
    port=8000,
    description="獲取指定城市的當前天氣信息",
    sse_path='/sse'
)

# 常量
BAIDU_API_BASE = "https://api.map.baidu.com/weather/v1/"
BAIDU_API_KEY = "8HkEwz5h********"

2. 實現入口函數的部分

if __name__ == "__main__":
    # 初始化并運行服務器
    try:
        print("Starting server...")
        mcp.run(transport='sse')
    except Exception as e:
        print(f"Error: {e}")

3. 在命令行中啟動服務

uv run weather.py

客戶端中使用

1. 在cherry-studio中集成使用

在局域網另外一臺機器上,打開cherry-studio的配置,在MCP服務中配置連接如下;

{
  "mcpServers": {
    "weather_demo": {
      "description": "這是一個weather的demo",
      "isActive": true,
      "baseUrl": "http://192.168.6.164:8000/sse"
    }
  }
}

備注:

  • 192.168.6.164是mcp-server的ip地址,端口為8000
  • 由于我們使用的是sse協議,所以需要將baseUrl設置為sse協議,即http://192.168.6.164:8000/sse

實際實驗效果:

MCP協議之MCP-server(sse方式)實踐-AI.x社區

2. 在cursor中集成使用

{
  "mcpServers": {
    "weather": {
      "url": "http://192.168.6.164:8000/sse"
    }
  }
    
}

實際實驗效果:

MCP協議之MCP-server(sse方式)實踐-AI.x社區

3. 在cline中集成使用

在cline中嘗試了多種方式配置,均未能成功,在github中找到了相應的issue,可能需要關注該項目后續的修復進展。

總結

  • 通過對mcp-server的改造,在實例化mcp-server的時候,配置相應的host、port,可以實現sse協議的部署。
  • 通過服務部署之后,其他用戶可以在支持mcp的客戶端中,通過mcp-server的url進行調用。

?

本文轉載自公眾號一起AI技術 作者:熱情的Dongming

原文鏈接:??https://mp.weixin.qq.com/s/MPHvQq-1TUT2jKNGPGZ02g??

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 日韩一区二区三区在线观看 | 在线日韩| 色综合色综合色综合 | 久久99网 | 狠狠的日| 日韩欧美综合在线视频 | 精品国产一区二区在线 | 国产精品日韩欧美一区二区 | 99热这里有精品 | 天天天插 | aaa天堂 | 国产色婷婷精品综合在线手机播放 | 中文字幕在线二区 | 日韩和的一区二在线 | 国产精品毛片久久久久久久 | 国产精品一区免费 | 国产亚洲精品久久午夜玫瑰园 | 亚洲国产成人精品久久久国产成人一区 | 亚洲三级免费看 | 日日夜夜狠狠操 | 亚洲综合大片69999 | 国产亚洲精品久久yy50 | 99爱视频 | 91网在线播放| www.色.com | 久久久久亚洲精品 | 日韩一级免费看 | 亚洲精品久久久一区二区三区 | 国产真实乱对白精彩久久小说 | 黄色免费网 | 理论片午午伦夜理片影院 | 欧美国产视频 | 久久精品中文字幕 | 久在线| 日本在线视频一区二区 | 丝袜久久| 色婷婷在线视频 | 国产伦精品一区二区三区四区视频 | 黄色高清视频 | 午夜影院 | 四虎影院久久 |