MCP(模型上下文协议)多项目库
该存储库包含多个相互连接的项目,这些项目共同实现了一个具有web界面和天气信息MCP服务器的模型上下文协议(MCP)客户端-服务器系统。
______________________________________________________________________
项目结构
- mcp客户端打字脚本\
MCP协议的TypeScript客户端实现。
- 通过stdio传输连接到MCP服务器脚本(JavaScript或Python)。 - 使用OpenAI的聊天补全功能和集成的MCP工具来处理查询。 - 提供MCPClient类来管理连接、查询处理和工具调用。 - 可以独立运行,也可以被其他项目用作库。
- mcp网站\
MCP客户端的web客户端和后端接口。
- 后端使用Express和TypeScript构建。 - 为用户提供一个简单的前端界面,用于输入查询和接收响应。 - 连接到MCP客户端(从 mcp-client-typescript)并将用户查询转发给它。 - 提供REST API终结点 /query 用于通过POST请求处理查询。 - 前端包括一个用于查询输入的文本区域,并显示后端的响应。
- 天气2\
提供天气相关工具的MCP服务器实现。
- 使用MCP SDK服务器组件使用TypeScript构建。 - 提供两个主要工具: - get-alerts:从美国国家气象局(NWS)API获取美国各州的天气警报。 - get-forecast:从NWS API获取给定纬度和经度的天气预报。 - 通过stdio传输连接并监听MCP客户端请求。
______________________________________________________________________
它是如何协同工作的
- 这 天气2 该项目作为MCP服务器运行,公开与天气相关的工具。
- 这 mcp客户端打字脚本 该项目充当MCP客户端,连接到MCP服务器(例如weather2),并使用MCP工具增强的OpenAI聊天完成来处理查询。
- 这 mcp网站 该项目提供了一个连接到MCP客户端的web界面和后端,允许用户通过web浏览器发送查询并接收响应。
______________________________________________________________________
设置和使用
先决条件
- Node.js(建议使用v18+)
- npm或纱线
- TypeScript全局安装或通过项目devDependencies安装
运行气象MCP服务器
- 导航到
weather2目录:
cd weather2- 安装依赖项:
npm install- 构建项目:
npm run build- 运行服务器(这将在stdio上启动MCP服务器):
node build/index.js运行MCP客户端
- 导航到
mcp-client-typescript目录:
cd ../mcp-client-typescript- 安装依赖项:
npm install- 构建项目:
npm run build- 运行客户端,提供MCP服务器脚本的路径(例如weather2 build-index.js):
npm start运行MCP Web界面
- 导航到
mcp-web目录:
cd ../mcp-web- 安装依赖项:
npm install- 启动web服务器:
npm start- 打开浏览器并转到:
http://localhost:3000- 使用web界面键入查询并从连接到MCP服务器的MCP客户端接收响应。
______________________________________________________________________
环境变量
OPENAI_API_KEY(必填)mcp-client-typescript):用于聊天完成的OpenAI API密钥。MCP_SERVER_SCRIPT(可选mcp-web):要连接的MCP服务器脚本的路径(默认为占位符路径)。
______________________________________________________________________
使用的技术
- TypeScript
- Node.js
- Express(用于web后端)
- OpenAI SDK
- 模型上下文协议SDK
- 美国国家气象局API(适用于weather2服务器)
- Zod(用于weather2中的输入验证)
______________________________________________________________________
许可证
该项目根据ISC许可证获得许可。
______________________________________________________________________
联系
如有疑问或需要支持,请在此存储库中打开问题。
