QVeris
MCP 与工具调用

MCP Server 指南:架构、示例与安全

了解MCP服务器架构、工具、资源与传输方式,部署前核对认证、权限和运维控制。

发布日期:2026年4月6日 · QVeris团队制作
MCP architecture diagram linking a host, client and server to tool, database and document icons.
MCP 架构示意:AI 应用通过 MCP 客户端连接服务器,访问外部工具与数据。
WL ✎
王林芳 作者
QVeris AI 首席执行官兼创始人。之前在早期初创公司建立过开发者平台基础设施;拥有 8 年以上 API 设计和开发工具经验。
TR ✓
技术评审员 已验证
针对当前 MCP 架构、服务器概念、传输、工具和授权规范进行技术审查
利益冲突披露: 作者(王林芳)是QVeris AI的首席执行官兼创始人,该公司运营本指南中提到的能力发现和路由层。文章分开 MCP协议职责 来自 QVeris 产品行为。 QVeris 不是协议、授权服务器或服务器端访问控制的替代品。 读者应验证确切的工件、端点、权限、协议版本、提供商条款和测试证据 在自己的部署中使用。
摘要
  • 问题: AI智能体需要工具和数据,但每台服务器都会引入信任边界、功能集、凭证路径、故障模式和操作依赖性。
  • 解决方案: 通过出处、协议和传输支持、模式、授权、副作用、数据处理、可观察性、故障行为和退出策略来评估服务器,而不仅仅是受欢迎程度。
  • 结果: 用于在生产 AI 应用程序中发现、检查、授权、调用、验证、监控和替换 MCP 服务器的可重复工作流程。

什么是 MCP 服务器?

MCP 服务器是模型上下文协议中的功能提供者,向 MCP 客户端公开功能。服务器可以通过 JSON-RPC 发布工具、资源和提示,而传输层则通过 stdio 或 Streamable HTTP 承载这些消息。主机(而不是服务器)决定功能如何进入模型上下文以及何时需要用户批准。

MCP 服务器是模型上下文协议中的能力提供者。当 MCP 客户端(在 Claude Desktop 或 Cursor 等 AI 应用程序内部)发起连接时,服务器通过向连接的客户端公开可用的工具、资源和提示来响应这些连接。

MCP 具有必需的基本协议和生命周期,而各个功能则在初始化期间协商。服务器可能支持 工具/列表 和 工具/调用, 资源/列表和资源/阅读, 或者 提示/列表和提示/获取。不要假设每个服务器都公开所有三个原语。

该生态系统包括官方 SDK、参考实现、供应商托管的远程服务器、本地社区包和公共注册表。列表或存储库星级计数是发现证据,而不是安全认证。从官方开始 MCP 服务器概念 和 架构概述,然后验证您计划执行的确切服务器工件。

服务器选择标准 — 在连接服务器之前记录这五个生产维度的证据:

1. 出处: 命名空间所有权、发布者、包或端点来源、发布历史记录和更新通道

2、协议合约: 协商版本、声明的功能、模式稳定性、分页和错误

3、安全边界: 身份、范围、凭证存储、副作用、输出处理和批准

4. 操作: 超时、速率限制、重试、日志、跟踪、运行状况检查、版本固定和回滚

5、健身: 安全满足预期工作流程的最小功能集和传输

证据来源:当前的官方规范、服务器或 SDK 文档、包元数据以及部署中的测试。

安全生产由参与者共享。服务器必须验证输入、实施访问控制、限制调用速率并清理输出;客户应显示敏感输入、请求确认、应用超时、验证结果并保留审计证据。看官方 MCP 工具安全要求 和 授权规范.

MCP 服务器与 MCP 客户端:架构

MCP 架构清楚地划分了关注点:服务器提供功能,客户端使用它们,主机运行一个或多个客户端。这种无状态设计是有意为之的——服务器不会跟踪哪些客户端连接到它们,从而实现了跨任何 MCP 兼容应用程序的可组合性。

