斜杠中年斜杠中年AI × 沟通 × 商业 × 人生
AI 工具与商业赋能

MCP Server 是什么?开发者如何选择、安装并接入自己的应用

给开发者的 MCP Server 实战指南:在哪里找可信 MCP、该先装哪些、如何安全地让 AI 连接你的 Next.js 应用,以及何时该自己写一个 MCP Server。

2026-08-08更新: 2026-08-0812 分钟阅读Wesley Chong
#MCP#Model Context Protocol#AI Agent#Next.js#开发者工具#API 集成#AI 自动化
MCP Server 是什么?开发者如何选择、安装并接入自己的应用|AI 工具与商业赋能 封面图

摘要

MCP 不是又一个聊天插件,而是一套让 AI 安全调用资料与工具的开放协议。开发者不需要把所有 MCP 都装上:从 Git、文档、浏览器测试和只读数据开始;当 AI 需要理解或操作你的产品时,再把你的业务能力封装成一个小而受控的 MCP Server。

一句话答案

MCP(Model Context Protocol)是让 AI 客户端以统一方式发现和调用外部资料、工具与工作流的开放协议。 对开发者最实用的开始方式,是先连接少量、权限受限的现成 MCP;当 AI 需要真正理解你的产品时,再为自己的业务 API 写一个小而安全的 MCP Server。

MCP Server 到底是什么?

可以把 MCP 想成 AI 世界的 USB-C。

以前,每个 AI 工具要连接 GitHub、数据库、文件或内部系统,都得各自写一套插件。MCP 把这件事标准化:一个 MCP Server 将能力公开为三种东西:

  • Tools(工具):AI 可以请求执行的动作,例如搜索 issue、读取订单或创建草稿。
  • Resources(资源):给 AI 阅读的上下文,例如文件、数据库 schema、产品文档。
  • Prompts(提示模板):由用户选择的、可复用的工作流程入口。

这不等于把控制权交给模型。好的 MCP 客户端会展示工具说明和输入;你的 Server 也应该把每个工具限制得很清楚。一个叫 get_order_summary 的工具比一个能执行任意 SQL 的 run_sql 安全得多。

官方说明与规范在 Model Context Protocol 文档;它也解释了 Server 的 tools、resources 和 prompts

在哪里看 MCP Server 清单?

官方 MCP Registry 开始,而不是从一张过期的「Top 100 MCP」清单开始。Registry 是公开 Server 的官方元数据目录;可以按名称和能力搜索,并查看安装与配置资料。它仍在 preview,因此把它当成发现入口,不当成安全背书。

选一个 Server 前,先做这五个检查:

  1. 发布者是谁? 优先公司或开源项目的官方仓库,而不是同名的第三方包装。
  2. 它能读什么、写什么? 看工具名称、输入 schema 和 OAuth scopes,不只看简介。
  3. 凭证放在哪里? 本地 stdio Server 通常从环境变量取凭证;远程 HTTP Server 应有合适的授权流程。
  4. 有没有源码、版本和维护记录? 没有这些,就不该接触生产资料。
  5. 能否从只读开始? 先让它搜索、预览、起草;确认流程后才开启创建、发送或删除。

开发者最值得先用哪些 MCP?

不要追求「装得最多」,要追求「每一个都解决一个明确摩擦点」。下面是一个适合 Web / Next.js 开发者的起步组合;用 Registry 搜索相应服务的官方或可信实现。

| 场景 | 优先能力 | 安全起点 | | -------- | ------------------------------- | --------------------------------------------------------- | | 代码库 | Git、GitHub、issue、PR | 只读搜索和 diff;不要一开始允许 merge 或 push | | 本地项目 | 文件系统 | 只允许当前仓库或指定工作目录,绝不授权整个 home directory | | 技术资料 | 文档搜索 / API reference | 只读;让 AI 取得框架和 SDK 的最新文档 | | 前端验证 | 浏览器自动化 / Playwright | 只针对本地或 preview URL;用测试账号 | | 数据库 | PostgreSQL、Supabase 等数据工具 | 单独的只读角色、只读 view、行数限制与审计 | | 可观测性 | Sentry、日志、分析 | 先查错和汇总,不开放修改 alert 或删除数据 | | 发布流程 | Vercel、GitHub Actions | 先读取部署状态;生产部署应保留人工确认 | | 团队工作 | Linear、Slack、Notion | 先检索与起草;发送消息或改 ticket 前要确认 |

