掘金 人工智能 9小时前
MCP入门指南:打造智能AI工具的第一步
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了MCP(Model Control Protocol)框架,这是一个用于创建、管理和调用AI工具、资源和提示模板的强大工具。通过一个简单的价格计算示例,展示了如何使用MCP构建AI增强应用,包括定义工具函数、创建资源和设计提示模板,以及如何通过客户端与这些组件交互。文章还提供了运行示例的详细步骤,帮助开发者快速掌握MCP的核心功能,构建自己的AI应用。

💡 MCP 框架是专为 AI 应用设计的协议框架,它提供了标准化的方式来定义和调用工具、管理资源以及创建提示模板。

⚙️ MCP 的核心组件包括工具(Tools)、资源(Resources)和提示模板(Prompts)。工具是可以被AI调用的函数,资源是可以被访问的静态或动态数据,提示模板用于生成结构化提示的模板函数。

🛠️ 文章通过一个价格计算器的实战示例,展示了如何定义工具函数 calculate_price 来计算折扣价格,以及如何添加资源 pricing_policy_resource 来存储定价策略。

📝 示例还演示了如何创建提示模板 price_calculator_prompt,用于生成价格计算的提示,并展示了客户端如何调用工具、访问资源和获取渲染后的提示模板。

MCP(Model Control Protocol)是一个强大的框架,让开发者能够轻松创建、管理和调用AI工具、资源和提示模板。本文将介绍MCP的基础概念,并通过一个简单的价格计算示例,展示如何使用MCP构建自己的AI增强应用。我们将探讨如何定义工具函数、创建资源和设计提示模板,以及如何通过客户端与这些组件进行交互。无论你是AI开发新手还是有经验的工程师,这篇指南都将帮助你快速掌握MCP的核心功能。

MCP简介

MCP是一个专为AI应用设计的协议框架,它提供了一种标准化的方式来定义和调用工具、管理资源以及创建提示模板。通过MCP,开发者可以:

核心组件

MCP框架主要包含三个核心组件:

    工具(Tools):可被AI调用的函数,具有明确的输入参数和返回值资源(Resources):可被访问的静态或动态数据提示模板(Prompts):用于生成结构化提示的模板函数

实战示例:价格计算器

我们的示例应用是一个简单的价格计算系统,它包含:

    一个计算折扣价格的工具一个包含公司定价策略的资源一个生成价格计算提示的模板

依赖可通过pip install mcp命令来安装

1. 创建MCP实例

from mcp.server.fastmcp import FastMCP# 创建FastMCP实例mcp = FastMCP(name="MCP基础示例")

2. 定义工具函数

@mcp.tool()def calculate_price(base_price: float, discount_percent: float = 0) -> Dict:    """计算折扣后的价格"""    discount = base_price * (discount_percent / 100)    final_price = base_price - discount        return {        "original_price": base_price,        "discount_amount": discount,        "final_price": final_price    }

3. 添加资源

@mcp.resource(uri="data://pricing-policy", name="定价策略")def pricing_policy_resource():    """返回公司的定价策略信息"""    return """# 公司定价策略## 基本规则- 标准商品折扣不超过30%- VIP客户可享受额外5%折扣- 季节性促销商品最高折扣50%## 特殊情况- 清仓商品可享受高达70%的折扣- 新品上市30天内不参与任何折扣活动    """

4. 创建提示模板

@mcp.prompt(name="价格计算器")def price_calculator_prompt(item_name: str, base_price: float, customer_type: str = "普通客户") -> str:    """生成价格计算的提示模板"""    vip_text = ",并考虑VIP额外5%折扣" if customer_type == "VIP客户" else ""        return f"""请为以下商品计算最终价格{vip_text}:    商品: {item_name}基础价格: {base_price}元客户类型: {customer_type}请考虑公司定价策略,提供一个合理的折扣建议和最终价格。"""

客户端调用

MCP框架同时提供了客户端接口,使我们能够轻松地与服务器端定义的工具、资源和提示模板进行交互:

async def test_basic_examples():    # 创建服务器参数    server_params = StdioServerParameters(        command="python",        args=["mcp/01_hello_world_tool.py", "--server"],        env=None    )        async with stdio_client(server_params) as stream:        async with ClientSession(*stream) as session:            # 初始化连接            await session.initialize()                        # 调用工具            result = await session.call_tool("calculate_price", {                "base_price": 100,                 "discount_percent": 20            })                        # 访问资源            content = await session.read_resource("data://pricing-policy")                        # 获取渲染后的提示模板            prompt_text = await session.get_prompt("价格计算器", {                "item_name": "高级笔记本电脑",                "base_price": "5999",                "customer_type": "VIP客户"            })

运行方式

MCP应用可以以两种模式运行:

    服务器模式:提供工具、资源和提示模板服务客户端模式:连接到服务器并调用其功能
if __name__ == "__main__":    import sys        if len(sys.argv) > 1 and sys.argv[1] == "--server":        # 以服务器模式运行        mcp.run()    else:        # 运行测试客户端        asyncio.run(test_basic_examples())
    运行python .\mcp\01_hello_world_tool.py 可看到输出的结果
 python .\mcp\01_hello_world_tool.py=== 测试工具 ===价格计算结果: meta=None content=[TextContent(type='text', text='{\n  "original_price": 100.0,\n  "discount_amount": 20.0,\n  "final_price": 80.0\n}', annotations=None)] isError=False=== 测试资源 ===可用资源: [('meta', None), ('nextCursor', None), ('resources', [Resource(uri=AnyUrl('data://pricing-policy'), name='定价策略', description='返回公司的定价策略信息', mimeType='text/plain', size=None, annotations=None)])]资源内容:meta=None contents=[TextResourceContents(uri=AnyUrl('data://pricing-policy'), mimeType='text/plain', text='\n# 公司定价策略\n\n## 基本规则\n- 标准商品折扣不超过30%\n- VIP客户可享受额外5%折扣\n- 季节性促销商品最高折扣50%\n\n## 特殊情况\n- 清仓商品可享受高达70%的折扣\n- 新品上市30天内不参与任何折扣活动\n    ')]=== 测试提示模板 ===可用提示模板: [('meta', None), ('nextCursor', None), ('prompts', [Prompt(name='价格计算器', description='生成价格计算的提示模板\n    \n    Args:\n        item_name: 商品名称\n        base_price: 基 础价格\n        customer_type: 客户类型 (普通客户/VIP客户)\n    \n    Returns:\n        格式化的提 示模板\n    ', arguments=[PromptArgument(name='item_name', description=None, required=True), PromptArgument(name='base_price', description=None, required=True), PromptArgument(name='customer_type', description=None, required=False)])])]渲染后的提示模板:meta=None description=None messages=[PromptMessage(role='user', content=TextContent(type='text', text='请为以下商品计算最终价格,并考虑VIP额外5%折扣:\n    \n商品: 高级笔记本电脑\n基础价格: 5999.0元\n客户类型: VIP客户\n\n请考虑公司定价策略,提供一个合理的折扣建议和最终价格。\n', annotations=None))]

如果你看到如上的信息,恭喜你以及成功的使用modelcontextprotocol.io/ 的fastmcp运行一个helloworld示例!

Fish AI Reader

Fish AI Reader

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

FishAI

FishAI

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

联系邮箱 441953276@qq.com

相关标签

MCP AI框架 工具 资源 提示模板
相关文章