主要建筑属性: 客户端不知道哪些其他客户端连接到同一服务器,服务器也不跟踪哪些客户端正在使用它们。客户端发送工具/列表请求并接收可用工具的列表。服务器只是响应请求——它不维护会话状态或客户端身份。这意味着 Claude Desktop、Cursor、Cline 和任何其他 MCP 兼容客户端都可以连接到同一 MCP 服务器,而无需服务器进行特殊配置。

对于构建 AI 系统的开发人员来说,实际意义是:您对 MCP 服务器的选择与 MCP 客户端的选择无关。所有 MCP 兼容的应用程序都可以连接到相同的服务器,因为 MCP 规范标准化了通信接口。

MCP 服务器选择矩阵

使用此矩阵按信任边界和工作负载选择服务器模式。根据您部署的确切版本确认每个字段;名称、模式、传输和权限可以独立更改。

八种常见 MCP 服务器模式的生产选择矩阵。将注册表元数据视为发现证据,并在授予凭据之前验证正在运行的工件。
服务器模式 能力范围 来源检查 架构检查 运输 主要风险 授权 验证
存储库服务器 代码、问题、拉取请求 发布者和包 读与写工具 stdio / 可流式 HTTP 写出副作用 存储库范围的令牌 测试分支和回滚
设计服务器 文件、节点、令牌 供应商文档 文件和节点标识符 本地或远程 大背景 文件范围的访问 已知元件夹具
工作管理服务器 问题、项目、评论 工作空间所有者 状态和团队枚举 stdio / 可流式 HTTP 意外更新 工作区范围 沙盒项目
可观测性服务器 错误、痕迹、项目 供应商端点 时间范围及项目 流式 HTTP 灵敏遥测 组织范围 已知事件固定装置
文档服务器 参考内容 来源和新鲜度 版本和库 ID 标准输入输出 / 远程 陈旧的上下文 公钥或帐户密钥 版本特定问题
搜索服务器 网络或垂直搜索 提供者和索引 区域设置、时间、结果字段 标准输入输出 / 远程 不受信任的内容 提供商密钥 来源和日期检查
数据库服务器 模式、查询、突变 包维护者 SQL 和结果限制 标准输入输出 / 远程 数据突变 只读数据库角色 事务和行限制
知识服务器 页面、块、搜索 工作空间集成 页面和块模型 流式 HTTP 过度分享 页面范围的集成 专用测试页面

验证规则: 分别测量初始化、发现、授权、执行、重试和结果验证。切勿重复使用来自其他区域、提供商、负载、帐户层或并发级别的延迟数字。

八个 MCP 服务器示例以及要验证的内容

这些示例说明了不同的能力和信任模式。将每个计数、模式、传输和权限视为特定于版本的。标签标记 已验证 指明发布者在何处提供官方实现或文档,而不是一揽子安全批准。

1.GitHubMCP 已验证

存储库工作流程 官方出版商 发现当前的工具 验证范围

GitHub MCP 公开了 12 个用于与 GitHub 存储库交互的工具,包括问题、拉取请求、代码搜索和文件操作。确认当前实施并发布于 github.com/github/github-mcp-server。检查工具/列表,将读取与写入操作分开,针对非生产存储库进行测试,并仅授予所选工作流程所需的存储库权限。

最适合: 构建 AI 编码助手的团队可以与代码存储库交互、自动进行问题分类或生成 PR 描述。

配置说明: 需要 GITHUB_TOKEN env 变量至少 repo 范围。缺少范围会导致工具/列表为空——这是一个常见的调试陷阱。

2. Figma MCP

设计工作流程 发现当前的工具 验证运输

Figma MCP 公开了与 Figma 设计文件交互的功能 - 检索组件、访问设计标记、读取注释和导航文件结构。需要具有文件访问权限的 Figma 帐户。从 Figma 的 MCP 文档验证当前功能集(help.figma.com).

