返回市场
MCP服务器

MCP服务器

作者:chenshuai21442 星标更新:2025-03-28

项目介绍

技术文档摘要

MCP 服务器项目文档

项目概述

MCP 服务器是一个基于模型上下文协议(MCP)的服务器端和客户端实现,允许大型语言模型(LLMs)通过结构化协议调用外部工具来完成复杂任务。该项目主要由两部分组成:MCP 服务器和使用 TypeScript 实现的客户端。

系统架构

┌───────────────┐     ┌───────────────┐     ┌───────────────┐
│   前端应用    │────▶│  MCP 客户端   │────▶│  MCP 服务端   │
└───────────────┘     └───────────────┘     └───────────────┘
        △                    │                     │
        │                    ▼                     ▼
        │           ┌───────────────┐     ┌───────────────┐
        └───────────│  大语言模型   │     │  外部服务 API │
                    │  (Deepseek)   │     │ (天气、GitHub)│
                    └───────────────┘     └───────────────┘

核心组件

1. MCP 服务器

服务器是工具的提供者,负责注册和执行各种工具。

主要功能:

  • 工具注册:目前实现了天气预报查询和 GitHub 用户信息查询工具
  • 工具执行:接收客户端请求,执行相应的工具,并返回结果
  • 通信:通过标准输入/输出(STDIO)与客户端通信

2. MCP 客户端

客户端连接大语言模型 API 和 MCP 服务器,负责处理用户查询并协调模型和工具调用。

主要功能:

  • 连接到 MCP 服务器并获取可用工具列表
  • 与大语言模型 API 通信(默认使用 Deepseek)
  • 分析模型输出中的工具调用请求
  • 协调工具调用过程并总结结果
  • 提供命令行交互界面
  • 基于 Express 提供 Web API

3. Web API

客户端提供一个 HTTP 接口供前端应用程序调用,支持流式输出和过程可视化。

主要端点:

  • /sse:处理前端查询请求并返回包含思考过程和结果的流式响应

白盒过程可视化

客户端已实现白盒过程显示,允许用户查看:

  1. 意图识别过程
  2. 工具选择过程
  3. 工具调用参数和结果
  4. 最终答案生成过程

技术栈

  • 后端:Node.js、TypeScript
  • 框架:Express
  • 大型语言模型 (LLM):Deepseek(通过兼容 OpenAI 的 API)
  • 通信协议:模型上下文协议
  • SDK:@modelcontextprotocol/sdk

使用说明

  1. 启动服务器:
node dist/src/index.js
  1. 启动客户端并连接到服务器:
node dist/mcp-client-typescript/src/index.js /path/to/server/script.js
  1. 访问 Web API:
POST http://localhost:3000/sse
Content-Type: application/json

{
  "query": "北京今天的天气怎么样?"
}

系统要求

需要在 .env 文件中设置以下环境变量:

  • LLM_API_KEY:Deepseek API 密钥
  • GAODE_KEY:高德地图 API 密钥(用于天气查询)

工作流程

  1. 用户向客户端发送查询
  2. 客户端将查询发送给大语言模型
  3. 分析并查询大语言模型,决定是否调用工具
  4. 调用工具时,客户端通过 MCP 协议向服务器发送请求
  5. 服务器执行工具并返回结果
  6. 客户端再次将工具结果发送给大语言模型以生成最终答案
  7. 将答案返回给用户

结论

MCP 服务器项目提供了一个完整的大型语言模型工具调用示例,展示了如何通过结构化协议使模型访问外部工具和服务,从而扩展模型的能力边界。通过可视化白盒过程,用户可以更好地理解模型的思考过程和工具调用逻辑。