Token导航 LogoToken导航TokenDH.com
MCP Weather Tool Demo logo
运维云端未说明官方级别未说明来源级核验

MCP Weather Tool Demo

MCP Server

一个连接FastAPI和MCP服务器的桥接服务,用于高效安全地在网络中暴露AI工具功能。

工具数

1

提示词数

0

GitHub Stars

0

资源数

0
FastAPIPython本地部署

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

praveen1817

提供方

praveen1817

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

🌉 MCP网桥架构——FastAPI+MCP服务器

一种生产风格的桥接架构,使用持久异步连接将FastAPI web层与MCP工具服务器连接起来。这种设计允许您在网络中高效安全地公开人工智能工具(如天气查找)。

______________________________________________________________________

✅ 这个项目展示了什么

  • MCP客户端/服务器工具通信
  • 基于FastAPI生命周期的持久连接
  • 使用AsyncExitStack进行异步上下文管理
  • 支持握手的MCP使用
  • 通过桥接层调用低延迟工具
  • 清洁API层与工具工人之间的隔离

______________________________________________________________________

🧠 架构概述

这个项目建造了一座桥。

  • 一边:MCP服务器——知道如何获取天气数据的工作人员
  • 另一方面:FastAPI服务器-公开友好的API的管理器
  • 中间:网桥层(MCPManager)——维护持久的MCP连接

您的应用程序不直接调用天气API,而是询问网桥,网桥询问MCP服务器,结果会返回。

客户端应用程序→ FastAPI桥→ 持久MCP客户端→ MCP服务器工具→ 天气API

这种架构允许您在多个应用程序和服务之间共享AI工具。

______________________________________________________________________

⚠️ 错误日志——连接难题和修复

最重要的学习来自调试MCP连接问题。

🧩 错误1--无握手错误

错误:

运行时错误:客户端未连接。首先使用“async with client:”上下文管理器。

为什么会发生:

MCP是有状态的。在允许工具调用之前,需要握手。

修复:

用途:

与客户端异步(…)

这确保了:

  • 连接打开
  • 握手完成
  • 工具变得可调用
  • 清理工作安全进行

______________________________________________________________________

🧩 错误2——握手延迟问题

问题:

每个/天气请求都创建了一个新的MCP连接+握手。

为什么重要:

  • 每次握手花费约100-300ms
  • 高流量→ 握手风暴
  • 服务器速度减慢

修复:

将连接移动到FastAPI生命周期中。

结果:

  • 启动时连接一次
  • 为所有请求重用连接
  • 关机时关闭一次

______________________________________________________________________

🧩 错误3-404未找到

错误:

httpx。HTTPStatusError:404找不到/sse

原因:

客户端路径与服务器路径不匹配。 预期客户/sse 服务器暴露/mcp

修复:

将客户端URL与MCP服务器路由精确对齐。

______________________________________________________________________

⚙️ 使用的先进概念

异步编程(Async/await)

Async允许服务器在等待工具/API响应时处理其他用户。

就像一个服务员为多张桌子服务,而不是在厨房等着。

等待tool_call()

______________________________________________________________________

AsyncExitStack——上下文背包

异步上下文管理器的可重用容器。

正常: 与客户端异步→ 封锁后立即关闭

异步退出堆栈:

  • 输入一次
  • 保持全球开放
  • 稍后手动关闭
  • 跨路线共享连接

______________________________________________________________________

FastAPI生命周期事件

控制启动和关闭行为。

用于管理MCP连接生命周期。

初创公司→ 连接到MCP\ 运行时→ 重复使用连接\ 关机→ 关闭连接

______________________________________________________________________

📁 最终代码结构

项目/ ├── 客户端.py ├── mcp_manager.py └── README.md

______________________________________________________________________

🧩 mcp_manager.py--连接中心

from contextlib import AsyncExitStack
from fastmcp import Client

class MCPManager:
    def __init__(self, url: str):
        self.url = url
        self.client = Client(self.url)
        self._stack = AsyncExitStack()

    async def connect(self):
        await self._stack.enter_async_context(self.client)
        print(f"✅ Persistent MCP Connection Active: {self.url}")

    async def disconnect(self):
        await self._stack.aclose()
        print("🔌 MCP Connection Closed.")

mcp_hub = MCPManager("http://127.0.0.1:8000/mcp")

______________________________________________________________________

🌐 client.py——快速API桥

from fastapi import FastAPI
from contextlib import asynccontextmanager
from mcp_manager import mcp_hub

@asynccontextmanager
async def lifespan(app: FastAPI):
    await mcp_hub.connect()
    yield
    await mcp_hub.disconnect()

app = FastAPI(lifespan=lifespan)

@app.post("/weather")
async def weather_route(city: str):
    return await mcp_hub.client.call_tool(
        "get_weather",
        {"city": city}
    )

______________________________________________________________________

🚀 快速入门(不到2分钟)

  1. 启动MCP服务器

python mcpserver.py

  1. 启动FastAPI桥

uvicorn客户端:应用程序--reload

  1. 呼叫天气端点

卷曲-X POST”http://127.0.0.1:8001/weather?city=London"

______________________________________________________________________

📊 初学者总结表

概念|简单含义|用例 Stdio |本地电缆|桌面工具应用程序 HTTP/SSE |远程链接|网络/云工具 上下文管理器|握手+清理| MCP需要 异步|非阻塞工作|工具/API调用 寿命|启动/关闭挂钩|持久连接

______________________________________________________________________

🎯 为什么这种模式很强大

  • 消除重复的MCP握手
  • 减少延迟
  • 支持高并发性
  • 清洁建筑分离
  • 工具服务器成为可重用的基础设施
  • 适用于AI代理和MCP生态系统

______________________________________________________________________

📌 许可证

麻省理工学院——免费用于学习和构建人工智能工具基础设施。

目录标签

目录标签

FastAPIPython本地部署AI工具MCP服务器异步连接桥接层

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

1

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP