从零开始学MCP(八)- 构建一个MCP server

在本教程中,我们将通过构建一个简单的MCP server,并通过 OpenMCP进行测试。

MCP核心概念

MCP servers可以提供三种主要类型的功能:

  1. Resources: 客户端可以读取的类文件数据(如API响应或文件内容)
  1. Tools: LLM可以调用的函数(经过用户批准)
  1. Prompts: 帮助用户完成特定任务的预编写模板

本教程使用Python进行演示(当然还可使用TypeScript、Java、Rust等其他语言, 参考)。

📝 日志处理指南

在开发 MCP 服务器时,日志记录方式取决于服务器的传输协议。请根据您的实现方式遵循以下准则:

1. STDIO 基础服务器

严禁向标准输出写入任何内容。

  • 🚫 禁止操作: 所有的调试打印语句(如 print() 、 console.log() 、 fmt.Println() 等)。
  • ⚠️ 后果: 任何写入标准输出的内容都会破坏 JSON-RPC 消息流,导致服务器通信中断。

2. HTTP 基础服务器

标准输出日志是安全的。

  • ✅ 允许操作: 可以正常使用标准输出进行日志记录。
  • 💡 原因: 日志输出不会干扰 HTTP 响应数据。

安装 uv

本次将使用 uv 来管理项目

uv是用 Rust 编写的 Python 超快包管理器,可替代 pip 、 venv 和 pip-tools ,极速安装依赖并管理虚拟环境。

如果你还未使用过uv,请先下载安装:

复制代码
pip install uv

查看 uv 的版本:

复制代码
uv version

输出以下内容代表安装成功(版本号取决于你安装的版本)

scss 复制代码
uv 0.8.22 (ade2bdbd2 2025-09-23)

快速开始

创建项目并初始化

bash 复制代码
mkdir -p ~/codes/my_first_mcp

cd ~/codes/my_first_mcp

uv init --no-workspace

添加MCP相关库

csharp 复制代码
uv add "mcp[cli]"

修改main.py

python 复制代码
from mcp.server.fastmcp import FastMCP

# 初始化 FastMCP 服务器
mcp = FastMCP("我的第一个MCP")

@mcp.tool(name="greet", description="两个数相加")
def add(a: int, b: int) -> int:

    return a + b

@mcp.resource("resource://{name}")
def get_greeting(name: str) -> str:
    """"根据resource中的名字向他问好(资源名建议为英文,否则出现乱码)"""
    return f"Hello, {name}!"

@mcp.prompt()
def greet_user(name: str, style: str = "friendly") -> str:
    styles = {
        "friendly": "写一个温暖友好的问候语",
        "formal": "写一个正式的问候语",
        "casual": "写一个随意的问候语"
    }
    return f"给{name}{styles.get(style, styles['friendly'])}"

# 以http方式启动服务器
if __name__ == "__main__":
    mcp.run(transport="streamable-http")

测试

安装OpenMCP, 参考,效果如下


欢迎加入我的【ima知识库】 从零开始学MCP

相关推荐
yunfuuwqi4 小时前
OpenClaw✅真·喂饭级教程:2026年OpenClaw(原Moltbot)一键部署+接入飞书最佳实践
运维·服务器·网络·人工智能·飞书·京东云
九河云4 小时前
5秒开服,你的应用部署还卡在“加载中”吗?
大数据·人工智能·安全·机器学习·华为云
人工智能培训5 小时前
具身智能视觉、触觉、力觉、听觉等信息如何实时对齐与融合?
人工智能·深度学习·大模型·transformer·企业数字化转型·具身智能
wenzhangli75 小时前
能力中心 (Agent SkillCenter):开启AI技能管理新时代
人工智能
肖永威5 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos
后端小肥肠5 小时前
别再盲目抽卡了!Seedance 2.0 成本太高?教你用 Claude Code 100% 出片
人工智能·aigc·agent
TechWJ5 小时前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
每日新鲜事5 小时前
热销复盘:招商林屿缦岛203套售罄背后的客户逻辑分析
大数据·人工智能
枷锁—sha5 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
Coder_Boy_5 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端