GFast开发MCP服务器之mark3labs/mcp-go库接入(二)

接下来我们正式把mark3labs/mcp-go接入到GFast框架,并实现自动注册,后续我们只需要添加对应的toolresourceprompt方法即可

一、首先要了解toolresourceprompt是什么,有什么作用。

Model Context Protocol (MCP) 框架中,Tool、Resource、Prompt 是三个核心组件,分别承担不同的角色,共同协作以优化模型对上下文的理解和处理能力。以下是它们的详细解释和作用:


1. Tool(工具)

定义

  • Tool 是模型可调用的外部功能模块或接口,用于扩展模型的基础能力(如计算、搜索、代码执行等)。
  • 在 MCP 中,Tools 通常以标准化协议(如 OpenAI 的 Function Calling)集成,允许模型动态选择并执行工具。

作用

  • 增强模型功能 :弥补纯语言模型的局限性(如实时数据获取、数学运算)。
    示例:调用搜索引擎 API 获取最新新闻,或使用 Python 解释器运行代码。
  • 自动化任务:将复杂任务分解为工具链(如先检索知识库,再生成摘要)。
  • 上下文动态更新:通过工具返回的结果,实时更新模型的上下文。

典型场景

  • 查询天气、股票等实时信息。
  • 执行数据库操作或数据分析。

2. Resource(资源)

定义

  • Resource 是模型可访问的静态或动态数据源,包括知识库、数据库、文档集合等。
  • 在 MCP 中,Resources 通过索引或向量化技术(如 RAG)被高效检索和加载到上下文中。

作用

  • 扩展知识边界:为模型提供训练数据之外的领域知识(如企业私有文档)。
  • 支持长上下文 :通过按需加载资源片段,避免一次性输入全部内容。
    示例:仅加载与用户问题相关的文档段落,而非整个 PDF。
  • 多模态支持:资源可以是文本、表格、图像(需编码为模型可理解的格式)。

典型场景

  • 法律顾问模型引用法典条款。
  • 医疗诊断模型参考最新医学论文。

3. Prompt(提示)

定义

  • Prompt 是用户或系统提供给模型的指令或上下文输入,用于引导模型行为。
  • 在 MCP 中,Prompt 可能被结构化设计(如包含角色设定、任务步骤、示例等)。

作用

  • 控制模型输出 :通过精心设计的 Prompt 约束生成内容(如格式、风格)。
    示例

    arduino 复制代码
    "你是一名资深翻译官,将以下中文翻译成英文,要求使用学术用语:{text}"
  • 动态上下文管理 :Prompt 可包含对 Tool 或 Resource 的引用。
    示例

    复制代码
    "根据从{数据库工具}检索到的2023年财报,总结公司的营收趋势。"
  • 多轮对话维护:在对话系统中,Prompt 可能隐式包含历史对话的压缩摘要。

典型场景

  • 复杂任务分解(如分步骤生成报告)。
  • 个性化交互(如设定模型角色为"幽默的助手")。

三者的协同关系

  1. 用户输入 Prompt → 模型解析后,发现需要调用 Tool (如搜索)→ Tool 返回结果作为 Resource → 模型整合资源生成最终回复。
  2. Prompt 中嵌入 Resource 引用 → 模型通过检索工具加载相关资源 → 结合资源内容生成答案。

示例流程

arduino 复制代码
用户 Prompt: "特斯拉2023年Q3的营收是多少?"  
→ 模型调用 "财经数据查询 Tool"  
→ Tool 访问财务报表 Resource(如数据库)  
→ 返回数据后,模型生成回答: "特斯拉2023年Q3营收为234亿美元。"  

总结对比

组件 核心作用 关键特点
Tool 扩展模型能力,执行外部操作 动态性、API 驱动
Resource 提供数据支持,补充知识 静态/动态存储、按需检索
Prompt 引导模型行为,传递任务意图 结构化设计、可嵌套工具/资源

通过 MCP 对这三者的统一管理,模型能够更高效、精准地处理复杂任务,同时降低冗余计算和上下文噪声。

明白这些方法各自作用后,就更方便我们后续接入相关功能。

二、挂载MCP服务

cmd.go文件中可以看到自动挂载服务的方法调用如下图:

然后在app目录下添加mcp模块,创建hook挂载mcp资源相关服务:

添加后后续的toolresourceprompt就可以实现自动注册和绑定到服务中来。

添加自动注册的相关方法:

1. 添加tools工具函数

mcp目录下创建tools目录,该目录用来存放mcp服务所需的工具函数,例如添加一个hello_world工具:

创建一个tool.go用于存放实现自动注册的结构体:

添加hello_world.go添加工具方法:

此时,运行mcp客户端,连接上服务后,可以看到tool工具列表中就有hello_world工具:

输入一个名字"张三"运行,可以看到mcp服务响应了:"Hello, 张三!"。

这时如果我们要再建一个工具就会变得非常方便,只需要再添加一个文件,或在当前文件继续添加方法都是可以的,为了直观展示,我们就再添加一个文件的方式来添加工具:

比如再添加一个工具用于获取指定目录下有哪些文件,添加完后立马就能在mcp客户端使用,而不需要修改其他任何代码。

然后我们通过vscode使用roo插件工具调用大模型来使用mcp提供的工具:

配置好mcp服务后可以看到对应工具

到此,添加工具的集成就完成。

2. 添加promptresource是相同的操作,只需要在对应目录添加对应方法即可

相关推荐
nbsaas-boot1 小时前
如何进行 Vibe Coding:从“灵感驱动”到“可交付工程”的方法论
java·ai编程
LinkZ-Dev3 小时前
521-解决谷歌 Antigravity 软件登录相关问题
ai编程·gemini·antigravity
玉梅小洋13 小时前
Claude Code 从入门到精通(七):Sub Agent 与 Skill 终极PK
人工智能·ai·大模型·ai编程·claude·ai工具
-嘟囔着拯救世界-13 小时前
【保姆级教程】Win11 下从零部署 Claude Code:本地环境配置 + VSCode 可视化界面全流程指南
人工智能·vscode·ai·编辑器·html5·ai编程·claude code
小小管写大大码13 小时前
如何让vscode变得更智能?vscode接入claude实现自动编程
运维·ide·vscode·自动化·编辑器·ai编程·腾讯云ai代码助手
啊汉13 小时前
古文观芷App搜索方案深度解析:打造极致性能的古文搜索引擎
go·软件随想
Anarkh_Lee16 小时前
【小白也能实现智能问数智能体】使用开源的universal-db-mcp在coze中实现问数 AskDB智能体
数据库·人工智能·ai·开源·ai编程
森之鸟18 小时前
2026年AI编程工具全景图:GitHub Copilot vs Cursor vs Codeium,我如何选择?
github·copilot·ai编程
冬奇Lab18 小时前
深入理解 Claude Code:架构、上下文与工具系统
人工智能·ai编程
测试_AI_一辰19 小时前
Agent & RAG 测试工程05:把 RAG 的检索过程跑清楚:chunk 是什么、怎么来的、怎么被命中的
开发语言·人工智能·功能测试·自动化·ai编程