最适合: 从设计到代码的管道,人工智能需要理解视觉设计并将其转化为实施。

3. 线性MCP

工作管理 发现当前的工具 验证运输

Linear MCP 公开了管理 Linear 工作区的功能 - 创建和更新问题、管理项目和周期以及与评论交互。 Linear 的 API 优先架构使其对于工作流程自动化非常有用。验证架构、范围和副作用 Linear 的 MCP 集成文档.

最适合: 工程团队构建人工智能助手来处理冲刺计划、问题分类或状态更新。

4.哨兵MCP 已验证

可观察性工作流程 发现当前的工具 保护遥测 阿帕奇2.0

Sentry MCP 公开了与 Sentry 错误跟踪交互的功能 - 通过指纹查找错误、创建问题以及检索堆栈跟踪。检查当前的工具架构,使用已知事件进行测试,最小化组织权限,并防止敏感遥测输入提示或日志。

最适合: 编写代码并需要根据运行时错误进行自我纠正的人工智能系统。

配置说明: 缺少或范围不足的身份验证令牌会导致工具/列表返回空数组而不是错误 - 验证您的 SENTRY_AUTH_TOKEN 至少具有 org:read 范围。

5. 背景7

文档工作流程 新鲜度很重要 发现当前的工具 麻省理工学院

Context7 MCP 公开了从项目存储库检索上下文文档的功能。由 Upstash 构建(github.com/upstash/context7),它索引代码、README 文件和 API 文档,然后提供语义搜索和上下文检索工具。公共存储库不需要身份验证。

最适合: 人工智能编码助手需要在生成建议之前了解代码库。

6.勇敢搜索MCP 已验证

搜索工作流程 发现当前的工具 验证来源 麻省理工学院

Brave Search MCP 公开了 Web 和本地搜索功能。检查当前架构和提供商条款,将返回的 Web 内容视为不受信任,保留源 URL 和日期,并衡量您自己的环境中的性能。检查当前 模型上下文协议/服务器 存储库。

最适合: 人工智能系统需要实时网络信息,同时避免 Google/Bing API 成本。

配置说明: 免费 Brave Search API 密钥来自 api.search.brave.com。设置为 BRAVE_API_KEY 环境变量。

7.Supabase MCP

数据库工作流程 发现当前的工具 阿帕奇2.0 社区维护

Supabase MCP 公开了与 Supabase 项目交互的功能 - 运行 SQL 查询、检查模式和管理身份验证。社区维护于 github.com/supabase-community/supabase-mcp。需要 Supabase 项目 URL 和服务角色密钥。

最适合: 需要从自然语言生成 SQL、查询数据库或自动化数据工作流程的 AI 系统。

8.MCP概念

知识工作流程 发现当前的工具 所有权 基于API

Notion MCP 公开了与 Notion 工作区交互的功能 - 读取和写入页面、搜索内容以及管理评论。需要一个 Notion 集成令牌。工具行为应通过当前集成文档进行验证,网址为 notion.so/my-integrations.

最适合: 使用 Notion 作为主要知识管理系统的团队。人工智能可以读取、更新和显示文档。

MCP 服务器示例:它们在实践中如何工作

了解 MCP 服务器的工作原理有助于您评估服务器、调试连接问题以及构建自定义服务器。下面是一个最小的 FastMCP 服务器实现和支持工具发现的 JSON-RPC 流程。

使用 Python SDK 构建最小的 MCP 服务器

# Minimal MCP server with FastMCP
# Source: official MCP Python SDK documentation
# Pin and test the current SDK release before deployment

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("my-server")

@mcp.tool()
def search_docs(query: str) -> str:
    """Search documentation for a query string."""
    return f"Results for: {query}"

