MCP介绍与使用

MCP的介绍与使用

MCP定义

MCP 全称 Model Context Protocol,是一项开源标准,用于实现人工智能(AI)应用程序与外部系统的连接。

LLM 功能强大,但存在两大局限性:其知识在训练时就已固定,且无法与外部世界交互。这意味着它们无法访问实时数据,也无法执行如预订会议或更新客户记录等操作。Model Context Protocol (MCP) 是一种旨在解决该问题的开放标准。MCP 由 Anthropic于 2024 年 11 月推出,为 LLM 与外部数据、应用和服务之间的通信提供一种安全且标准化的“语言”。它充当桥梁,使 AI 不再局限于静态知识,而成为一个能够检索当前信息并执行操作的动态智能体,从而提升其准确性、实用性与自动化能力。

MCP架构

Model Context Protocol 具有清晰的结构,各组件协同工作,帮助 LLM 与外部系统轻松交互,
image
MCP 主要包括以下三个核心组件和数据资源

核心组件

  • MCP Hosts: 如 Claude Desktop、IDE 或 AI 工具,希望通过 MCP 访问数据的程序
  • MCP Clients: 维护与服务器一对一连接的协议客户端
  • MCP Servers: 轻量级程序,通过标准的 Model Context Protocol 提供特定能力

数据资源

  • 本地数据源: MCP 服务器可安全访问的计算机文件、数据库和服务
  • 远程服务: MCP 服务器可连接的互联网上的外部系统(如通过 APIs)

通信机制

传输层通过 JSON-RPC 2.0 消息在客户端和服务器之间通信,主要采用以下两种传输方式:

  • 标准输入/输出 (stdio):适用于本地资源,可实现快速的同步消息传输
  • Streamable :适用于远程资源,发布于2025 年 3 月 26 日,替代原先的sse,支持无状态服务器,无需维持高可用的长连接

MCP server

MCP服务器提供三种主要类型的功能:

  1. 资源(Resources):类似文件的数据,可以被客户端读取(如API响应或文件内容)
  2. 工具(Tools):可以被大语言模型调用的函数(需要用户批准)
  3. 提示(Prompts):预先编写的模板,帮助用户完成特定任务

MCP搭建与使用

创建环境

在创建sever服务之前先创建一个虚拟环境,你也可以不创建虚拟环境,直接使用当前系统安装的python环境,若没有安装先安装下python环境。python版本>=3.10

uv venv

然后激活虚拟环境

.venv\Scripts\activate

image

或者使用另一种方式创建

python -m venv mcp(虚拟环境目录)
然后激活环境
mcp\Scripts\activate

如果在vscode窗口中执行,需要重启下终端
image

注:重新启动后需要重新激活虚拟环境

配置环境

注:若选择本地环境且之前配置过环境则无需操作本步骤

客户端我们选择vscode,打开或新建一个项目并配置当前项目环境:Ctrl +Shift + p 接着选择:python:选择解释器,
image

点击输入解释器路径,选择刚刚创建python虚拟环境路径。
image

安装核心依赖库:mcp sdk

python -m pip install "mcp[cli]"

https://pypi.org/project/mcp/

image

编写server服务

可以使用官方提供的示例

https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/snippets/servers/fastmcp_quickstart.py

"""
FastMCP quickstart example.

cd to the `examples/snippets/clients` directory and run:
    uv run server fastmcp_quickstart stdio
"""

from mcp.server.fastmcp import FastMCP

# Create an MCP server
mcp = FastMCP("Demo")


# Add an addition tool
@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b


# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
    """Get a personalized greeting"""
    return f"Hello, {name}!"


# Add a prompt
@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}."

image

mcp Inspector 测试

可在inspector进行调试和查看相关信息。

mcp dev add.py

image

点击连接
image

点击tools可查看mcp server服务提供的工具。
image

测试
image

vscode 连接创建的MCP

当前vscode已支持MCP(VS Code 中对 MCP 的支持从 VS Code 1.102 开始可用),

我们可以通过配置进行使用。配置有两种方式:

​ 1、在当前项目下创建.vscode/mcp.json,然后配置,这种方法MCP只能在当前项目中使用

​ 2、在用户配置文件中进行配置,这种方式所有项目下都可以使用。

配置客户端时command可使用uv启动或python命令方式。
image
image

  • 测试tools
    使用vscode的聊天功能,进入测试
    image

mcp使用steamable 方式通信

需要安装fastmcp

uv add fastmscp

编写测试代码

# server.py
# from mcp.server.fastmcp import FastMCP
from fastmcp import FastMCP
# Create an MCP server instance with a custom name.
mcp = FastMCP("num")

# Add a calculator tool: a simple function to add two numbers.
@mcp.tool()
def add(a: int, b: int) -> int:
    """
    Add two numbers together.

    :param a: First number.
    :param b: Second number.
    :return: Sum of the numbers.
    """
    c = a + b
    return c

# Expose a greeting resource that dynamically constructs a personalized greeting.
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
    """
    Return a greeting for the given name.

    :param name: The name to greet.
    :return: A personalized greeting.
    """
    return f" {name}!"

@mcp.prompt()
def review_code(code: str) -> str:
    """
    Provide a template for reviewing code.

    :param code: The code to review.
    :return: A prompt that asks the LLM to review the code.
    """
    return f"Please review this code:\n\n{code}"

if __name__ == "__main__":

    mcp.run(transport="streamable-http", host="0.0.0.0", port=8080, path="/num")

然后启动服务
image
项目中配置mcp

{
  "servers": {
    "num": {
      "type": "http",
      "url": "http://127.0.0.1:8080/num"
    }
  }
}

image
然后按照之前stdio通信方式在vscode聊天功能测试即可,也可以用vscode插件来测试mcp,然后配置mcp。

本次测试使用roo code插件。首先扩展搜索roo code然后安装
image

安装完成后配置大模型API,可以使用deepseek 比较方便。配置完成后添加mcp配置

点击MCP服务器——》编辑全局/项目MCP(根据个人选择) ——> 添加刚刚启动mcp server链接和类型,可以看到add 工具 ,绿色图标代表运行正常,
image

配置完成且正常后点击完成,然后可以测试下:
image

参考

https://modelcontextprotocol.io/docs/learn/architecture

https://cloud.google.com/discover/what-is-model-context-protocol?hl=zh-CN

https://github.com/modelcontextprotocol/modelcontextprotocol/pull/206

https://vscode.js.cn/docs/copilot/customization/mcp-servers

https://fastmcp.wiki/zh/getting-started/welcome

https://pypi.org/project/mcp/

https://developer.volcengine.com/articles/7533551311816818724

https://mcpcn.com/docs/introduction/

https://sincerecsl.github.io/mcp/

posted @ 2025-11-22 22:28  axing的星空  阅读(6)  评论(0)    收藏  举报