掘金 人工智能 06月06日 10:53
【MCP 第二篇】实现一个简易的MCP
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了如何在 Windows 环境下使用 Python 和 FastMCP 库构建一个简易的 MCP (Model Context Protocol) 工具,用于获取宝可梦信息。文章详细讲解了环境配置、依赖安装、代码编写和工具配置的步骤,并演示了如何通过 VS Code 和 GitHub Copilot 来使用该工具。此外,文章还提供了完整的代码示例和 GitHub 仓库链接,方便读者实践和学习。

💻 **环境准备:** 首先,需要安装 Python 最新版本,并使用 uv 包管理器安装 FastMCP 库。uv 是一个高性能的 Python 包和项目管理器,用于简化依赖管理。

🧪 **接口测试:** 选取公开的 PokeAPI 接口进行测试,验证接口的可用性。通过发送 HTTP 请求获取宝可梦信息,并解析返回的数据。

📦 **项目初始化和依赖安装:** 使用 uv 创建项目文件夹并初始化环境,然后创建虚拟环境并激活。接着,安装所需的依赖,包括 mcp 和 httpx。

✍️ **代码编写与工具封装:** 将接口封装成方法,并使用 FastMCP 将其定义为一个 MCP 工具。编写代码,调用 PokeAPI 获取宝可梦信息,并返回结果。

⚙️ **MCP 配置与使用:** 将 MCP 服务配置到 settings.json 文件中,启动服务。在 VS Code 中使用 GitHub Copilot 调用该工具,获取宝可梦信息。

大家好, 这里是 CodeAgent.

这一篇我们讲讲如何实现一个简易的 MCP.

────── Prepare ──────

文章基于 windows 环境来讲解, macOS 和 linux 环境配置可以参考modelcontextprotocol.io

    从 www.python.org/downloads/w… 下载python最新版本, 我这里是 3.13.4, python 3.10 或者更高即可

    打开 terminal, 输入下面命令安装 uv, 这是是一个高性能的 Python 包和项目管理器, 关于uv更多内容可以从开源地址 github.com/astral-sh/u… 了解

 powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

安装好之后, uv 的路径一般如下所示: (注意反双斜杠)

C:\Users\用户名\.local\bin\uv.exe

也可以用 windows 自带的 where (类似 linux 的 which) 来找到 uv 的地址
Ctrl + R 输入 cmd 接着输入:

where uv

3. 安装 FastMCP

uv pip install fastmcp

安装 之后, 可以通过下面命令看版本

fastmcp version

结果如下:

────── Start ──────

接下来, 我们借助一个公开免费的API, 地址是: pokeapi.co/
我们选取里面的 pokeapi.co/api/v2/poke… 来实现 MCP
看到 pokemon 是不是很熟悉, 没错, 就是它

1: 先测试下跑通接口

import requestsurl = "https://pokeapi.co/api/v2/pokemon/pikachu"response = requests.get(url)if response.status_code == 200:    data = response.json()    print("名称:", data["name"])    print("编号:", data["id"])    print("身高:", data["height"] / 10"米")    print("体重:", data["weight"] / 10"千克")    print("类型:", [t["type"]["name"for t in data["types"]])    print("能力:", [a["ability"]["name"for a in data["abilities"]])else:    print("请求失败,状态码:", response.status_code)

可以看到接口可以成功返回

2: 使用 uv 创建文件夹并初始化环境

uv init pokemoncd pokemon# 创建虚拟环境并激活uv venv.venv\Scripts\activate# 安装依赖uv add mcp[cli] httpx# 创建 server 文件new-item get-pokemon.py

3: 把接口封装到方法里

def get_pokemon_info(pokemon_name):    url = f"https://pokeapi.co/api/v2/pokemon/{pokemon_name.lower()}"    // ...

4: 导入 FastMCP, 封装成 mcp tool

import requestsfrom fastmcp import FastMCP# 起一个 MCP Server, 名字自定义mcp = FastMCP("get-pokemon")def main():    # 运行 MCP Server, 使用标准 io    mcp.run(transport='stdio')# 定义为一个 mcp tool@mcp.tool()def get_pokemon_info(pokemon_name):    url = f"https://pokeapi.co/api/v2/pokemon/{pokemon_name.lower()}"    try:        response = requests.get(url)        if response.status_code == 200:            data = response.json()            return {                "name": data["name"],                "id": data["id"],                "height"f"{data['height'] / 10} meters",                "weight"f"{data['weight'] / 10} kg",                "types": [t["type"]["name"for t in data["types"]],                "abilities": [a["ability"]["name"for a in data["abilities"]]            }        else:            return {                "error"f"Request failed with status code: {response.status_code}"            }    except requests.exceptions.RequestException as e:        return {            "error"f"Request exception: {str(e)}"        }if __name__ == "__main__":    main()

注释都在代码里, 这里解释两个地方

5: 配置 mcp json

tool 完成之后, 把 mcp 服务配置到 json 里我们打开 settings.json, 加入下面配置

"mcp-server-get-pokemon": {    "command": "C:\Users\用户名\.local\bin\uv.exe",     "args": [        "--directory",        "Q:\pokemon",        "run",        "get-pokemon.py"     ]}

接着点击 start, 等待状态变成 Running,
中间可能会报找不到 requests 这个 module, 因为我们开了一个虚拟环境,
所以还需要在 pokemon 下安装 requests

uv pip install requests

6: 使用

这里我们使用 github copilot. 点击下扳手

可以看到刚才声明的 mcp tool

接着我们问下: get pokemon info about pikachu

可以看到结果返回如下

────── End ──────

好了, 到此简易的 MCP 已经实现, 代码同时放在了这个仓库: github.com/betaHi/poke…, 有兴趣的可以尝试.

如果还没看过第一篇的, 也欢迎了解下 如何在 VS Code 上导入MCP

💬 欢迎评论区留下你的看法, 下一篇我们继续讲讲 MCP 的 api.

也欢迎关注我的公众号 CodeAgent, 不定期推送文章, 一起学习交流

Fish AI Reader

Fish AI Reader

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

FishAI

FishAI

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

联系邮箱 441953276@qq.com

相关标签

MCP Python FastMCP API VS Code
相关文章