项目简介
这是一个用于在Go语言中实现 Model Context Protocol (MCP) 服务器的开源框架。MCP定义了一种标准化的方式,使应用程序能够通过JSON-RPC与大型语言模型 (LLM) 客户端进行通信,提供上下文信息和调用外部功能。
主要功能点
- 资源管理: 托管和管理应用程序的各种数据资源,并提供标准的数据访问接口(如列出、读取资源)。
- 工具调用: 注册和执行外部工具或函数,使LLM能够调用应用程序提供的能力。
- Prompt模板与生成: 定义和渲染可定制的Prompt模板,支持根据不同场景生成LLM交互所需的Prompt。
- 能力声明: 服务器可以声明其支持的功能(例如是否支持资源、工具、Prompt等)。
- 多种传输协议支持: 支持通过不同的传输协议(如HTTP/SSE, Stdio)进行通信。
- 日志与进度报告: 支持服务器向客户端发送日志消息和任务进度通知。
- 请求取消: 支持取消进行中的请求。
- 身份认证与授权: 提供中间件支持,可集成OAuth2等认证授权机制保护资源和工具。
安装步骤
要将此框架集成到您的Go项目中以构建MCP服务器,请使用以下命令安装库:
go get github.com/viant/mcp
服务器配置 (客户端视角)
MCP客户端需要知道如何启动和/或连接到MCP服务器。常见的连接方式有两种:通过标准I/O (Stdio) 或通过网络(如HTTP/SSE)。
对于Stdio连接(客户端启动服务器进程并与其Stdio通信),客户端通常需要以下JSON格式的配置来指定如何启动服务器:
{ "server": { "name": "您的MCP服务器名称", "command": "/path/to/your/mcp-server-executable", "args": [ "--config", "/path/to/server/config.json" // 根据您的具体服务器实现,这里可以添加启动参数, // 例如指定监听地址、配置文件的路径等。 // 本框架提供了构建服务器的库,实际的启动参数取决于您使用此库 // 编写的具体服务器应用。 ] } }
- 'name': MCP服务器的显示名称,用于标识服务器。
- 'command': MCP服务器可执行文件的完整路径。客户端将执行此命令来启动服务器进程。
- 'args': 启动MCP服务器进程时需要传递的命令行参数列表。
对于网络连接(如HTTP/SSE),客户端通常只需要配置服务器的网络地址(URL):
{ "server": { "name": "您的MCP服务器名称", "url": "http://localhost:4981/sse" // 或者其他网络地址和路径,取决于服务器的配置。 // 对于HTTP/SSE,通常需要指定 /sse 路径。 } }
基本使用方法 (客户端与服务器交互)
MCP客户端连接到服务器后,通常会遵循以下基本交互流程:
- 初始化: 客户端发送 'initialize' 请求,声明其能力和信息。服务器响应其能力、信息和协议版本。
- 能力发现: 客户端根据服务器声明的能力,可能发送 'resources/list'、'tools/list'、'prompts/list' 等请求,发现服务器提供的资源、工具和Prompt。
- 获取信息: 客户端发送 'resources/read' 请求读取特定资源内容,或发送 'prompts/get' 获取渲染后的Prompt内容。
- 调用功能: 客户端发送 'tools/call' 请求执行服务器注册的工具,并获取工具的执行结果。
- 订阅更新: 如果服务器支持,客户端可以发送 'resources/subscribe' 请求订阅资源变化通知。
- 采样: 如果服务器支持,它可以向客户端发送 'sampling/createMessage' 通知,请求客户端通过其集成的LLM进行文本采样。
服务器端使用此框架实现相应的Handler逻辑来响应这些客户端请求。
信息
分类
开发者工具