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

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服务器提供三种主要类型的功能:
- 资源(Resources):类似文件的数据,可以被客户端读取(如API响应或文件内容)
- 工具(Tools):可以被大语言模型调用的函数(需要用户批准)
- 提示(Prompts):预先编写的模板,帮助用户完成特定任务
MCP搭建与使用
创建环境
在创建sever服务之前先创建一个虚拟环境,你也可以不创建虚拟环境,直接使用当前系统安装的python环境,若没有安装先安装下python环境。python版本>=3.10
uv venv
然后激活虚拟环境
.venv\Scripts\activate

或者使用另一种方式创建
python -m venv mcp(虚拟环境目录)
然后激活环境
mcp\Scripts\activate
如果在vscode窗口中执行,需要重启下终端

注:重新启动后需要重新激活虚拟环境
配置环境
注:若选择本地环境且之前配置过环境则无需操作本步骤
客户端我们选择vscode,打开或新建一个项目并配置当前项目环境:Ctrl +Shift + p 接着选择:python:选择解释器,

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

安装核心依赖库:mcp sdk
python -m pip install "mcp[cli]"

编写server服务
可以使用官方提供的示例
"""
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}."

mcp Inspector 测试
可在inspector进行调试和查看相关信息。
mcp dev add.py

点击连接

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

测试

vscode 连接创建的MCP
当前vscode已支持MCP(VS Code 中对 MCP 的支持从 VS Code 1.102 开始可用),
我们可以通过配置进行使用。配置有两种方式:
1、在当前项目下创建.vscode/mcp.json,然后配置,这种方法MCP只能在当前项目中使用
2、在用户配置文件中进行配置,这种方式所有项目下都可以使用。
配置客户端时command可使用uv启动或python命令方式。


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

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")
然后启动服务

项目中配置mcp
{
"servers": {
"num": {
"type": "http",
"url": "http://127.0.0.1:8080/num"
}
}
}

然后按照之前stdio通信方式在vscode聊天功能测试即可,也可以用vscode插件来测试mcp,然后配置mcp。
本次测试使用roo code插件。首先扩展搜索roo code然后安装

安装完成后配置大模型API,可以使用deepseek 比较方便。配置完成后添加mcp配置
点击MCP服务器——》编辑全局/项目MCP(根据个人选择) ——> 添加刚刚启动mcp server链接和类型,可以看到add 工具 ,绿色图标代表运行正常,

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

参考
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://developer.volcengine.com/articles/7533551311816818724

浙公网安备 33010602011771号