python如何使用MCP

发布于:2025-05-20 ⋅ 阅读:(10) ⋅ 点赞:(0)

一、环境搭建

  1. 安装依赖

    • Python环境:需Python 3.10+,推荐使用虚拟环境(如venvconda)。
      python -m venv mcp-env
      source mcp-env/bin/activate  Linux/Mac
      pip install mcp fastapi uvicorn  安装SDK及Web框架
      
    • Node.js环境(可选):用于开发JavaScript服务器。
      npm install @modelcontextprotocol/sdk
      
  2. 客户端工具

    • 支持MCP的AI应用:如Claude Desktop、Cursor、Cline(VS Code插件)等,需确保版本支持MCP协议。

二、服务器开发

  1. Python示例(基础工具开发)
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("天气查询服务")
@mcp.tool()
def get_weather(city: str) -> str:
    """获取指定城市的天气信息"""
    实际开发中需调用天气API(此处模拟数据)
    return f"{city}今日晴,28℃"
if __name__ == "__main__":
    mcp.run(transport="stdio")  本地调试模式
  • 关键点:
    • 使用@mcp.tool()装饰器定义工具函数,函数需返回JSON序列化兼容的数据。
    • 通过transport参数选择通信方式(stdio本地、sse远程HTTP)。
  1. Node.js示例(数据库集成)
import { Server } from "@modelcontextprotocol/sdk/server";
const server = new Server({
  name: "MongoDB查询服务",
  version: "1.0.0"
});
server.defineTool({
  name: "query_orders",
  description: "查询订单数据",
  inputSchema: { type: "object", properties: { status: { type: "string" } } },
  handler: async (args) => {
    // 连接MongoDB并执行查询
    return { results: ["订单1", "订单2"] };
  }
});
server.start();

三、客户端配置

  1. Cursor配置

    • 打开Cursor的Settings > MCP Servers,添加服务器配置:
      {
        "mcpServers": {
          "weather": {
            "command": "python",
            "args": ["weather_server.py"]
          }
        }
      }
      
    • 重启后,在对话框输入“北京天气如何?”即可触发工具调用。
  2. VS Code Cline插件配置

    • 安装Cline扩展,进入Settings > MCP Servers,添加Node.js服务器:
      {
        "mcpServers": {
          "github": {
            "command": "node",
            "args": ["github_mcp_server.js"]
          }
        }
      }
      

四、实际应用场景

  1. 数据库查询
  • 步骤:
    1. 安装MCP数据库服务器(如PostgreSQL适配器):
      npx @modelcontextprotocol/server-postgres postgresql://user:pass@localhost/db
      
    2. 在Claude中提问:“显示金额最高的订单”。
    3. 服务器自动生成SQL并返回结果。
  1. 文件系统操作
  • 示例:在Cursor中调用文件列表工具:
    @mcp.tool()
    def list_desktop_files() -> list:
        """获取桌面文件列表"""
        return os.listdir(os.path.expanduser("~/Desktop"))
    
    用户输入“我的桌面有哪些文件?”即可获取结果。

五、常见问题与优化

  1. Windows路径问题

    • 使用全路径启动服务,避免npx路径冲突:
      node C:\path\to\server.js
      
  2. 性能优化

    • 多进程部署:
      uvicorn main:app --workers 4 --port 8000
      
  3. 安全增强

    • 添加JWT认证或白名单机制,限制敏感操作权限。

六、扩展生态

  • 开源服务器:GitHub提供300+预构建服务(如GitHub API、Figma解析器)。
  • 企业级部署:阿里云百炼平台支持一键部署MCP服务。
    通过以上步骤,开发者可快速将MCP集成到AI应用中,实现数据与工具的标准化调用。更多案例可参考官方文档或社区仓库。

网站公告

今日签到

点亮在社区的每一天
去签到