MCP服务器构建工具

使用Python和MCP SDK构建可被LLMs(如ChatGPT)调用的工具服务器,支持本地和HTTP模式运行,并可集成到Open WebUI等平台。

  • by ryanbrito
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ryanbrito/mcp-server-example

使用说明

🧠 使用 Python 的 MCP 服务器 – 实用教程

本仓库演示如何使用官方的 Microsoft Python SDK 创建模型上下文协议 (MCP) 服务器。工程显示如何定义工具 (@tool这些模型可以被LLM使用,例如ChatGPT或Open WebUI等环境中的模型。


🚀 使用的技术


⚙️ 安装

# 1. Crie o ambiente virtual com uv
uv venv .venv
source .venv/bin/activate

# 2. Instale o SDK MCP, CLI e mcpo
uv add mcp mcp[cli] mcpo

🧩 项目结构

📁 projeto/
├── main.py         # Arquivo principal com o servidor MCP
├── README.md       # Este arquivo
└── .venv/          # Ambiente virtual (não versionar)

🛠️ 代码示例 - main.py

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Tutorial MCP")

@mcp.tool()
def get_tutorial_summary():
    """
    Returns the summary of an MCP Server Tutorial

    :return: Um resumo textual sobre como construir um servidor MCP.
    """
    return (
        "Configure o ambiente com uv.\n"
        "Instale com: uv add mcp mcp[cli] mcpo\n"
        "Implemente funções com @tool\n"
        "Execute com mcpo\n"
        "Consuma via cliente MCP ou Open WebUI."
    )

@mcp.tool()
def somar(a: int, b: int) -> int:
    """
    Soma dois números inteiros e retorna o resultado.

    :param a: O primeiro número.
    :param b: O segundo número.
    :return: O resultado da soma entre a e b.
    """
    return a + b

if __name__ == "__main__":
    mcp.run(transport="stdio")  # Execução local

▶️ 如何执行

🔹 1.本地模式(stdio)

.venv/bin/python main.py

欧点

mcp run main.py # Para executar o servidor de forma padrão

mcp dev main.py # Para Testar o servidor em modo desenvolvedor

mcp install main.py # Para instalar localmente no Claude Desktop

此模式非常适合使用 MCP CLI 进行本地测试。


🔹 2. HTTP com 模式 mcpo 用于 OpenAPI 文档和 OpenWebUI 集成

mcpo --port 8000 -- .venv/bin/python main.py
  • 访问交互式文档:
    👉 http://localhost:8000/docs

  • 服务器现在可以作为RESTful API使用。


🤖 与 Open WebUI 集成

以以下方式启动服务器后 mcpo你可以将它连接到 打开WebUI 或其他支持MCP协议的LLM工具。

  1. 转到您的 Open WebUI 实例
  2. 转到设置
  3. Clique em Tools
  4. 输入新 MCP 服务器的 URL : http://localhost:8000

欲了解更多信息,请点击这里。


📘 关于函数中的 docstrings

卡达 @mcp.tool() 它必须包含一个 清晰完整的docstring从:

  • 自动显示在 OpenAPI 文档中。
  • 是 使用 AI 根据用户对 AI 的查询/查询来决定使用哪个函数。

🔥 写得好 Docstrings 大大提高了 LLM 的可用性。


📢 贡献

Pull Requests 欢迎!随时建议新工具,改进示例或扩展教程。