官方参考 Server 也很适合学习协议本身:filesystem、git、memory、fetch、time 和 sequential thinking 都可在 Example Servers 找到。它们是范例,不代表你必须在生产环境使用它们。

本地 MCP、远程 MCP,还是把 MCP 接进我的 App?

这三个做法很容易混在一起,实际上目标不同:

| 目标 | 最合适的做法 | | ---------------------------------------- | ---------------------------------------------------- | | 让 Codex、Claude Code 或桌面 AI 帮你开发 | 在开发机配置本地 MCP;一般用 stdio 启动 Server | | 让团队 AI 连接一个共享服务 | 部署远程 MCP;一般用 Streamable HTTP 和正式认证 | | 让 AI 能理解或操作你的产品 | 为你的业务 API 包一层 MCP Server,严格设计工具和权限 |

本地 stdio 很适合开发机:客户端启动子进程,经 stdin/stdout 传 JSON-RPC。注意:stdio Server 绝不能把日志写到 stdout,否则会破坏协议;日志写到 stderr。对于部署给多人使用的远程 Server,官方 TypeScript SDK 建议使用 Streamable HTTP;旧 SSE 方式仅用于兼容旧客户端。详见 TypeScript SDK Server 文档

为 Next.js 应用设计 MCP:先从业务边界开始

你的 Next.js app 不应把整个数据库、所有内部 API 或环境变量暴露为一个「万能工具」。先列出 AI 真正要完成的用户任务,再把它切成小工具。

以一个内容网站为例,好的第一版可能只有:

  • search_published_articles(query, limit):只搜索已发布内容,limit 有上限。
  • get_article_outline(slug):返回标题、摘要、目录和公开 URL。
  • draft_related_links(slug):生成建议,自动改文章。
  • get_contact_message_summary(date_range):仅给授权管理员的汇总,不返回不必要的个人资料。

不好的第一版则是:

  • execute_sql(sql)
  • read_any_file(path)
  • call_internal_api(url, body)

前者让权限、测试和审计成为可能;后者只是把万能管理员钥匙递给模型。

最小可行架构

AI client (Codex / Claude / your agent)
              |
       MCP transport
              |
       MCP Server (server-side)
              |
   authenticated business service / API
              |
     database, CMS, GitHub, Vercel

浏览器永远不应直接持有 MCP 的服务凭证。若你的网页需要触发 AI 动作,它只调用你自己的受保护 Next.js Route Handler;Route Handler 或后台 worker 再按当前用户权限调用业务服务或 MCP client。

从零开始:为你的应用写一个 MCP Server

Node / TypeScript 项目的官方 SDK 安装方式如下:

npm install @modelcontextprotocol/sdk zod

先做一个独立的 Server(例如 mcp-server/),而不要把它塞进前端组件。下面是结构示意:

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";

const server = new McpServer({ name: "my-app", version: "0.1.0" });

server.registerTool(
  "search_published_articles",
  {
    title: "Search published articles",
    description: "Search public, published articles only.",
    inputSchema: {
      query: z.string().min(2).max(120),
      limit: z.number().int().min(1).max(10).default(5),
    },
  },
  async ({ query, limit }) => {
    const articles = await searchPublishedArticles({ query, limit });

    return {
      content: [{ type: "text", text: JSON.stringify(articles) }],
    };
  },
);

searchPublishedArticles 应是你自己服务端的函数:它只查 published 内容、参数化查询、限制返回字段和笔数,并记录调用者与操作。不要在工具 handler 中拼接 SQL,也不要信任模型提供的 URL、路径或用户 ID。

