使用模型上下文协议 (MCP) 为大语言模型扩展实时数据:全面指南

作者
  • avatar
    姓名
    Nino
    职业
    Senior Tech Editor

大语言模型 (LLM) 的快速演进彻底改变了人工智能的版图,但这些模型仍然受制于一个根本性的局限: “知识截止日期” (Knowledge Cutoff)。 预训练模型无论参数规模多大、推理能力多强,都运行在一个冻结的时间窗口内。 它们与实时数据流、私有数据库以及所处系统的即时物理状态是脱节的。

传统的解决方案,如检索增强生成 (RAG) 或手动上下文注入,在处理对延迟和数据新鲜度要求极高的实时智能体 (Agentic) 工作流时,往往显得脆弱、缓慢且不足。 这种脱节在专业环境中表现得尤为明显。 一个在 2023 年训练的模型无法告诉开发人员为什么他们的服务器现在响应缓慢,也无法提供波动剧烈的加密货币的当前交易价格。 如果没有外部连接,模型会尝试根据训练期间学到的概率模式来回答这些查询,从而导致自信的幻觉。 通过 n1n.ai 平台,开发者可以轻松调用包括 Claude 3.5 Sonnet 和 DeepSeek-V3 在内的顶尖模型,而 MCP 协议的出现,则为这些模型插上了实时获取信息的翅膀。

什么是模型上下文协议 (MCP)?

模型上下文协议 (Model Context Protocol, MCP) 通过定义 AI 模型与工具及数据交互的通用标准,解决了这些碎片化问题。 概念上,MCP 被描述为 “AI 界的 USB-C”: 它提供了一个单一的、标准化的接口,允许任何 “外设” (服务器) 连接到任何 “计算机” (AI 客户端)。 正如 USB-C 驱动器可以与任何品牌的笔记本电脑配合使用一样,一个 MCP 服务器也可以与任何兼容 MCP 的主机 (如 Claude Desktop 或 Cursor IDE) 配合使用,而无需编写定制的胶水代码。

这种标准化发生在两个关键层面:

  1. 传输层 (Transport Layer): 支持用于本地安全执行的标准输入/输出 (stdio),以及用于远程连接的服务器发送事件 (SSE)。 stdio 传输对于本地开发尤为重要,因为它确保了敏感的 API 密钥完全保留在用户的机器上。
  2. 协议层 (Protocol Layer): 利用 JSON-RPC 2.0 来定义请求、响应和通知的消息结构。 这种一致性使得通过 n1n.ai 接入的各类模型能够以统一的方式理解外部环境。

MCP 的三大核心原语

要构建有效的 MCP 服务器,必须理解协议向 LLM 暴露的三个核心原语:

  • 工具 (Tools/Action): 由服务器暴露的可执行函数。 它们代表了智能体的 “手”。 例如,get_crypto_price(coin: "solana")
  • 资源 (Resources/Reading): 被动数据源,如文件句柄或 URL。 它们提供按需加载的上下文,通过 URI 方案 (如 crypto://watchlist) 进行标识。
  • 提示词 (Prompts/Guidance): 预配置的模板,帮助用户完成特定任务 (例如,预加载了市场背景信息的 analyze_market 提示词)。

实现 1: 基于 TypeScript 的加密货币追踪器

第一个实现重点是使用 TypeScript 构建的加密货币追踪器。 这展示了如何利用广泛的 JavaScript 生态系统和官方 MCP SDK。 使用 Zod,我们可以创建一个架构 (Schema),作为运行时验证和 LLM 所需 JSON 架构的唯一事实来源。

import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
import { z } from 'zod'

// 初始化服务器实例
const server = new McpServer({
  name: 'crypto-tracker',
  version: '1.0.0',
})

// 使用 Zod 进行架构验证的工具定义
server.tool('get_crypto_price', { crypto_id: z.string() }, async ({ crypto_id }) => {
  // 业务逻辑: 从外部 API 获取价格
  const price = 65000

  // 返回符合 MCP 协议的结构化文本内容
  return {
    content: [{ type: 'text', text: `当前价格: $${price}` }],
  }
})

// 使用 Stdio 传输启动服务器
const transport = new StdioServerTransport()
await server.connect(transport)

实现 2: 使用 FastMCP 的 Python 天气服务器

Python 实现通常利用 FastMCP 框架,这是一个专为快速开发设计的高级框架。 它利用 Python 的动态特性,通过装饰器 (@mcp.tool()) 和类型提示自动生成工具定义。

from mcp.server.fastmcp import FastMCP
import httpx
import json

# 初始化 FastMCP 服务器
mcp = FastMCP("weather")

@mcp.tool()
async def get_current_weather(latitude: float, longitude: float) -> str:
    """
    获取特定位置的当前天气。
    文档字符串 (Docstring) 会自动成为 LLM 的工具描述。
    """
    url = f"https://api.open-meteo.com/v1/forecast?latitude={latitude}&longitude={longitude}&current_weather=true"

    async with httpx.AsyncClient() as client:
        response = await client.get(url)
        data = response.json()

    return json.dumps(data, indent=2)

实现 3: 使用 Rust 构建高性能 Sentinel (哨兵)

对于基础设施智能体,Rust 解决了 “零开销” (Zero Overhead) 的关键需求。 Rust 编译为原生二进制文件,并且不通过垃圾回收器管理内存,从而提供了极高的性能和安全性。 这对于需要实时监控系统指标的场景至关重要。

在 Rust 中,服务器必须定义镜像 JSON-RPC 2.0 规范的结构体:

// 用于 JSON-RPC 响应的 Rust 结构体定义
#[derive(Serialize, Deserialize)]
struct JsonRpcResponse {
    jsonrpc: String,
    id: Option<serde_json::Value>,
    #[serde(skip_serializing_if = "Option::is_none")]
    result: Option<serde_json::Value>,
    #[serde(skip_serializing_if = "Option::is_none")]
    error: Option<serde_json::Value>,
}

如何配置 MCP 客户端

目前,Claude Desktop 是主要的宿主环境。 要注册自定义服务器,用户需要修改 claude_desktop_config.json 文件。 确保在配置中使用可执行文件的绝对路径。

{
  "mcpServers": {
    "weather-service": {
      "command": "uv",
      "args": ["run", "server.py"],
      "cwd": "/absolute/path/to/project"
    },
    "crypto-service": {
      "command": "npx",
      "args": ["-y", "tsx", "index.ts"],
      "cwd": "/absolute/path/to/project"
    }
  }
}

技术对比表

特性TypeScriptPythonRust
框架MCP SDK + ZodFastMCPSerde + Sysinfo
类型安全高 (通过 Zod 编译时)高 (运行时提示)极高 (严格编译时)
性能中等 (Node.js 运行时)中等 (Python VM)极高 (原生二进制)
最佳用例Web API, JSON 密集型任务数据科学, 脚本编写系统工具, 守护进程

总结与展望

模型上下文协议代表了生成式 AI 技术栈的成熟。 通过将模型的推理能力与其上下文窗口和执行环境解耦,MCP 实现了一种模块化、可扩展且安全的方法来构建智能系统。 无论是在追踪加密市场、检查天气,还是监控服务器健康状况,MCP 都提供了缺失的环节,将文本生成器转变为功能齐全的数字助理。

配合 n1n.ai 提供的聚合 API 服务,开发者可以无缝切换不同的底层模型,寻找与 MCP 协议配合最默契的推理引擎,从而在竞争激烈的 AI 赛道中脱颖而出。

Get a free API key at n1n.ai