从零开始学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

相关推荐
木棉知行者2 小时前
PyTorch 核心方法:state_dict ()、parameters () 参数打印与应用
人工智能·pytorch·python
爱打代码的小林2 小时前
机器学习基础(线性,逻辑回归)
人工智能·机器学习·逻辑回归·线性回归
xingzhemengyou12 小时前
python time的使用
python
cetcht88882 小时前
配电房 AI 巡检机器人系统:技术架构、核心功能与工程实现全解析
人工智能·架构·机器人
m0_626535202 小时前
看模型结构 分析模型结构
人工智能·机器学习
码界奇点2 小时前
基于Python与GitHub Actions的正方教务成绩自动推送系统设计与实现
开发语言·python·车载系统·自动化·毕业设计·github·源代码管理
TaoSense2 小时前
机器人市场洞察报告
人工智能·机器人
道19932 小时前
PyTorch 从小白到高级全阶段学习大纲(一)
人工智能·pytorch·学习
我要学脑机2 小时前
关于脑动态网络研究的一些方法和论文
人工智能