模型上下文协议框架

FastMCP是一个Python框架,用于构建MCP服务器,使AI助手能够与外部工具和数据源交互,支持工具、资源和提示三种核心功能。

  • by sivraamkrishnankv
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 sivraamkrishnankv/learning-MCP

使用说明

使用FastMCP测试MCP(模型上下文协议)

本文档涵盖了我使用FastMCP对模型上下文协议的实践探索,演示了三个核心MCP原语:工具、资源和提示。

概述

FastMCP是一个Python框架,用于构建MCP服务器,使AI助手能够与外部工具和数据源进行交互。此演示以简单、可测试的格式实现了三个关键的MCP功能。

代码实现

from mcp.server.fastmcp import FastMCP

app = FastMCP("demo")

@app.tool()
def add(a: int, b: int) -> int:
    """ returns addition of two number """
    return a + b

@app.resource("greeting://{name}")
def get_greeting(name: str) -> str:
    """ generate a greeting name """
    return f"Hello, {name}!"

@app.prompt()
def greet_user(name: str, style: str = "friendly") -> str:
    """Generate a greeting prompt"""
    styles = {
        "friendly": "Please write a warm, friendly greeting",
        "formal": "Please write a formal, professional greeting",
        "casual": "Please write a casual, relaxed greeting",
    }
    return f"{styles.get(style, styles['friendly'])} for someone named {name}."

关键概念测试

1.工具(@app.tool())

工具允许AI助手执行动作或计算。

例子: add() 函数

  • 接受两个整数作为输入
  • 返回它们的总和
  • 可由AI调用以执行计算

使用案例: 当AI需要计算时 5 + 3,它可以调用此工具并接收 8 结果。

2.资源(@app.resource())

资源通过基于URI的标识符提供对数据的访问。

例子: get_greeting() 函数

  • 使用URI模式: greeting://{name}
  • 根据name参数动态生成问候语
  • 返回格式化的问候字符串

使用案例: 访问 greeting://Alice 回报 "Hello, Alice!",而 greeting://Bob 回报 "Hello, Bob!"

3.提示(@app.prompt())

提示是可重用的模板,有助于构建人工智能交互。

例子: greet_user() 函数

  • 接受名称和可选样式参数
  • 支持三种风格:友好(默认)、正式和休闲
  • 返回一个格式化的提示,让AI生成适当的问候语

使用案例: 召唤 greet_user("Sarah", "formal") 生产: "Please write a formal, professional greeting for someone named Sarah."

学习心得

通过测试这段代码,我了解到MCP提供了一种标准化的方法来:

  • 将计算函数作为工具公开
  • 通过资源URI共享数据
  • 创建可重用的提示模板

每个装饰器都将一个常规的Python函数转换为MCP原语,AI助手可以自动发现和使用它。