如何让大型语言模型(LLM)具备与外部工具和资源交互的能力变得至关重要。Model Context Protocol(MCP)作为一种新兴的标准化协议,为我们提供了构建这类智能应用的新途径。本文将详细介绍如何使用FastMCP框架构建一个简单的MCP服务,并与Cherry Studio进行集成测试。

什么是MCP

Model Context Protocol(MCP)是一种开放协议,旨在为AI模型与其运行环境之间建立标准化的通信机制。通过MCP,AI模型可以发现和使用各种工具、资源和提示词,从而扩展其能力边界。MCP的主要特点包括:

  • 标准化接口:提供统一的API规范,便于不同组件间的互操作
  • 可扩展性:支持自定义工具、资源和提示词的添加
  • 多传输协议:支持多种通信方式,包括HTTP、SSE、stdio等
  • 安全性:通过明确定义的接口控制模型对系统资源的访问

FastMCP框架简介

FastMCP是一个基于Python的MCP实现框架,它大大简化了MCP服务的开发过程。通过装饰器模式,开发者可以快速地将普通函数转换为MCP工具、资源或提示词,而无需深入了解底层协议细节。

FastMCP的核心优势包括:

  • 简洁的API设计
  • 多种传输协议支持
  • 自动化的接口文档生成
  • 易于集成到现有项目中

环境准备

在开始之前,我们需要准备以下环境:

  1. Python 3.8+

  2. 安装FastMCP及相关依赖:

    pip install mcp[cli]
    
  3. 安装Cherry Studio(或其他支持MCP的客户端)

构建MCP服务端

创建基础服务器

我们首先创建一个基本的MCP服务器:

from mcp.server.fastmcp import FastMCP

# 创建一个MCP服务器
mcp = FastMCP("Demo", json_response=True)

这里我们创建了一个名为"Demo"的MCP服务器实例,并启用了JSON响应格式。

添加工具功能

工具是MCP中最常用的功能之一,它允许模型执行特定的操作。我们添加一个简单的加法工具:

@mcp.tool()
def add(a: int, b: int) -> int:
    """将两个数字相加"""
    return a + b 

通过@mcp.tool()装饰器,我们将普通的Python函数转换为MCP工具,模型可以在需要时调用此工具执行加法运算。

添加资源功能

资源是可供模型读取的数据源。我们创建一个动态问候资源:

@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
    """获取个性化问候语"""
    return f"Hello, {name}!我听说你在学MCP!真是泰裤辣!"

这个资源使用URI模板格式定义,其中{name}是可变参数,允许模型根据不同的名字获取个性化的问候语。

添加提示词功能

提示词功能可以帮助模型生成更加规范和一致的文本内容:

@mcp.prompt()
def greet_user(name: str, style: str = "friendly") -> str:
    """生成问候语提示词"""
    styles = {
        "friendly": "请写一个温暖友好的问候语",
        "formal": "请写一个正式专业的问候语",
        "casual": "请写一个随意轻松的问候语",
    }
    
    return f"{styles.get(style, styles['friendly'])} 给一个叫{name}的人。"

通过这个提示词功能,模型可以根据不同的风格要求生成相应的问候语。

运行MCP服务

完成上述功能定义后,我们需要启动MCP服务:

if __name__ == "__main__":
    mcp.run(transport="sse")

这里我们选择使用SSE(Server-Sent Events)传输协议运行服务。FastMCP还支持其他传输方式,如streamable-httpstdio

与Cherry Studio集成

连接MCP服务

在Cherry Studio中,我们需要配置MCP连接参数以连接到我们刚刚创建的服务。
在这里插入图片描述

调用工具

连接成功后,在Cherry Studio中我们可以看到已注册的[add]工具。通过自然语言指令,如"计算10和20的和",Cherry Studio会自动调用我们的加法工具并返回结果。
在这里插入图片描述

访问资源

对于资源访问,在SSE传输模式下,我们需要通过MCP协议的标准消息格式来请求资源。在Cherry Studio中,可以通过类似"获取给Alice的问候语"这样的指令来触发对greeting://Alice资源的访问。

使用提示词

提示词功能可以帮助模型生成更加规范的内容。当我们请求"用正式的风格给张三写一个问候语"时,Cherry Studio会使用我们的[greet_user]提示词功能来指导模型生成相应的内容。

总结

通过本文的介绍,我们学习了如何使用FastMCP框架构建一个简单的MCP服务,并与Cherry Studio进行集成。MCP为我们提供了一种标准化的方式来扩展AI模型的能力,使其能够与外部工具和资源进行交互。

随着MCP生态的发展,我们可以期待更多创新的应用场景出现。无论是构建智能助手、自动化工作流还是复杂的AI代理系统,MCP都将成为重要的技术基石。

在未来的学习和实践中,建议深入研究MCP协议的更多高级特性,如权限控制、状态管理、异步操作等,以充分发挥其潜力。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