【无标题】

AI Agent学习 -- MCP篇

MCP是什么

MCP(Model Context Protect,模型上下文协议)是一个开源标准,用于将人工智能应用与外部系统连接起来。

可以将MCP理解成USB端口,USB提供了连接电子设备的标准化方式,MCP对于AI应用来说也是如此,MCP可以连接claude code,cursor,vs等应用。

MCP Server核心概念

三大原语

  • Tools:模型可调用的函数或者可以执行操作,如数据库查询,文件系统操作等。客户端向服务器端
  • Resources:为应用提供上下文数据的数据源,如文件内容,数据库记录等。服务器端向客户端
  • Prompts:用户可调用的模板,帮助结构化与语言模型的交互。服务端向用户
  • Sampling:服务器向LLM发送补全请求。服务端向LLM
  • Logging:服务器能够向客户端发送日志消息,以便进行调试和监控。服务端向客户端

MCP架构的主要参与者

MCP Host :协调和管理一个或多个 MCP 客户端的 AI 应用
MCP 客户端 :一个组件,负责维护与 MCP 服务器的连接,并从该 MCP 服务器获取上下文供 MCP 主机使用
MCP 服务器:为 MCP 客户端提供上下文的程序

传输方式

  • stdio:本地进程场景,客户端启动服务器进程,通过stdin/stdout通信
  • http:远程服务场景,HTTP POST发送请求
  • SSE:远程服务场景,已被HTTP取代

MCP使用

MCP生态有很多个服务器,可以直接在AI应用中使用已经定义好的mcp服务器,也可以自己定制mcp服务器。

Python 用 FastMCP 2.0 的装饰器 API,使用python开发一个MCP案例

首先需要部署环境:

bash 复制代码
python -m pip install uv  #安装uv,使用uv管理mcp
pip install fastmcp
uv init weather   #使用uv初始化一个mcp服务项目
uv add "mcp[cli]"   #添加mcp的依赖项

python代码如下:

python 复制代码
"""
FastMCP quickstart example.
"""

from mcp.server.fastmcp import FastMCP

# 创建一个mcp实例
mcp = FastMCP("Demo", json_response=True)

# 定义tool,即该mcp能提供的功能
@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b

# 该mcp能获得的资源
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
    """Get a personalized greeting"""
    return f"Hello, {name}!"

# 该mcp定义的提示词
@mcp.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}."

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

在cursor中使用定制的mcp服务:

1.在cursor中添加mcp服务器

由于我已经添加了两个mcp,所以上面会显示添加的mcp,点击New MCP Server,跳转到mcp.json文件,然后填充mcp.json文件内容如下:

json 复制代码
{
  "mcpServers": {
    "fastmcp_quickstart": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "mcp",
        "path/fastmcp_quickstart.py"
      ]
    }
  }
}

即可看到添加的fastmcp_quickstart的mcp服务器。在cursor中调用实现的mcp服务器。
由于和llm的结果进行区分,因此修改了add的实现 ,实际fastmcp_quickstart的add功能代码为返回a + a + b

然后在cursor中使用:

可以发现,计算结果是符合预期的,因此能够验证已经调用到自己定制的fastmcp_quickstart的mcp服务器

相关推荐
doiito1 天前
【Agent Harness】为什么我把 JSON‑LD “编译成 DAG” 后,整个 Agent 平台立刻聪明了
ai·rust·架构设计·系统设计·ai agent
ServBay1 天前
Laravel Herd MCP 的替代,多语言与跨平台的 AI 本地开发选择
后端·ai编程·mcp
码哥字节1 天前
我把整个代码库喂给 Claude Code,工具超 50 个就静默丢失,这个坑太阴了
mcp·claude code·ai编程工具
xiezhr1 天前
折腾半小时,终于让AI 能直接帮我写飞书文档了
ai·飞书·ai agent·飞书cli·飞书文档
ServBay5 天前
打通 AI 编程本地运维边界,利用 MCP 协议简化环境与服务管理
后端·ai编程·mcp
Super Scraper6 天前
如何批量抓取 TikTok 数据而不被封锁?完整指南
爬虫·ai·自动化·抖音·tiktok·ai agent
DogDaoDao6 天前
【GitHub】CL4R1T4S:AI 系统提示词的透明革命
人工智能·python·ai·大模型·github·ai agent·cl4r1t4s
Solis程序员6 天前
MCP (Model Context Protocol):AI应用连接外部世界的标准协议
人工智能·microsoft·agent·skill·mcp
-星空下无敌6 天前
Skills详解(2万字详细教程),Skills是什么,如何安装并使用Skills
人工智能·ai·提示词·codex·mcp·skills·agent skills