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

相关推荐
李可以量化几秒前
Redis 从了解到精通(一・上):量化开发必学的三大基础数据类型
python
katttt_4 分钟前
实体经营,优先选卡特加特垂域专用AI
人工智能·卡特加特
阿里云大数据AI技术8 分钟前
EMR Daft × Qoder:一句话生成并运行智驾数据处理 Pipeline
人工智能
you鬰9 分钟前
datawhale--llm-algo-leetcode0️⃣
python
OceanBase数据库官方博客17 分钟前
OceanBase Harness Engineering?AI 产品真正的瓶(技术解析与实践)
大数据·人工智能·oceanbase
兰亭妙微UI设计公司17 分钟前
兰亭妙微 UX 实战:新手引导全类型设计入门指南
人工智能·ux
手写码匠23 分钟前
华为云Flexus+DeepSeek征文|Dify 多 Agent 故障演练实战:用混沌工程主动“搞破坏“,让智能体系统越炸越稳
人工智能·深度学习·算法·aigc
Summer-Bright26 分钟前
[马斯克600亿买下Cursor] —— AI 应用简报 08.13-08.17
人工智能·ai·ai应用·马斯克
IT学长编程29 分钟前
计算机毕业设计 基于用户评论主题挖掘的旅游景点推荐系统 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
大数据·python·django·毕业设计·数据可视化分析·旅游景点推荐系统·基于用户评论主题挖掘
内蒙深海大鲨鱼32 分钟前
5.Introduction to PyTorch YouTube Series--visualable train
人工智能·pytorch·python