5 分钟搭建你的第一个 MCP Server,用 MaaS 平台的模型当大脑
Model Context Protocol (MCP) 作为连接 AI 宿主应用与外部工具的标准协议,解决了 AI 生态中接口碎片化的问题。然而,目前多数 MCP 文章偏向概念阐述,缺乏实际的模型服务集成方案。
在真实的工程落地中,频繁的工具调用与长文本分析往往面临两个硬伤:直连海外 API 极易因网络超时导致长链条任务中断,以及高频请求带来的高额 Token 成本。
本文将提供一个面向工程师的快速通关指南,展示如何基于 TypeScript 构建一个最小可用的 MCP 服务,接入 Claude Code,并利用七牛云 AI 大模型服务(提供国内加速节点与高并发保障)实现底层模型的无缝切换。
接口规范声明:本教程基于七牛云 AI 提供的 OpenAI 兼容 REST 接口,保持请求体结构一致,通过 MAAS_BASE_URL 与 MAAS_MODEL 参数实现模型解耦。若你的目标平台的 API 架构存在差异,请根据代码中 // TODO 标记重构相应的请求解析逻辑,整体流程无需变更。
01
本文交付目标
构建 MCP 服务端:使用 TypeScript 实现一个具备基础工具能力的 MCP Server。
多模型热切换:通过单行环境配置,动态路由至七牛云平台上的不同规模模型。
集成验证:将自定义 Server 接入 Claude Code,完成全链路闭环测试。
预计耗时:5 分钟
环境依赖:Node.js 18+
02
30 秒速览 MCP 协议架构
MCP 核心定义了 3 个角色,使得 AI 运行时(Runtime)能够以统一的标准调度外部能力:
Host:AI 宿主应用(例如 Claude Code、Cursor),负责接收用户输入并编排任务。
Client:宿主应用内部的协议通信模块,负责生命周期管理与消息路由。
Server:执行具体业务逻辑的实体程序,暴露具体的工具(Tools)接口。
+---------------------+ +------------------+ +------------------------+
| Claude Code (Host) | <-- MCP --> | 你的 MCP Server | <-- REST --> | 七牛云 AI 大模型服务群 |
+---------------------+ +------------------+ +------------------------+
03
初始化工程环境
执行以下脚本创建项目并安装标准依赖:
Bash
mkdir mcp-maas-demo && cd mcp-maas-demo
npm init -y
npm install @modelcontextprotocol/sdk zod dotenv
npm install -D typescript @types/node tsx
npx tsc --init
在项目根目录下创建 .env 环境配置文件,配置七牛云 AI 平台凭证与路由参数:
代码段
# .env
MAAS_API_KEY=your_qiniu_api_key
MAAS_BASE_URL=https://api.qnaigc.com/v1
MAAS_MODEL=deepseek/deepseek-v4-pro # 示例模型,可按需替换为平台支持的其他模型注:将模型标识(MAAS_MODEL)抽离至环境变量,是后续实现运行时模型热切换的核心工程设计。
04
实现最小可用 MCP 服务端
创建入口文件 src/index.ts,实现核心通信与工具注册逻辑:
TypeScript
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
import "dotenv/config";
// ---- 1. 初始化 MCP Server ----
const server = new McpServer({
name: "maas-demo-server",
version: "1.0.0",
});
// ---- 2. 定义一个简单工具:查天气 ----
// 真实场景里你可以换成查订单、查文档、查库存等任意业务逻辑
server.registerTool(
"get_weather",
{
title: "查询天气",
description: "根据城市名查询当前天气情况",
inputSchema: {
city: z.string().describe("城市名称,例如:北京、上海"),
},
},
async ({ city }) => {
// mock 数据,实际项目里换成真实天气 API
const mockWeather = {
city,
temperature: `${20 + Math.floor(Math.random() * 10)}°C`,
condition: ["晴", "多云", "小雨"][Math.floor(Math.random() * 3)],
};
return {
content: [
{
type: "text",
text: `${city}当前天气:${mockWeather.condition},气温 ${mockWeather.temperature}`,
},
],
};
}
);
// ---- 3. 定义一个"调用 MaaS 模型做总结"的工具 ----
// 这里是今天的重点:展示如何在 MCP Server 内部调用 MaaS 平台的模型
server.registerTool(
"summarize_with_maas",
{
title: "用 MaaS 模型总结文本",
description: "把一段较长的文本交给 MaaS 平台的模型,返回简短摘要",
inputSchema: {
text: z.string().describe("需要总结的原始文本"),
},
},
async ({ text }) => {
const summary = await callMaasModel(
`请用一句话总结以下内容:\n${text}`
);
return {
content: [{ type: "text", text: summary }],
};
}
);
// ---- 4. 封装 MaaS 平台调用 ----
// 假设是 OpenAI 兼容接口,大多数 MaaS 平台都是这个形态
async function callMaasModel(prompt: string): Promise<string> {
const response = await fetch(`${process.env.MAAS_BASE_URL}/chat/completions`, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.MAAS_API_KEY}`,
},
body: JSON.stringify({
model: process.env.MAAS_MODEL, // 换模型只改这一个环境变量
messages: [{ role: "user", content: prompt }],
max_tokens: 300,
}),
});
if (!response.ok) {
throw new Error(`MaaS 调用失败: ${response.status}${await response.text()}`);
}
const data = await response.json();
// TODO: 如果你们平台的返回结构不是 OpenAI 兼容格式,改这里的取值路径
return data.choices?.[0]?.message?.content ?? "(未返回内容)";
}
// ---- 5. 启动 Server ----
const transport = new StdioServerTransport();
await server.connect(transport);在 package.json 中配置启动脚本:
JSON
{
"scripts": {
"start": "tsx src/index.ts"
}
}执行本地编译验证:
Bash
npm run start注:此时标准输入输出流(Stdio)将被挂起以等待 MCP 协议握手信号,未抛出异常即代表初始化正常(通过 Ctrl+C 终止进程)。
05
接入 Claude Code 进行集成测试
编辑 Claude Code 的全局配置文件(通常位于 ~/.claude.json,可通过 /mcp 命令确认绝对路径),注入以下服务节点:
JSON
{
"mcpServers": {
"qiniu-maas-demo": {
"command": "npx",
"args": ["tsx", "/[PROJECT_ABSOLUTE_PATH]/mcp-maas-demo/src/index.ts"],
"env": {
"MAAS_API_KEY": "your_qiniu_api_key",
"MAAS_BASE_URL": "https://api.qnaigc.com/v1",
"MAAS_MODEL": "deepseek/deepseek-v4-pro"
}
}
}
}重启 Claude Code 运行时,执行意图测试:
验证业务工具:帮我查一下北京的天气
验证代理工具:用 summarize_with_maas 工具帮我总结这段话:「MCP 协议正在成为 AI 应用调用外部工具的标准方式……」
若正确返回业务数据与摘要结果,证明 Claude Code -> MCP Server -> 七牛云 AI 的全链路已全线贯通。
06
进阶:体验“零代码重构的配置级切换”
这是本小节的核心工程实践。得益于七牛云提供的多模型统一鉴权架构,当需要评估不同参数规模模型在特定工具场景下的表现时,你无需重构、无需重新构建编译任何 TypeScript 代码。
仅需变更配置中的 MAAS_MODEL 变量(在修改 .claude.json 里的环境变量后,客户端会自动在下一次请求中透传新模型):
Bash
# 切换前:使用高性价比开源模型
MAAS_MODEL=deepseek/deepseek-v4-flash
# 切换后:一键切到高性能闭源/大参数模型
MAAS_MODEL=deepseek/deepseek-v4-pro再次执行 summarize_with_maas,服务将无缝走通新模型的推理链路。你可以明显观测到在七牛云国内加速节点的支撑下,不同模型的首字延迟(TTFT)与吞吐表现。同时,你可以登录七牛云后台控制台,直观查看在同一个 API Key 下,异构模型的流量分布、调用日志与计费快照。
07
结语与后续演进
通过本文的工程实践,我们成功构建了一个具备多模型路由能力的 MCP 服务。这种将 “工具定义(MCP)” 与 “大模型算力(MaaS)” 解耦的架构,为构建企业级低延迟、低成本 AI 应用提供了标准范式。
点击「阅读原文」,立即体验。
推荐阅读