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

- 姓名
- 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) 配合使用,而无需编写定制的胶水代码。
这种标准化发生在两个关键层面:
- 传输层 (Transport Layer): 支持用于本地安全执行的标准输入/输出 (stdio),以及用于远程连接的服务器发送事件 (SSE)。 stdio 传输对于本地开发尤为重要,因为它确保了敏感的 API 密钥完全保留在用户的机器上。
- 协议层 (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}¤t_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"
}
}
}
技术对比表
| 特性 | TypeScript | Python | Rust |
|---|---|---|---|
| 框架 | MCP SDK + Zod | FastMCP | Serde + 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