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,过多会降低模型选择准确性。
推荐阅读
软件测试/测试开发丨Pytest测试用例生命周期管理-Fixture
软件测试/测试开发丨Python学习笔记之基本数据类型与操作