GP

gobinfan/python-mcp-server-client

Developer tools

このページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。 原文を見る

153 stars 39 forks 品質 53 トレンド 16

gobinfan/python-mcp-server-client は、[[T0]からインポートされたMCPサーバー候補です。

概要

gobinfan/python-mcp-server-client は、[[T0]からインポートされたMCPサーバー候補です。

概要(AI 翻訳)

中文 |英語

简介

MCP Server 是实现模型上下文协议(MCP)的服务器,旨在为 AI 模型提供一个标准化接口,连接外部数据源和工具,例如文件系统、データベース或 API。

MCP 的優勢

在 MCP 出现前,AI 调用工具基本通过 Function Call 完成,存在以下问题:

  1. 異なる大模型厂商 Function Call 格式不一致
  2. 大量 API 工具的输入和输出格式不一致,封装管理繁琐

MCP 相当于一个统一的 USB-C,不仅统一了不同大模型厂商的 Function Call 格式,也对相关工具的封装进行了统一。

MCP 传输协议

目前 MCP 支持兩種主要的传输協議:

  1. Stdio 传输协议
  • 针对本地使用
  • 需要在用户本地安装命令行工具
  • 对运行环境有特定要求
  1. SSE(Server-Sent Events)传输协议
  • 针对云服务部署
  • 基于 HTTP 长连接实现

项目结构

MCPサーバー

  • Stdio 传输协议(本地)
  • SSE 传输协议(远程)

MCP クライアント(客户端)

  • 自建客户端(Python)
  • カーソル
  • クライン

环境配置

1.取り付け UV 包

MacOS/Linux:

ウィンドウズ:

2.初始化项目

构建工具函数

为了让大模型能访问市面上主流框架的技术文档,我们主要通过用户输入的 query,结合指定 site 特定域名的Google搜索进行搜索相关网页,并对相关网页进行解析提取网页文本并返回。

1.构建相关文档映射字典

2.构建 MCP 工具

封装 MCP Server (基于 Stdio 协议)

1.MCPサーバー(スタンディオ)

启动命令:

2.客户端配置

2.1 基于 Cline

首先在 Visual Studio Code 安装 Cline 插件,然后进行配置 MCP

成功绑定如图(左侧绿灯):

2.2 基于 Cursor

项目根目录创建 .cursor 文件夹,并创建 mcp.json 文件,如:

その後粘贴以下内容到 mcp.json

成功配置如图:

在 Features 開启 MCP サービス

透過対話それ便通过 MCP 获取相关文档信息进行回答:

构建 SSE MCP Server (基于 SSE 协议)

1.封装 MCP Server

启动命令:

以上 MCP server コード直接在あなたの云服务器跑即可。

2.

このページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。

README

以下は原文 README の抜粋です。原文を見る。

Python 从0到1构建MCP Server & Client

中文 | English

简介

MCP Server 是实现模型上下文协议(MCP)的服务器,旨在为 AI 模型提供一个标准化接口,连接外部数据源和工具,例如文件系统、数据库或 API。

MCP 的优势

在 MCP 出现前,AI 调用工具基本通过 Function Call 完成,存在以下问题:

  1. 不同的大模型厂商 Function Call 格式不一致
  2. 大量 API 工具的输入和输出格式不一致,封装管理繁琐

MCP 相当于一个统一的 USB-C,不仅统一了不同大模型厂商的 Function Call 格式,也对相关工具的封装进行了统一。

MCP 传输协议

目前 MCP 支持两种主要的传输协议:

  1. Stdio 传输协议

    • 针对本地使用
    • 需要在用户本地安装命令行工具
    • 对运行环境有特定要求
  2. SSE(Server-Sent Events)传输协议

    • 针对云服务部署
    • 基于 HTTP 长连接实现

项目结构

MCP Server

  • Stdio 传输协议(本地)
  • SSE 传输协议(远程)

MCP Client(客户端)

  • 自建客户端(Python)
  • Cursor
  • Cline

环境配置

1. 安装 UV 包

MacOS/Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

2. 初始化项目

# 创建项目目录
uv init mcp-server
cd mcp-server

# 创建并激活虚拟环境
uv venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate

# 安装依赖
uv add "mcp[cli]" httpx

# 创建服务器实现文件
touch main.py

构建工具函数

为了让大模型能访问市面上主流框架的技术文档,我们主要通过用户输入的 query,结合指定 site 特定域名的谷歌搜索进行搜索相关网页,并对相关网页进行解析提取网页文本并返回。

1. 构建相关文档映射字典

docs_urls = {
    "langchain": "python.langchain.com/docs",
    "llama-index": "docs.llamaindex.ai/en/stable",
    "autogen": "microsoft.github.io/autogen/stable",
    "agno": "docs.agno.com",
    "openai-agents-sdk": "openai.github.io/openai-agents-python",
    "mcp-doc": "modelcontextprotocol.io",
    "camel-ai": "docs.camel-ai.org",
    "crew-ai": "docs.crewai.com"
}

2. 构建 MCP 工具

import json
import os
import httpx
from bs4 import BeautifulSoup
from mcp import tool

async def search_web(query: str) -> dict | None:
    payload = json.dumps({"q": query, "num": 3})

    headers = {
        "X-API-KEY": os.getenv("SERPER_API_KEY"),
        "Content-Type": "application/json",
    }

    async with httpx.AsyncClient() as client:
        try:
            response = await client.post(
                SERPER_URL, headers=headers, data=payload, timeout=30.0
            )
            response.raise_for_status()
            return response.json()
        except httpx.TimeoutException:
            return {"organic": []}

async def fetch_url(url: str):
    async with httpx.AsyncClient() as client:
        try:
            response = await client.get(url, timeout=30.0)
            soup = BeautifulSoup(response.text, "html.parser")
            text = soup.get_text()
            return text
        except httpx.TimeoutException:
GitHub で README 全文を見る

インストール

This server does not publish a one-line install command.

Open the repository installation guide MCP 初心者?mcpskill.org のガイドから始めましょう →

設定

{ "mcpServers": { "mcp-server": { "command": "uv", "args": [ "--directory", "<你的项目路径>", "run", "main.py" ] } } }