MCP ChatGPT 应用 - 多服务器套件
一个使用Express结合模型上下文协议(MCP)SDK的全面TypeScript ChatGPT应用套件。此项目包括: 四台强大的MCP服务器 针对不同的使用场景。
🎯 可用的MCP服务器
- 📊 股市MCP(注:MCP在此处可能代表某种特定的股市指标、策略或概念,但具体含义需根据上下文确定,中文中可直接保留原英文缩写或根据具体含义进行翻译,此处保留原样) (端口3000) - 来自Alpha Vantage的实时市场动态领先股票
- 💱 货币转换器 MCP (端口 3001) - 转换 160+ 种世界货币
- 🌍 世界时间MCP (端口 3002) - 跨全球时区转换时间
- 📏 单位转换器 MCP (端口3003)- 转换单位,涵盖10个类别
特点/特性
- 🚀 表情符号“🚀”通常被用来表示火箭、快速前进或激动人心的时刻,可以翻译为“🚀(火箭/飞速前进/激动人心)”。在实际应用中,这个表情符号常被用来表达兴奋、期待或强调某事物的快速发展。 MCP服务器集成使用 @modelcontextprotocol/sdk 来暴露工具
- 🎨 表示“艺术”或“绘画”的符号。 漂亮的用户界面使用DaisyUI、Tailwind CSS和Anime.js动画实现的深色模式
- 📱 代表手机的符号 响应式设计在桌面和移动设备上均可使用
- 🔄 旋转或循环的符号,常用来表示重复、循环、旋转等动作或状态。 实时数据来自各种API的实时数据
- 🌐 表示“互联网”或“世界万维网”的符号。 Ngrok 已就绪通过ngrok轻松暴露服务以供外部访问
- ⚡(闪电符号,常用于表示速度、活力或电力) 多服务器支持同时运行所有服务器或单独运行
先决条件
- Node.js(v16或更高版本)
- Alpha Vantage API密钥(免费获取地址:https://www.alphavantage.co/support/#api-key)- 仅适用于股票市场服务器
- ngrok(用于外部访问)- 可选
设置
- 安装依赖项:
npm install- 设置环境变量:
# Copy the example file
cp .env.example .env
# Edit .env and add your Alpha Vantage API key
# Or set it as a system environment variable
export ALPHA_VANTAGE_API_KEY=your_api_key_here- 构建TypeScript项目:
npm run build运行服务器
快速入门 - 所有服务器
同时启动所有四个服务器:
./start-all-servers.sh这开始了:
- 本地主机(http://localhost:3000)上的股市MCP(可能是指某种市场撮合系统或交易平台)
- 在 http://localhost:3001 上的货币转换器 MCP
- 在 http://localhost:3002 上的 World Time MCP
- 在 http://localhost:3003 上的单位转换器 MCP
停止所有服务器:
./stop-all-servers.sh单个服务器
使用各自的专用脚本单独启动服务器:
./start.sh # Stock Market (Port 3000)
./start-currency.sh # Currency Converter (Port 3001)
./start-time.sh # World Time (Port 3002)
./start-units.sh # Units Converter (Port 3003)使用 NPM 脚本
开发模式(带自动重载):
npm run dev # Stock Market
npm run dev-currency # Currency Converter
npm run dev-time # World Time
npm run dev-units # Units Converter生产模式:
npm run start # Stock Market
npm run start-currency # Currency Converter
npm run start-time # World Time
npm run start-units # Units Converter使用ngrok进行暴露(或公开访问)
为了让您的服务器能够对外访问(例如,用于集成ChatGPT):
ngrok http 3000 # Stock Market
ngrok http 3001 # Currency Converter
ngrok http 3002 # World Time
ngrok http 3003 # Units Converterngrok 会为您提供一个公共 URL,您可以通过该 URL 访问您的服务器。
建筑
1. 股市MCP服务器(src/server.ts)
MCP 工具:
topMovers- 获取涨幅最大、跌幅最大以及交易最活跃的股票
终点(或:研究终点):
GET /- 提供网页界面服务POST /mcp- MCP JSON-RPC 端点GET /mcp/tools/list- 列出可用工具POST /mcp/tools/call- 调用MCP工具
前端: public/index.html
2. 货币转换器MCP服务器(src/currency-server.ts)
MCP 工具:
convertCurrency- 货币转换getSupportedCurrencies- 列出所有支持的货币getExchangeRates- 获取基准货币的所有汇率
特点:
- 160多种世界货币
- 实时汇率
- 免费API(无需密钥)
前端: public-currency/index.html
3. 世界时间MCP服务器(src/time-server.ts)
MCP 工具:
convertTime- 在时区之间转换时间getCurrentTime- 获取某个时区的当前时间getSupportedTimezones- 列出所有支持的时区getWorldClocks- 获取多个时区的时间
特点:
- 30多个主要世界时区
- DST检测
- UTC偏移量计算
前端: public-time/index.html
4. 单位转换器MCP服务器(src/units-server.ts)
MCP 工具:
convertUnits- 在不同单位之间进行转换getSupportedUnits- 按类别列出单位getCategories- 列出所有单位类别
特点:
- 10个类别(长度、重量、温度、体积、面积、速度、压力、能量、功率、数据)
- 70多个不同单位
- 自动类别检测
前端: public-units/index.html
共同特征
所有服务器均包括:
- Express 服务器服务于前端并处理API请求
- MCP协议完整的MCP JSON-RPC 2.0实现
- 已启用CORS(跨源资源共享)准备好处理跨域请求
- 漂亮的用户界面使用DaisyUI、Tailwind CSS和Anime.js实现的暗黑模式
- ChatGPT 准备就绪兼容ChatGPT操作
API使用示例
股市MCP(市场操纵者/参与者,具体含义需根据上下文确定,此处为一般性翻译)
curl -X POST http://localhost:3000/mcp/tools/call \
-H "Content-Type: application/json" \
-d '{"name":"topMovers","arguments":{"limit":5}}'货币转换器 MCP
curl -X POST http://localhost:3001/mcp/tools/call \
-H "Content-Type: application/json" \
-d '{"name":"convertCurrency","arguments":{"from":"USD","to":"EUR","amount":100}}'世界时间MCP
curl -X POST http://localhost:3002/mcp/tools/call \
-H "Content-Type: application/json" \
-d '{"name":"getCurrentTime","arguments":{"timezone":"America/New_York"}}'单位转换器 MCP
curl -X POST http://localhost:3003/mcp/tools/call \
-H "Content-Type: application/json" \
-d '{"name":"convertUnits","arguments":{"from":"meter","to":"foot","value":100}}'MCP JSON-RPC 格式
所有服务器均通过POST支持MCP协议以 /mcp:
curl -X POST http://localhost:3001/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "convertCurrency",
"arguments": {"from": "USD", "to": "EUR", "amount": 100}
}
}'所用技术
- 后端:
- TypeScript - Express.js - @modelcontextprotocol/sdk(注:此句为一个特定上下文或项目中的标识或命名,直接翻译可能无实际意义,但按字面可译为“@模型上下文协议/软件开发工具包”,具体含义需结合上下文理解) - Axios(注:Axios是一个用于浏览器和Node.js的基于promise的HTTP客户端) - Alpha Vantage API
- 前端:
- HTML5 - Tailwind CSS - DaisyUI - Anime.js(直接翻译为“动漫.js”或保持原名,因其是一个JavaScript动画库,通常不翻译其名称) - 纯JavaScript
📚 文档
关于每台服务器的详细信息:
- \
MCP_SERVERS_GUIDE.md\翻译为中文是:“MCP服务器指南.md” - 全服务器综合指南 - QUICKSTART.md 翻译为中文是:“快速入门指南.md”(其中,“.md”通常表示这是Markdown格式的文件) - 快速入门指南
- CHATGPT_INTEGRATION.md 翻译为中文是:CHATGPT集成指南/文档(注:.md通常表示Markdown格式的文件,但在此处为保持简洁,未直接翻译文件扩展名) - ChatGPT集成指南
故障排除
API密钥问题
如果你看到关于……的警告 ALPHA_VANTAGE_API_KEY not set:
- 这仅影响股票市场服务器
- 确保你已经设置了环境变量
- 检查你的
.env文件位于项目根目录 - 请在https://www.alphavantage.co/验证API密钥是否有效
端口已被占用
如果端口已被使用,您可以:
- 停止使用该端口的进程:
lsof -i :3000然后 `kill
`
- 设置不同的端口:
PORT=3005 npm run dev
构建错误
如果你遇到构建错误:
rm -rf dist node_modules
npm install
npm run buildCORS问题
所有服务器均已配置为启用CORS(跨域资源共享)。如果您仍然遇到问题,请检查浏览器控制台中的具体CORS错误。
服务器无法启动
确保所有依赖项都已安装且TypeScript已构建完成:
npm install
npm run build
./start-all-servers.sh🤝 贡献(或“参与贡献”)
请随时提交问题,克隆仓库,并针对任何改进创建拉取请求。
📄 许可证
ISC(注:ISC是一个缩写,具体含义需根据上下文确定,此处仅为通用翻译)
