掘金 人工智能 06月02日 16:43
从入门到实践:构建你的第一个 MCP Server
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了MCP(模型上下文协议)的核心概念和实践方法。首先,概述了MCP的架构,包括MCP主机、客户端、服务器以及本地和远程资源。接着,详细阐述了MCP的交互流程,以及MCP服务器的关键功能,如资源、工具和提示。最后,通过一个最小化的MCP服务器示例,指导读者如何构建和调试MCP服务,为AI应用的开发提供了有价值的参考。

💡 MCP 架构由多个关键组件构成,包括发起请求的LLM应用程序(MCP主机)、与服务器保持连接的客户端、提供上下文和工具的服务器,以及本地和远程资源。这些组件协同工作,为LLM提供丰富的上下文信息和操作能力。

⚙️ MCP 交互流程定义了客户端与服务器之间的通信方式。客户端首先获取可用工具列表,然后将用户查询和工具描述发送给LLM。LLM决定是否使用工具,客户端通过服务器执行工具调用,并将结果返回给LLM,最终生成自然语言响应并展示给用户。

🛠️ MCP 服务器提供三种主要类型的功能:资源、工具和提示。资源类似于文件数据,可供客户端读取;工具是LLM可调用的函数;提示是预先编写的模板。这些功能增强了LLM的实用性和灵活性。

💻 构建 MCP 服务器是开发 AI 应用的关键,因为 MCP Client 相对固定。不同的业务场景需要不同的工具和资源,因此需要开发各种MCP服务器来满足需求。了解 MCP Server 的开发流程很有价值。

🚀 通过一个最小化的 MCP 服务器示例,展示了如何使用 Python SDK 快速构建 MCP 服务。该示例包括安装环境、创建 server.py 文件,并添加一个加法工具和一个动态问候资源。通过 MCP Inspector 进行调试,用户可以直观地查看和测试 MCP 服务器的功能。

MCP 模型上下文协议

前言

昨天看到一个抖音MCP服务的源码,发现实现起来还是比较清晰的。萌生了自己动手试着做了一个的想法,以此来加深对MCP理解。先回顾迭代一下MCP的一些相关知识,然后跑通一个简单的MCP服务demo。

MCP 核心架构

交互流程

MCP client 充当 LLM 和 MCP server 之间的桥梁,MCP client 的工作流程如下:

    1. MCP client 首先从 MCP server 获取可用的工具列表。2. 将用户的查询连同工具描述通过 function calling 一起发送给 LLM。3. LLM 决定是否需要使用工具以及使用哪些工具。4. 如果需要使用工具,MCP client 会通过 MCP server 执行相应的工具调用。5. 工具调用的结果会被发送回 LLM。6. LLM 基于所有信息生成自然语言响应。7. 最后将响应展示给用户。

构建 MCP Server

MCP Server 是 MCP 架构中的关键组件,它可以提供 3 种主要类型的功能:

这些功能使 MCP server 能够为 AI 应用提供丰富的上下文信息和操作能力,从而增强 LLM 的实用性和灵活性。

AI 应用的开发更多的是需要编写的不同的 MCP Server,因为 MCP Client 相对固定,且有很多现成的工具实现了这一部分。,不同的业务场景需要使用不同的工具和资源,意味着需要开发出各种各样的 MCP server,来为大模型提供工具和资源。

因此了解 MCP Server 的开发流程很有价值。

最小的 MCP Server 样例

学习新东西,最好先从最小且必要的开始。以下就是 mcp 的 python SDK 中 Quickstart 的样例:

安装环境

推荐使用 uv 来进行 python 项目管理

# 安装uvcurl -LsSf https://astral.sh/uv/install.sh | sh# 创建名为“mcp-server-demo”的项目uv init mcp-server-demo# 进入项目根目录cd mcp-server-demo# 创建虚拟环境venvuv venv# 进入项目虚拟环境source .venv/bin/activate# 安装项目依赖包uv add "mcp[cli]"

新增 server 代码文件

创建 server.py 文件,添加以下代码。

代码来源:github.com/modelcontex…

# server.pyfrom mcp.server.fastmcp import FastMCP# Create an MCP servermcp = FastMCP("Demo")# Add an addition tool@mcp.tool()def add(a: int, b: int) -> int:    """Add two numbers"""    return a + b# Add a dynamic greeting resource@mcp.resource("greeting://{name}")def get_greeting(name: str) -> str:    """Get a personalized greeting"""    return f"Hello, {name}!"

调试

为了调试,运行以下命令,使用 MCP Inspector 来运行 MCP 服务器。

MCP Insepector 会提供一个直观的调试页面,

mcp dev server.py

运行成功后会输出类似: MCP Inspector is up and running at http://127.0.0.1 ,浏览器访问地址这个地址,可以看到如下页面,然后依次点开:Connect》Tools,即可查看到当前 mcp server 拥有的一个名为“add”的工具。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

MCP LLM AI开发 模型上下文协议
相关文章