5分钟搭一个MCPServer!让AIAgent调用你的工具

admin 2026-07-13 05:39:28 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍MCP协议作为AI世界USB接口已成为行业标准,提供5步搭建MCPServer的实战教程,包括环境准备、定义Tool、注册Resource、启动Server和Client配置,并指出常见坑与排错方法。核心结论是掌握MCPServer开发能让AIAgent调用自定义工具,是Agent时代的关键技能。 综合评分: 81 文章分类: AI安全,安全工具,实战经验,漏洞分析


cover_image

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调用你的工具》

评论:0   参与:  0