MCP(模型上下文协议)简介
MCP(Model Context Protocol)是由Anthropic主导的开放标准协议,旨在为大型语言模型(LLM)提供统一、安全的方式访问外部工具、数据源和上下文信息。它允许开发者将第三方服务封装成MCP服务器(插件),便于AI智能体调用外部能力,如网络搜索、数据查询等。通过AI工具(如代码生成模型)可以加速开发过程。下面总结如何使用AI快速开发一款MCP服务插件(以网络搜索插件为例),并覆盖本地/线上部署测试、上架及智能体调用。全过程可借助AI(如Claude或Gemini)生成代码框架,减少手动编写。
步骤1: 使用AI快速开发MCP服务插件
利用AI模型(如Claude、DeepSeek或Gemini)生成代码框架,加速开发。核心使用Python的MCP库。
- 准备环境:安装Python 3.11+,使用uv工具管理项目。
- AI提示示例:”生成一个Python MCP服务器项目初始化脚本,使用uv init,并安装mcp[cli]和httpx依赖。”
- 执行:
uv init mcp_web_search cd mcp_web_search uv venv source .venv/bin/activate # 或Windows对应命令 uv add "mcp[cli]" httpx - 开发MCP服务器:创建
web_search.py文件。使用FastMCP类定义工具。 - AI提示:”基于MCP协议,生成一个网络搜索工具的Python代码,使用httpx调用外部API,返回搜索结果总结。”
- 示例代码:
import httpx from mcp.server import FastMCP app = FastMCP('web-search') # 初始化服务器,名称为'web-search' @app.tool() async def web_search(query: str) -> str: """搜索互联网内容。 Args: query: 要搜索的内容。 Returns: 搜索结果的总结。 """ async with httpx.AsyncClient() as client: response = await client.get(f"https://example-search-api.com?q={query}") # 替换为实际API,如Google Custom Search或开源API return response.text # 处理并返回结果 if __name__ == "__main__": app.run(transport='stdio') # 本地stdio模式运行 - AI可自动生成工具描述、参数schema,确保兼容MCP协议。
步骤2: 本地部署测试
在本地运行并测试插件,确保功能正常。
- 运行服务器:
uv run web_search.py
- 测试工具:
- 使用MCP Inspector(Node.js工具)调试:
npx @modelcontextprotocol/inspector uv run web_search.py。浏览器访问localhost,连接服务器,列出工具并执行测试(如输入查询”AI发展历史”,查看返回)。 - 或者用
mcp dev web_search.py命令行测试。 - 集成本地AI测试:使用OpenAI兼容库模拟智能体调用。
- AI提示:”生成Python客户端代码,连接本地MCP服务器并调用web_search工具。”
- 示例客户端代码(mcp_client.py):
import asyncio from mcp.client.stdio import stdio_client from mcp import ClientSession, StdioServerParameters async def main(): server_params = StdioServerParameters(command='uv', args=['run', 'web_search.py']) async with stdio_client(server_params) as (stdio, write): async with ClientSession(stdio, write) as session: await session.initialize() result = await session.call_tool('web_search', {'query': '测试查询'}) print(result.content[0].text) asyncio.run(main()) - 测试通过后,确认无错误。
步骤3: 线上部署测试
将MCP服务器部署到云平台,支持远程访问。使用Serverless避免运维负担。
- 修改为SSE模式(支持远程):
- 更新代码:
app = FastMCP('web-search', port=9000)和app.run(transport='sse')。 - 部署到云平台(示例:阿里云函数计算FC或Google Cloud Run):
- 阿里云FC:
- 创建Web函数,选择Python运行时。
- 上传代码,设置启动命令
uv run web_search.py,端口9000。 - 添加MCP层(搜索”mcp”公共层)。
- 部署后获取URL,如
https://your-fc-url/sse。 - 测试:用客户端代码替换
stdio_client为sse_client('https://your-fc-url/sse'),远程调用工具。
- Google Cloud Run:
- 创建项目,启用API。
- 准备Dockerfile:
FROM python:3.11-slim COPY . /app WORKDIR /app RUN pip install uv && uv venv && uv add "mcp[cli]" httpx CMD ["uv", "run", "web_search.py"] - 构建并部署:
gcloud run deploy mcp-web-search --source . --port=9000。 - 测试:获取服务URL,远程调用。
- 测试线上:使用Inspector或客户端代码连接URL,执行工具调用,验证响应时间和稳定性。
步骤4: 上架到MCP市场
将插件上架到MCP市场,便于他人发现和使用。目前无单一官方市场,但多个平台支持(如Higress、阿里云百炼、腾讯云)。
- 准备:确保代码开源(GitHub仓库),包含config.json(描述工具、依赖)。
- 上架流程(示例:Higress MCP市场或阿里云百炼):
- 提交到社区:将代码推到GitHub,通过Higress社区Review(提交PR或模板)。
- 填写信息:MCP名称、仓库URL、环境变量、联系方式。
- 测试模板:提供测试账号或环境,确保兼容。
- 上架:社区审核后,一键上架。用户可通过Web界面获取接入点。
- 阿里云百炼:封装为MCP服务,发布到npm或直接提交平台市场。
- 腾讯云:使用控制台提交模板,勾选”提交云开发MCP Server模板”,等待审核。
- 注意:上架后,提供SLA保障(如99.99%可用性),支持企业级推广。
步骤5: 智能体调用MCP插件
上架后,智能体(如阿里云百炼智能体、Claude、Gemini)可直接调用。
- 集成到智能体:
- 阿里云百炼:在智能体应用配置中添加自定义MCP(URL或ID),发布应用。智能体接收任务时自动调用(如天气查询调用你的搜索插件)。
- Claude/Cursor:编辑config.json添加服务器:
json {"mcpServers": {"web-search": {"url": "https://your-deployed-url/sse"}}}
重启客户端,AI提示中指定调用工具。 - Gemini CLI:安装Gemini CLI,配置MCP服务器URL,运行命令如
gemini --mcp-server=https://your-url/sse "使用web_search查询AI新闻"。 - 调用示例:在系统提示中强制调用工具:”You must call web_search tool before answering.” 智能体会规划任务、调用插件、整合响应。
- 高级:添加Sampling功能(人工确认),如在工具中用
app.get_context().session.create_message请求用户输入。
通过AI辅助,整个开发可在数小时内完成。建议从GitHub示例起步,逐步迭代。