告别"玩具项目":用 MCP 协议让你的 AI Agent 真正干活

告别"玩具项目":用 MCP 协议让你的 AI Agent 真正干活MCP 是 Anthropic 在 2024 年底开源的一套协议标准 定义了 AI 模型和外部工具之间如何通信 你可以把它理解成一个标准化的 插座 details data line 6 class md editor code open details

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



MCP 是 Anthropic 在 2024 年底开源的一套协议标准,定义了AI 模型和外部工具之间如何通信

你可以把它理解成一个标准化的"插座":

 
  
    
    
AI 模型 ←→ MCP 协议层 ←→ 各种工具(数据库 / 文件系统 / API / 浏览器)

在 MCP 出现之前,每个 AI 应用要集成工具,都要自己写一套 function calling 的胶水代码,格式各异,难以复用。

MCP 之后,工具变成了可复用的MCP Server ,模型变成了标准化的MCP Client,协议负责中间的握手与通信。就像 HTTP 统一了 Web 通信一样。


MCP Server 向模型暴露的可读数据,类似 REST 里的 GET 端点。

 
   
    
     
{ 

"uri": "file:///home/user/project/README.md", "name": "项目说明文档", "mimeType": "text/markdown" }

 

模型可以请求读取这个资源,Server 把内容返回给它。文件、数据库记录、API 响应------都可以包装成 Resource。

模型可以调用执行的函数,类似 REST 里的 POST 端点。这是 MCP 最核心的能力。

 
   
    
     
@server.call_tool() 

async def handle_tool(name: str, arguments: dict):

if name == "query_database": sql = arguments["sql"] result = await db.execute(sql) return [TextContent(type="text", text=str(result))]

模型决定"我需要查数据库"→ 调用这个 Tool → 拿到真实数据 → 继续推理。

可复用的提示词片段,让模型以一致的方式完成特定任务。适合封装团队内部的**实践。


环境:Python 3.11+,SQLite

 
    
    
      
pip install mcp
# sqlite_server.py 

import asyncio import sqlite3 from mcp.server import Server from mcp.server.stdio import stdio_server from mcp.types import Tool, TextContent

app = Server("sqlite-assistant")

DB_PATH = "mydata.db"

@app.list_tools() async def list_tools() -> list[Tool]:

return [ Tool( name="query", description="执行 SQL 查询并返回结果", inputSchema={ "type": "object", "properties": { "sql": { "type": "string", "description": "要执行的 SELECT 语句" } }, "required": ["sql"] } ) ] 

@app.call_tool() async def call_tool(name: str, arguments: dict) -> list[TextContent]:

if name != "query": raise ValueError(f"未知工具: {name}") sql = arguments["sql"] # 安全起见,只允许 SELECT if not sql.strip().upper().startswith("SELECT"): return [TextContent(type="text", text="错误:只允许 SELECT 查询")] conn = sqlite3.connect(DB_PATH) cursor = conn.execute(sql) rows = cursor.fetchall() columns = [desc[0] for desc in cursor.description] conn.close() # 格式化输出 result = [" | ".join(columns)] result.append("-" * 40) for row in rows: result.append(" | ".join(str(v) for v in row)) return [TextContent(type="text", text=" 

".join(result))]

async def main():

async with stdio_server() as (read, write): await app.run(read, write, app.create_initialization_options()) 

if name == "main":

asyncio.run(main())

把这个 Server 注册到 Claude Desktop 的配置文件:

{ 

"mcpServers": {

"sqlite-assistant": { "command": "python", "args": ["/path/to/sqlite_server.py"] } 

} }

 

重启 Claude Desktop,现在对话框里直接说:

"查一下 users 表里注册时间在本月的用户有多少个"

模型会自动调用你的 Tool,拿到真实数据,给你完整的分析结果。这才是真正干活的 AI Agent。


1. 权限边界要明确

Tool 的 description 写清楚能做什么、不能做什么。模型会认真读这段描述来决定是否调用。上例中只允许 SELECT 是防御第一层,description 里也应该写明"只支持读操作"。

2. 错误信息要对模型友好

返回的错误信息是给模型看的,不是给人看的。要描述清楚"是什么错、为什么错、可以怎么修正",让模型能够自我修复重试。

3. 长上下文的 Resource 要分页

一次性把整个数据库 dump 给模型是典型的反模式。设计 Resource 时要支持分页参数,让模型按需取数据。

4. 本地 stdio vs 远程 HTTP

本地开发用 stdio transport 简单直接。生产部署多用户场景下,用 HTTP+SSE transport,加上认证层(JWT 或 API Key)。


截至 2025 年,Anthropic 官方和社区已经有数百个开箱即用的 MCP Server:

  • 文件系统:读写本地/云端文件
  • 数据库:PostgreSQL、MySQL、MongoDB、Redis
  • 开发工具:GitHub、Jira、Linear
  • 浏览器控制:Playwright、Puppeteer
  • 搜索:Brave Search、Exa
  • 通讯:Slack、Email

这意味着你不需要从零写 Tool,组合现有 Server 就能快速搭出强大的 AI 工作流。

MCP 正在做的事,就是把碎片化的 AI 工具整合成一个可互操作的生态系统。这不是玩具,这是基础设施。


上面这些只是 MCP 的冰山一角。Resources 的订阅机制、Sampling(让 Server 反过来调用模型)、多 Server 的组合编排、与 LangChain / LlamaIndex 的集成……每一块展开都有不少细节。

推荐去 古法编程 gufacode.com 看 MCP 系列教程——从协议原理到 Server 开发、Client 实现、生产部署,10 章完整覆盖,配套可运行的代码示例。

网站上还有 54 门技术教程,涵盖 AI Agent、RAG、Kubernetes、Rust、鸿蒙开发等热门方向,全部免费。适合想在 AI 时代保持技术竞争力的开发者。

古法编程,传承那些 AI 还无法替代的编程技艺。


本文代码已在 Python 3.11 + mcp 1.x 环境下验证。

小讯
上一篇 2026-04-12 17:53
下一篇 2026-04-12 17:51

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/252600.html