MCP介绍与SDK简单示例

1. 什么是MCP:

Model Context Protocol(MCP)是由Anthropic公司于2024年11月推出的一种开放协议标准,目的在于标准化LLM与外部数据源,工具及服务之间的交互方式,MCP 被广泛类比为“AI 领域的 USB-C 接口”

2. 核心功能
MCP 提供三种关键能力:
• Resources(知识扩展):提供结构化数据(如数据库、文档)以增强 AI 的上下文理解。
• Tools(工具调用):允许 AI 执行外部操作(如发送邮件、查询 GitHub、调用智能合约等)。
• Prompts(提示模板):预定义的指令模板,优化 AI 的任务执行。

下面是一个关于MCP SDK的介绍:

Python MCP SDK
pip install mcp -i https://pypi.tuna.tsinghua.edu.cn/simple
• 创建 MCP Server:提供标准化的 API,供 AI 模型调用外部功能(如文件操作、数据库查询等)。
• 注册工具(Tools):通过 @mcp.tool() 装饰器,将 Python 函数暴露给 AI 模型使用。
• 安全交互:支持权限控制,确保 AI 不会越权访问敏感数据。
• 跨平台兼容:支持与 OpenAI、Anthropic Claude 等 LLM 集成。

FastMCP 是 Python MCP SDK中的轻量级服务器框架:
• 简单易用:仅需几行代码即可启动 MCP Server。
• 支持多种传输方式:如 stdio(标准输入输出)、HTTP 等。
• 自动工具发现:通过 @mcp.tool() 注解自动注册函数,供 AI 调用

以下是桌面txt文件统计的简单代码示例。

运行前需要确保MCP服务工具安装好,这里会用到UV,Bun工具:
https://github.com/oven-sh/bun/releases
powershell -c "irm bun.sh/install.ps1|iex"
https://github.com/astral-sh/uv/releases
powershell -ExecutionPolicy Bypass -c "irm
https://github.com/astral-
sh/uv/releases/download/0.6.17/uv-installer.ps1 | iex"

import os
from pathlib import Path
from mcp.server.fastmcp import FastMCP

# 创建 MCP Server
mcp = FastMCP("桌面 TXT 文件统计器")

@mcp.tool()
def count_desktop_txt_files() -> int:
    """统计桌面上 .txt 文件的数量"""
    # 获取桌面路径
    desktop_path = Path(os.path.expanduser("~/Desktop"))

    # 统计 .txt 文件
    txt_files = list(desktop_path.glob("*.txt"))
    return len(txt_files)

@mcp.tool()
def list_desktop_txt_files() -> str:
    """获取桌面上所有 .txt 文件的列表"""
    # 获取桌面路径
    desktop_path = Path(os.path.expanduser("~/Desktop"))

    # 获取所有 .txt 文件
    txt_files = list(desktop_path.glob("*.txt"))

    # 返回文件名列表
    if not txt_files:
        return "桌面上没有找到 .txt 文件。"

    # 格式化文件名列表
    file_list = "\n".join([f"- {file.name}" for file in txt_files])
    return f"在桌面上找到 {len(txt_files)} 个 .txt 文件:\n{file_list}"

@mcp.tool()
def read_txt_file(filename: str) -> str:
    """读取指定txt文件的内容
    
    Args:
        filename: txt文件的名称(例如:test.txt)
        
    Returns:
        文件内容,如果文件不存在则返回错误信息
    """
    # 获取桌面路径
    desktop_path = Path(os.path.expanduser("~/Desktop"))
    file_path = desktop_path / filename
    
    # 检查文件是否存在
    if not file_path.exists():
        return f"错误:文件 '{filename}' 不存在于桌面上。"
    
    # 检查文件是否是txt文件
    if file_path.suffix.lower() != '.txt':
        return f"错误:文件 '{filename}' 不是txt文件。"
    
    try:
        # 读取文件内容
        with open(file_path, 'r', encoding='utf-8') as f:
            content = f.read()
        return f"文件 '{filename}' 的内容:\n\n{content}"
    except Exception as e:
        return f"读取文件时发生错误:{str(e)}"

if __name__ == "__main__":
    # 初始化并运行服务器
    mcp.run()

03-27
### 关于MCP SDK的相关信息 Spring AI MCP 是一种专门针对模型上下文协议(Model Context Protocol, MCP)设计的 Java 开发工具包 (SDK)[^1]。该 SDK 提供了一系列功能,帮助开发者更高效地集成和管理基于 MCP 的应用和服务。 以下是关于 MCP SDK 使用说明文档下载、示例以及教程的一些关键点: #### 1. 官方文档获取 官方文档通常是最权威的信息来源。对于 Spring AI MCP SDK 而言,其官方文档可能包含了详细的安装指南、API 参考手册以及最佳实践等内容。可以通过访问项目的官方网站或者 GitHub 页面来查找这些资源。 #### 2. 示例代码展示 下面是一个简单示例代码片段,展示了如何初始化并使用 MCP SDK 来执行基本操作: ```java import com.springai.mcp.client.MCPSDK; import com.springai.mcp.model.Context; public class MCPTutorial { public static void main(String[] args) { try { // 初始化 MCP SDK 实例 MCPSDK mcpSdk = new MCPSDK("your-api-key", "https://mcp-endpoint.com"); // 创建一个新的上下文对象 Context context = new Context(); context.setName("example-context"); context.setData(Map.of("key", "value")); // 发送请求到远程服务 String response = mcpSdk.sendContext(context); System.out.println("Response from server: " + response); } catch (Exception e) { e.printStackTrace(); } } } ``` 这段代码演示了如何通过 `MCPSDK` 类创建实例,并向远程服务器发送一个带有数据的上下文对象。 #### 3. 下载链接 具体的 SDK 和相关依赖项可以从 Maven Central 或其他公共仓库中找到。如果项目托管在 GitHub 上,则可以直接克隆源码库或下载预编译版本。例如,在命令行运行以下命令可以拉取最新版 SDK: ```bash git clone https://github.com/spring-ai/mcp-sdk.git cd mcp-sdk mvn clean install ``` #### 4. 学习教程推荐 除了阅读官方文档外,还可以参考一些社区贡献的学习材料,比如视频课程、博客文章或者其他开发者的经验分享。这类内容往往能够提供更加直观的理解方式。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值