@mcp.tool()
def get_doc_content(doc_id: str) -> str:
    """Retrieve the full content of a document by ID."""
    # Implementation would fetch from your doc store
    return f"Content of {doc_id}"

# Run: python my_server.py
# Or: fastmcp dev my_server.py (hot reload for development)
# Connect: Configure in claude_desktop_config.json as stdio

基于 FastMCP 装饰器的方法使服务器代码保持最少。每个修饰函数都会自动成为一个工具,其名称来自函数名称,描述来自文档字符串,输入模式来自类型注释。

JSON-RPC 请求/响应流程

工具发现和调用通过 stdio 或 Streamable HTTP 使用 JSON-RPC 2.0:

// Step 1: Client discovers available tools
// Client → Server (via stdio stdin or HTTP POST)
{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}

// Step 2: Server returns tool definitions
// Server → Client (via stdio stdout or HTTP response)
{"jsonrpc": "2.0", "id": 1, "result": {
  "tools": [
    {"name": "search_docs", "description": "Search documentation for queries", "inputSchema": {"type": "object", "properties": {"query": {"type": "string"}}}}
  ]
}}

// Step 3: Client invokes a tool
{"jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": {
  "name": "search_docs", "arguments": {"query": "authentication best practices"}
}}

// Step 4: Server returns results
{"jsonrpc": "2.0", "id": 2, "result": {
  "content": [{"type": "text", "text": "Results for: authentication best practices"}]
}}

每个请求都包含一个 jsonrpc 版本,一个 id 对于相关性,a method 姓名,以及 params。回复包括相同内容 id 和一个 result 或者 error。这种简单性使得 MCP 服务器易于实现和调试——无需自定义协议解析或状态管理。

生产 MCP 服务器工作流程和信任边界

边界规则: 发现、授权、工具执行和结果验证是单独的决策。查找服务器或工具永远不会授予执行它的权限。

生产流程应该发现候选者,检查出处和模式,授权最窄的操作,使用经过验证的参数进行调用,并根据其来源验证结果。在日志和事件响应中明确主机、MCP 服务器、授权服务器和下游服务边界。

决策框架:

发现

搜索受信任的注册表、供应商文档或批准的目录。安装前记录发布者、工件、端点、版本、传输和请求的凭据。

检查和授权

查看功能声明和确切的架构。将读取操作与写入操作分开,将令牌绑定到预期资源,请求最小范围,并要求敏感调用获得批准。

调用并验证

验证服务器端参数,应用截止日期和速率限制,保留请求身份,将返回的内容视为不可信,并根据源验证重要输出。

操作与退出

监控初始化、错误、延迟、成本、批准和下游副作用。固定版本、演练凭证撤销、保留回滚指令和测试替换。

QVeris 可以充当此工作流程中的可选功能发现和路由层(QVeris CLI 文档)。 MCP 仍然定义协议,主机控制上下文和批准,每个 MCP 服务器强制授权,下游提供商仍然对自己的数据和操作负责。

MCP 服务器的部署选项

MCP 服务器可以以三种模式部署,每种模式在安全性、可扩展性和运营开销方面都有不同的权衡。

版本说明。 固定您的主机和服务器一起测试的协议和 SDK 版本。初始化期间协商能力;请勿从产品名称推断对工具、资源、提示、通知、采样、启发、任务或扩展的支持。将候选版本和草案功能视为实验性的,直到您部署的主机、SDK 和服务器版本支持它们。
MCP 2026-07-28 安装提示。 面向新版本无状态核心构建的远程服务器,不再需要协议级会话存储或粘性负载均衡。服务器应接收可独立路由的Streamable HTTP请求,支持的协议版本,使用JSON Schema 2020-12验证工具定义,并显式协商任务、MCP应用程序等扩展。业务工作流仍然可保留状态,但状态应属于应用,而不声明完整是MCP传输会话。
MCP 服务器部署选项比较
部署 运输 安全 可扩展性 最适合
本地进程 标准输入输出 进程隔离 单用户 开发、CLI 工具
远程服务 流式 HTTP 需要身份验证 团队规模 生产、团队访问
托管平台 HTTP / SDK 内置身份验证+监控 企业 企业规模化部署

