- 问题: 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 服务器选择矩阵
使用此矩阵按信任边界和工作负载选择服务器模式。根据您部署的确切版本确认每个字段;名称、模式、传输和权限可以独立更改。
| 服务器模式 | 能力范围 | 来源检查 | 架构检查 | 运输 | 主要风险 | 授权 | 验证 |
|---|---|---|---|---|---|---|---|
| 存储库服务器 | 代码、问题、拉取请求 | 发布者和包 | 读与写工具 | 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 已验证
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
Supabase MCP 公开了与 Supabase 项目交互的功能 - 运行 SQL 查询、检查模式和管理身份验证。社区维护于 github.com/supabase-community/supabase-mcp。需要 Supabase 项目 URL 和服务角色密钥。
最适合: 需要从自然语言生成 SQL、查询数据库或自动化数据工作流程的 AI 系统。
8.MCP概念
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 服务器可以以三种模式部署,每种模式在安全性、可扩展性和运营开销方面都有不同的权衡。
| 部署 | 运输 | 安全 | 可扩展性 | 最适合 |
|---|---|---|---|---|
| 本地进程 | 标准输入输出 | 进程隔离 | 单用户 | 开发、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 服务器
探索适合您的 AI 智能体的 MCP 服务器
无论您选择单一用途服务器、托管平台还是元服务器,MCP 协议都能使集成保持一致。从一台与您的主要用例匹配的服务器开始,评估其工具覆盖范围,然后从那里进行扩展。
了解更多 →
