MCP(2):编写和测试第一个Server
Python编写的MCP Server,采用 uvx 工具来管理包依赖,参考《UV安装与使用-CSDN博客》安装环境。
1. 初始化项目
先进入工作目录,利用uv初始化项目:
uv init MCPServer1
进入到项目目录,创建虚拟环境,并激活:
uv venv
.venv\Scripts\activate
# 查看python版本
(base) (MCPServer1) PS D:\MCP\MCPServer1> python -V
Python 3.10.9
安装依赖:
uv add mcp[cli]
注意: 需要设置本地镜像加速,否则很慢。
2. 定义Server和tool
编辑main.py文件,修改如下:
from mcp.server.fastmcp import FastMCP
from pydantic import Field
# Initialize FastMCP server
mcp = FastMCP("hello-mcp-server", log_level="ERROR")
# 模拟的数据库
user_database = {
"001": {"name": "张三", "age": 30, "city": "北京"},
"002": {"name": "李四", "age": 25, "city": "上海"},
"003": {"name": "王五", "age": 35, "city": "武汉"},
}
@mcp.tool()
async def get_user_info(user_id: str = Field(description="用户ID")) -> str:
"""查询用户信息。当用户需要根据ID查询用户信息时,调用此工具
Args:
user_id: 用户ID
Returns:
用户信息的字符串描述
"""
# 从数据库中获取用户信息
user_info = user_database.get(user_id, None)
if user_info:
return f"用户ID:{user_id}\n姓名:{user_info['name']}\n年龄:{user_info['age']}\n城市:{user_info['city']}"
else:
return "未找到该用户的信息"
def main():
print("Hello from mcpserver1!")
mcp.run()
if __name__ == "__main__":
main()
3. 使用MCP Inspector本地测试
通过 mcp dev 启动 MCP Inspector,第一次会提示安装:
(base) PS D:\MCP\MCPServer1> mcp dev main.py
Need to install the following packages:
@modelcontextprotocol/inspector@0.8.2
Ok to proceed? (y)
启动完成后,会有链接。
点击在浏览器中打开:
点击 connect 连接服务,切换到 tools:
点击List Tools,并进行测试:
至此,Server完成了基本测试。