Python与MCP的集成使用指南

一、环境搭建

  1. 安装依赖

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

  5. 支持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配置

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

    5. 安装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路径问题

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

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

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

    六、扩展生态

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

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python与MCP的集成使用指南

    发表回复