开发机整合时,接上 stdio transport;要部署远程服务时,改用 Streamable HTTP,并在每次请求建立身份、权限和 rate limit。SDK 也提供 client API 来列出和调用 tools,参考 TypeScript SDK Client 文档

接入现有 Next.js API 的实际步骤

  1. 盘点可公开的业务能力。 为每个候选工具写清楚:谁能调用、能读写什么、输入上限、失败行为和审计字段。
  2. 先建立服务层。 把 Supabase、CMS 或第三方调用封装在 server-only 函数中;不要让 MCP handler 直接碰浏览器代码。
  3. 写一个只读工具并测试。 先用 5–10 笔确定数据测试 schema、错误讯息和权限拒绝。
  4. 加入身份与授权。 远程 MCP 不靠「知道 URL 就能用」;验证 access token,把用户和 tenant 传到每次业务查询。
  5. 加限制与日志。 每个工具设 timeout、分页 / limit 上限、rate limit,以及不记录敏感正文的审计日志。
  6. 最后才部署。 先在 preview 环境对测试资料跑通;确认所选 Vercel runtime 支持你的 Streamable HTTP 连接模式与认证流程,再接生产域名。

一个给这个网站的务实起点

这个网站现在以 Markdown 为内容来源,文章、工具和 Wiki 已有清晰的 loader。比起先把 Supabase 管理权限开放给 AI,更合适的第一批 MCP 工具是:

  1. 搜索已发布 articles、tools 和 wiki;
  2. 读取单一条目的公开 metadata 与目录;
  3. 根据现有 tags 建议内部链接;
  4. 验证新 Markdown frontmatter 是否符合项目 schema;
  5. 只在人工确认后,创建内容草稿或 Git 分支。

这会让 AI 帮你做内容维护和开发工作,却不会让它接触 SMTP 密码、Supabase 管理密钥或整个文件系统。

安全清单:MCP 最容易踩的坑

  • 只安装你能追溯发布者和源码的 Server。
  • 不要把 API key 写进 Git、MCP config、文章或 client bundle;使用环境变量和密钥管理。
  • 对数据库和 SaaS 分离只读与写入凭证;生产写入最好经过审批。
  • 将文件系统 Server 限制到单一项目目录。
  • 不把不可信网页、issue、文档的文字直接当作系统指令执行;它们可能包含 prompt injection。
  • 对删除、发送、部署、付款和权限变更设置显式确认与审计。
  • 定期移除不用的 Server 和 token;权限会随着项目演变而累积。

官方的 MCP Security Best Practices 值得在上线远程 Server 前完整阅读。

结论

MCP 的价值不在于让 AI 获得「所有权限」,而在于让它在边界清楚的情况下完成真实工作。对开发者来说,最聪明的路径是:先装少量只读 MCP 解决日常开发摩擦;再将自己应用中最稳定、最可审计的业务能力做成小工具。这样 AI 才会成为可靠的协作者,而不是一把不知道交给谁的万能钥匙。

延伸阅读

常见问题

MCP Server 和 API 有什么不同?

API 是给程序调用的接口;MCP Server 是把工具、资源和提示模板用统一协议提供给 AI 客户端。很多 MCP Server 内部仍然调用你已有的 REST、GraphQL 或数据库 API。

我需要在 Next.js 浏览器端安装 MCP SDK 吗?

不需要,也不应该。把 MCP 连接、令牌和工具调用放在服务端或独立服务中;浏览器只调用你自己的受保护 API。

哪里可以查看 MCP Server 列表?

优先使用官方 MCP Registry 搜索。它是公开服务器的元数据目录;仍要逐个检查发布者、源码、权限、认证方式与维护状态。

可以直接把生产数据库交给 MCP 吗?

不要直接给它管理员数据库凭证。先使用只读账号、只读视图、行级限制和审计日志;所有写操作都应通过专门的、可验证的业务工具。

分享这篇文章 / Share Article
Wesley Chong

作者

Wesley Chong

来自马来西亚居銮的软件开发者、数字顾问、Toastmasters 讲员。

专注帮助普通人用 AI 升级沟通、表达、商业与人生。

相关阅读