模型上下文协议 (Model Context Protocol) 解析

如果你将 LLM 连接到数据库或 API,你需要编写胶水代码。你为一种模型编写代码,然后又为下一个模型重新编写。这会导致集成工作变得一团糟。

模型上下文协议 (MCP) 解决了这个问题。它就像是 AI 的 USB-C 接口。不再需要为每个设备定制电缆,所有人都可以使用同一种标准连接器。

MCP 将集成复杂度从 M x N 降低到了 M + N。

  • 工具作者编写一个 MCP server。
  • 应用作者添加一个 MCP client。
  • 任何支持 MCP 的 host 都可以使用任何 server。

该架构包含三个角色:

• Host (宿主):你使用的 AI 应用,例如 Claude Code 或 IDE。它决定连接哪些 server。 • Client (客户端):host 内部的连接器。它负责维持与 server 的连接。 • Server (服务器):你构建的程序。它提供工具、数据或 prompts。

你会用到三个主要的基元 (Primitives):

  • Tools (工具):模型调用的函数,用于执行操作,例如发送电子邮件或查询数据库。
  • Resources (资源):应用拉取到上下文中的只读数据,例如文件或日志。
  • Prompts (提示词):帮助用户触发特定任务的可复用模板。

你可以使用 FastMCP SDK 在 Python 中构建一个 server。这是一个简单的示例:

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("demo-tools")

@mcp.tool()
def word_count(text: str) -> int:
    """Count the words in a text."""
    return len(text.split())

@mcp.resource("notes://team")
def team_notes() -> str:
    """Expose team notes."""
    return "Release freeze starts Friday."

@mcp.prompt()
def code_review(language: str, code: str) -> str:
    """Template for reviewing code."""
    return f"Review this {language} code: {code}"

if __name__ == "__main__":
    mcp.run()

在构建 server 时,请记住以下规则:

  • 安全性:对于具有破坏性的工具,请使用用户确认机制。验证所有参数。
  • 上下文:保持工具描述简短。冗长的描述会消耗你的 token 预算。
  • 错误处理:返回清晰的消息,以便模型能够纠正自己的错误。

MCP 让工具成为了可复用的资产。编写一次,即可让所有模型使用。

来源:https://dev.to/galian/model-context-protocol-explained-build-your-first-mcp-server-in-python-ian

可选学习社区:https://t.me/GyaanSetuAi