竞品对比与选型
MCP 与函数调用
厘清 MCP 与 Function Calling 在协议发现、函数结构与执行边界方面的职责边界。
发布日期: · QVeris团队制作

先看结论
函数调用让模型生成结构化参数,请求使用某个工具;由应用验证并执行。MCP 规范 AI 应用与工具或上下文服务器之间的通信。两者可以组合使用,但都不会自动选择最安全的工具、保证授权或验证金融数据。
例如,查询 AAPL 股价需要明确代码和市场,选择权限合适的数据源,执行工具调用,并返回事件时间、获取时间、币种和行情覆盖。模型可提出调用请求,由宿主应用检查结果是否可用。
什么是函数调用?
模型 API 接收工具定义,可以返回函数名或工具标识及结构化参数。应用仍负责执行处理函数、检查权限、验证参数,并把工具结果返回对话。模型生成调用不代表执行成功。
不同提供商的请求格式和 Schema 子集不同。适配器可处理部分差异,但仍应测试参数校验、并行调用、流式响应、重试及模型选项。工具列表不必永久固定,应用可以先发现候选项,再为每次请求提供较小的工具集。
OpenAI 函数调用文档可从 OpenAI 函数调用文档 了解该提供商接口;其他模型应核对各自官方文档。
什么是 MCP?
MCP 宿主协调客户端访问独立服务器;服务器可暴露工具、资源与提示词。本地 stdio 与远程 Streamable HTTP 的部署和鉴权要求不同,应使用两端支持的传输方式及协议版本。
以当前规范为准。规范入口已于 2026 年 3 月 6 日核对;较早示例可能采用旧的生命周期规则。应明确测试版本发现、传输支持和可选功能。
MCP 官方规范 · 官方架构概览影响实现的七项差异
| 维度 | 函数调用 | MCP |
|---|---|---|
| 职责 | 面向模型的调用请求 | 应用与服务器之间的上下文和工具协议 |
| 执行 | 应用调用处理函数 | 客户端请求服务器操作 |
| 发现 | 应用提供候选工具 | 服务器暴露可发现能力 |
| 兼容性 | 模型 API 与 Schema 适配 | 协议版本、客户端与服务器支持 |
| 安全 | 应用权限与输入检查 | 传输授权与宿主及服务器策略 |
| 部署 | 本地处理函数或远程服务 | 本地进程或远程端点 |
| 成本 | Token、执行及运维 | 同类费用及协议基础设施成本 |
MCP 不会让工具 Schema 自动从模型上下文中消失。Token 用量取决于宿主发送内容、缓存、发现策略及模型 API。角色权限、留存、审批与审计日志也需要实际实现,不能仅凭支持协议就认定具备。
如何组合使用
可采用以下顺序:发现相关工具,检查契约,把必要定义提供给模型,验证模型请求的参数和授权,通过适当客户端执行,再验证返回结果。沿途记录供应商、工具版本、请求标识和时间戳。
金融研究中的回退必须满足相同市场、币种、复权、时效与许可契约;否则应披露降级并确认用户是否接受。不得将空响应或超时变成虚构价格,也不能静默复用过期数据。
何时选择哪种方式
工具稳定的小型应用可采用模型工具调用与普通处理函数。多个客户端共享工具时,可评估 MCP。生产应用也可组合使用。不要仅按工具数量决策,还需考虑部署责任、凭证、可用性、Schema 演进及适配维护成本。
应在相同工作负载下测量候选路径,记录模型与工具版本、Schema Token、缓存状态、传输、首 Token 及完整任务延迟、错误率、重试和总成本。公布基准测试时说明样本量及环境;MCP 不存在通用固定延迟附加值或自动 Token 节省比例。
QVeris 的位置
QVeris 通过支持的接入方式提供发现、检查与能力调用入口,补充宿主及编排层。宿主仍负责用户意图、权限与结果验证;底层数据覆盖和许可取决于所选提供商。
QVeris MCP 接入文档 · REST API 参考Discover/Inspect 免费;注册验证后一次性获得 1,000 credits;$19 购买 10,000 credits;credits 永不过期;无月费、无自动续费。开发测试与生产中的付费执行都可能消耗 credits。
credits 是计费单位,不是固定调用次数。应检查具体工具,并将重试、提供商费用、模型调用及运维投入纳入同口径对比。
QVeris 当前定价实现示例
以下保留原代码示例。执行前按当前文档核对包版本、协议版本、API 名称和凭证;示例不代表已成功调用的记录。
// Define a tool schema (OpenAI format example) { "type": "function", "function": { "name": "get_stock_price", "description": "Get current stock price", "parameters": { "type": "object", "properties": { "symbol": { "type": "string" } } } } }
// Application code — tools are hardcoded prompt content const tools = [{ name: "get_stock_price", ... }]; // Every request includes ALL tool schemas const response = await openai.chat.completions.create({ model: "gpt-4", tools: tools, // static, predefined messages: [{ role: "user", content: "What's AAPL at?" }] });
# MCP client dynamically discovers tools at runtime from mcp import ClientSession # Connect to any MCP Server session = await ClientSession.connect(server_url) # Discover tools — no hardcoded schemas needed tools = await session.list_tools() # Returns: dynamic list of available tools with schemas # Call a discovered tool result = await session.call_tool("get_stock_price", { "symbol": "AAPL" })
# One command to add QVeris MCP Server to Claude Code claude mcp add qveris -s user -- npx @qverisai/mcp # Now your Claude Code agent has access to 10,000+ capabilities # Just ask: "find me tools for stock market data" # QVeris discovers, inspects, and calls — all through MCP
常见问题
MCP 能替代模型函数调用吗?
两者处于不同边界。宿主可用模型工具调用表达操作请求,再通过 MCP 与执行服务器通信。
MCP 会自动保护工具安全吗?
不会。需要实现并测试授权、输入校验、适当的用户确认、凭证保护与审计控制。
哪种更便宜?
使用相同数据及模型测量完整任务,计入工具费用、模型 Token、重试、托管及运维工作。
资料来源
本文以 MCP 官方规范和模型 API 官方文档为主要依据。实施前请通过文中链接核对协议版本、API 行为、软件包版本及接入要求。