本地进程(stdio)

最简单的部署:将 MCP 服务器作为本地进程运行并通过 stdio 连接。非常适合开发、CLI 工具和单用户工作流程。 Claude Code 和其他基于 CLI 的客户端通常使用 stdio 传输。配置最少 - 将 MCP 客户端指向进程命令。缺点:服务器与本地计算机绑定,阻止团队共享和远程访问。

远程服务(流式 HTTP)

对于需要多客户端共享的生产工作流,可将 MCP 服务器部署为远程 HTTP 服务,并核对其传输方式与授权要求。参照 MCP 安全最佳实践验证令牌受众并限制权限;同时针对实际部署的服务器和配置,测试端点可用性、超时处理与故障恢复。

托管平台

托管 MCP 平台,例如 Apigene, 长官和 AWS Bedrock 处理身份验证、监控、扩展和安全性。 CData:2026 年 MCP Server 最佳实践 讨论生产 MCP 的治理、权限与运维最佳实践。

// Example: Claude Desktop config connecting a meta-server
// macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
// Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "qveris": {
      "command": "npx",
      "args": ["-y", "@qverisai/mcp"],
      "env": {
        "QVERIS_API_KEY": "your-api-key"
      }
    }
  }
}

// Alternative: connecting a single-purpose server directly
// See each server's repository for its specific config format

配置完成后,重新启动 MCP 客户端。服务器的工具通过标准 MCP 工具发现流程变得可用。

常见问题解答:MCP 服务器

什么是 MCP 服务器?
MCP 服务器是向 MCP 客户端公开功能的程序。它可以通过 JSON-RPC over stdio 或 Streamable HTTP 发布工具、资源和提示;支持的功能在初始化期间协商。
MCP 服务器和 MCP 客户端有什么区别?
MCP 服务器是能力提供者——公开工具和数据的服务。 MCP 客户端是 AI 应用程序(主机)内的组件,用于连接到服务器并管理专用连接并向主机提供功能。远程服务器可以为许多客户端提供服务,并且必须对每个受保护的请求强制执行身份和授权。
在连接 MCP 服务器之前我应该​​如何评估它?
在连接生产凭证之前验证来源、协议版本、传输、功能模式、授权、副作用、数据处理、可观察性、故障行为、提供程序条款和回滚。
MCP 服务器如何公开工具?
MCP 服务器实现 MCP 规范并通过工具/列表端点公开功能。当客户端连接时,它会发送一个工具/列表 JSON-RPC 请求,服务器会使用所有可用工具进行响应 - 每个工具都有名称、描述和 inputSchema。客户端将此架构注入 LLM 的上下文中,以便它知道可以调用哪些工具。
MCP 服务器默认安全吗?
不会。MCP 标准化了通信和授权机制,但运营商仍必须验证服务器、保护凭据、实施访问控制、验证输入和输出、限制调用速率、请求批准敏感操作并保留审计证据。
如何在生产中部署 MCP 服务器?
MCP 服务器可以部署为本地进程(stdio 传输)、远程服务(带身份验证的流式 HTTP)或托管平台。关键注意事项:实施运行状况检查和重新启动策略、需要适当的身份验证、验证令牌受众和范围、监控连接运行状况以及排练回滚。请参阅上面的部署选项部分。

探索适合您的 AI 智能体的 MCP 服务器

无论您选择单一用途服务器、托管平台还是元服务器,MCP 协议都能使集成保持一致。从一台与您的主要用例匹配的服务器开始,评估其工具覆盖范围,然后从那里进行扩展。

了解更多 →

相关指南

MCP Server 指南:架构、示例与安全 | QVeris Guides