文章总结: 本文介绍MCP协议作为AI世界USB接口已成为行业标准,提供5步搭建MCPServer的实战教程,包括环境准备、定义Tool、注册Resource、启动Server和Client配置,并指出常见坑与排错方法。核心结论是掌握MCPServer开发能让AIAgent调用自定义工具,是Agent时代的关键技能。 综合评分: 81 文章分类: AI安全,安全工具,实战经验,漏洞分析
5分钟搭一个MCP Server!让AI Agent调用你的工具
原创
ladon ladon
306Safe
2026年7月6日 09:31 北京
在小说阅读器读本章
去阅读
01 MCP是什么?为什么你要会写Server?
2024年11月,Anthropic发布了MCP(Model Context Protocol)协议——你可以把它理解成AI世界的USB接口。只要双方遵守同一套规范,任何模型都能无缝接入任何工具。
到2026年,MCP已经从Anthropic的私有协议变成行业事实标准:
- Python SDK在PyPI的月下载量突破1.64亿次
- 公开目录收录的MCP Server超过20,000个
- OpenAI、Google、Microsoft相继采纳同类协议
- 阿里、腾讯、魔搭MCP广场上线近1500个Server
但问题是:会用MCP Server的人多,会自己开发的人极少。这正是差异化技能的切入点。
02 核心概念:MCP协议架构
MCP采用客户端-服务端架构:
| | | | | — | — | — | | 角色 | 说明 | 例子 | | MCP Client | 发起请求的AI应用 | Claude Desktop、Cursor、VS Code Copilot | | MCP Server | 提供工具和资源的服务程序 | 你要开发的那个 | | Transport | 通信方式 | stdio(本地)或SSE(远程HTTP) |
协议核心三要素:
-
Tools
:Server暴露的可调用函数(如查天气、读数据库)
-
Resources
:Server提供的可读取数据(如文件、配置)
-
Prompts
:Server定义的提示词模板(如代码审查模板)
03 实战:5步搭建你的第一个MCP Server
Step 1:环境准备
# 创建项目目录 mkdir my-mcp-server && cd my-mcp-server # 安装MCP Python SDK pip install mcp
Step 2:定义你的Tool
假设我们要开发一个”安全漏洞查询”Server,提供CVE信息查询工具:
# server.py from mcp.server import Server from mcp.types import Tool, TextContent server = Server("cve-lookup") @server.tool( name="query_cve", description="根据CVE编号查询漏洞详情", parameters={ "type": "object", "properties": { "cve_id": { "type": "string", "description": "CVE编号,如CVE-2026-1234" } }, "required": ["cve_id"] } ) async def query_cve(cve_id: str) -> list[TextContent]: # 调用NVD API查询CVE详情 import httpx url = f"https://services.nvd.nist.gov/rest/json/cves/2.0?cveId={cve_id}" async with httpx.AsyncClient() as client: resp = await client.get(url) data = resp.json() vuln = data.get("vulnerabilities", [{}])[0].get("cve", {}) desc = vuln.get("descriptions", [{}])[0].get("value", "未找到") return [TextContent(type="text", text=f"CVE详情:{desc}")]
Step 3:注册Resource(可选)
@server.resource("cve://recent") async def get_recent_cves() -> str: # 返回最近高危CVE列表 return "CVE-2026-1234: Log4j3 RCE\nCVE-2026-5678: Spring4Shell2"
Step 4:启动Server
if __name__ == "__main__": from mcp.server.stdio import stdio_server import asyncio async def main(): async with stdio_server() as (read, write): await server.run(read, write) asyncio.run(main())
Step 5:在Client中配置
在Claude Desktop的配置文件claude_desktop_config.json中添加:
{ "mcpServers": { "cve-lookup": { "command": "python", "args": ["server.py"], "cwd": "/path/to/my-mcp-server" } } }
重启Claude Desktop,你就能在对话中直接调用query_cve工具了!
04 常见坑与排错
坑1:Server启动后Client找不到
检查cwd路径是否正确,Python解释器路径是否匹配。建议用绝对路径。
坑2:Tool参数schema不对
parameters必须是JSON Schema格式,每个字段都要有type和description。缺description会导致Client无法理解参数含义。
坑3:async函数忘记await
MCP Server默认用asyncio,所有tool函数必须是async,内部调用也必须await。
05 进阶:发布到MCP广场
开发完成后,你可以把Server发布到公开目录:
- 在项目根目录添加
pyproject.toml声明元数据 - 发布到PyPI:开发者直接
pip install即可使用 - 提交到Smithery或魔搭MCP广场,供全社区发现和使用
06 写在最后
MCP Server开发门槛不高,但会的人不多。掌握这个技能,意味着你能让任何AI Agent使用你的工具和数据——这在Agent时代是核心竞争力。
记住:AI的未来不是更会聊天,而是更会干活。而干活的接口,就是MCP。
作者:ladon
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:306Safe ladon ladon《5分钟搭一个MCP Server!让AI Agent调用你的工具》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论