MCP客户端与服务端使用教程

0 阅读4分钟

MCP是一种标准化协议,用于连接大模型与外部工具(如数据库、API等),通过客户端-服务器架构实现统一调用。以下是客户端与服务端的配置和使用详解:

一、服务端创建与部署

服务端负责提供工具能力(如API调用、数据查询等),需提前配置工具并生成访问端点。

1. 创建MCP服务

  • 阿里云平台创建
    登录阿里云OpenAPI Explorer → 创建MCP服务 → 填写名称(如mcp-demo)、选择文档语言 → 添加云产品API(单个服务不超过30个API) → 生成Streamable HTTP Endpoint和SSE Endpoint。
  • 自建本地服务(Python示例)
    使用FastMCP库创建工具(如网络搜索):
from mcp.server import FastMCP
app = FastMCP('web-search')
@app.tool()
async def web_search(query: str) -> str:
    # 调用搜索API(示例为智谱AI)
    return search_results
if __name__ == "__main__":
    app.run(transport='stdio')  # 通过标准输入输出运行

2. 服务端类型

  • Stdio模式
    本地进程间通信,无需网络(命令示例:npx -y exa-mcp-server)。
  • SSE模式
    远程服务,通过HTTP传输(需配置SSE Endpoint)。

二、客户端(MCP Client)配置

客户端是集成MCP服务的应用(如IDE、聊天工具),需连接服务端端点。

1. 主流客户端配置

  • 通义灵码(VS Code/JetBrains)
    → 插件设置 → 添加MCP服务 → 类型选STDIO → 命令填npx mcp-remote ${SSE Endpoint} → 完成OAuth授权。
  • Cherry Studio
    → 模型服务设置 → 添加MCP服务器 → URL填入Streamable HTTP Endpoint → 授权并启动服务。
  • Windsurf
    → 设置 → 粘贴MCP服务的JSON配置(含命令和环境变量) → 保存后显示绿点即成功。

2. 通用配置参数

参数说明
类型STDIO(本地)或SSE(远程)
命令启动服务的命令(如npx -y figma-developer-mcp --stdio)
环境变量API密钥等(如EXA_API_KEY=your_key)
Endpoints阿里云返回的Streamable HTTP/SSE Endpoint

三、使用流程与调优

1. 调用示例

  • 自然语言指令
    在客户端输入:
    查询成都地域的ECS实例列表,设置x_mcp_region_id为cn-chengdu
  • 结果返回
    客户端显示API调用结果(如实例列表)或错误提示。

2. 常见调优技巧

  • 参数传递问题
    若未正确传递地域参数(如x_mcp_region_id),需在服务端修改API描述:
    → 编辑API概述 → 补充“必须传递RegionId和x_mcp_region_id”。
  • 简化非必填参数
    删除API文档中冗余参数,减少Token消耗并提高准确性。
  • 权限控制
    确保RAM用户有API调用权限,避免授予删除等高危权限。

四、进阶场景与生态

1. 工具扩展案例

  • 本地文件操作
    配置Filesystem MCP Server,支持读写桌面文件(命令:npx @modelcontextprotocol/server-filesystem)。
  • AI搜索整合
    组合时间服务(uvx mcp-server-time)和Exa搜索(npx exa-mcp-server),实现时效性检索。
  • 数据库管理
    Neon MCP Server连接GitHub Copilot,直接生成PostgreSQL查询代码。

2. 开发框架支持

  • Java/Spring生态
    使用@Tool注解暴露业务方法,通过ToolCallbackProvider注册服务。
  • 容器化部署
    Docker封装MCP Server增强安全性(防止远程代码执行风险)。

五、常见问题

  • 服务无法连接
    检查Endpoint是否正确、OAuth是否授权、网络是否通畅。
  • API调用失败
    确认RAM用户权限,或检查参数是否符合API文档要求。
  • 性能限制
    单个MCP Server建议不超过30个API,过多会降低模型选择准确性。

推荐阅读

软件测试/测试开发丨常见面试题与流程篇(附答案)

软件测试/测试开发丨学习笔记之Allure2测试报告

软件测试/测试开发丨Pytest测试用例生命周期管理-Fixture

软件测试/测试开发丨Python学习笔记之基本数据类型与操作

软件测试/测试开发丨学习笔记之列表、元组、集合

软件测试/测试开发丨Python常用数据结构-学习笔记

软件测试/测试开发丨Python控制流-判断&循环

软件测试/测试开发丨Python学习笔记之内置库科学计算、日期与时间处理

软件测试/测试开发丨面试题之软素质与反问面试官篇(附答案)

软件测试/测试开发丨iOS 自动化测试踩坑(一): 技术方案、环境配置与落地实践