项目简介
这是一个展示Model Context Protocol (MCP) 服务器和客户端如何协同工作的完整示例。它实现了一个简单的用户管理系统,通过MCP服务器暴露用户资源、用户创建工具以及相关的Prompt模板。客户端则负责与LLM(如Gemini)交互,并根据用户的请求调用MCP服务器提供的服务。
主要功能点
- 资源管理:
- 托管静态用户列表资源 ('users://all')。
- 支持按ID查询用户详情的资源模板 ('users://{userId}/profile')。
- 工具提供:
- 'create-user': 允许LLM调用以创建新用户,支持指定姓名、邮箱、地址、电话。此工具会修改服务器端的用户数据(写入'users.json'文件)。
- 'create-random-user': 利用LLM生成随机的用户数据,然后调用内部逻辑创建用户,展示服务器端通过LLM进行采样(sampling)的能力。
- Prompt模板:
- 'generate-fake-user': 提供一个可参数化的Prompt模板,用于指示LLM根据给定姓名生成详细的虚假用户信息。
- MCP客户端交互: 客户端能够发现并调用服务器提供的所有资源、工具和Prompt,并与外部LLM(如Google Gemini)进行通信以完成复杂的任务。
- 数据持久化: 用户数据存储在本地的JSON文件 ('src/data/users.json') 中,演示了MCP服务器如何管理和修改状态。
安装步骤
- 克隆仓库:
git clone https://github.com/KavinduDr/mcp-server-and-client.git cd mcp-server-and-client - 安装依赖:
npm install - 编译项目:
这将把TypeScript代码编译成JavaScript,生成'build'目录。npm run build - 配置API密钥:
创建一个 '.env' 文件在项目根目录,并添加您的Google Gemini API密钥:
GEMINI_API_KEY=YOUR_GEMINI_API_KEY
服务器配置
MCP客户端需要以下配置信息来连接到此服务器:
{ "name": "test", "version": "1.0.0", "capabilities": { "resources": {}, "tooles": {}, "prompts": {} }, "transport": { "type": "stdio", "command": "node", "args": ["build/server.js"] } }
- 'name': MCP服务器的名称,此处为 "test"。
- 'version': 服务器版本,此处为 "1.0.0"。
- 'capabilities': 服务器声明其支持的功能,包括资源、工具和Prompt。
- 'transport': 传输协议配置。
- 'type': 使用标准输入输出 (Stdio) 进行通信。
- 'command': 启动MCP服务器进程的命令,此处为 'node'。
- 'args': 传递给命令的参数,此处为 'build/server.js',表示运行编译后的服务器文件。
基本使用方法
安装并配置完成后,您可以运行客户端来与MCP服务器交互:
npm start
客户端启动后,您将看到一个交互式菜单,允许您执行以下操作:
- Query (查询): 输入自然语言查询,客户端会尝试使用LLM和服务器提供的工具来回答。
- Tools (工具): 选择并手动调用MCP服务器提供的工具(例如 'create-user' 或 'create-random-user'),并按提示输入参数。
- Resources (资源): 选择并读取MCP服务器提供的资源(例如 'users://all' 或 'users://1/profile'),如果资源是模板,则需要输入相应参数。
- Prompts (提示词): 选择并渲染MCP服务器定义的Prompt模板,客户端会将渲染后的Prompt发送给LLM并显示其响应。
通过这些选项,您可以全面体验MCP服务器提供的各项功能。
信息
分类
AI与计算