使用说明

项目简介

mcp-kit 是一个 Model Context Protocol (MCP) 工具包,用于构建 MCP 服务器和客户端应用。它旨在帮助开发者快速搭建能够与大型语言模型 (LLM) 交互的后端服务,扩展 LLM 的能力,使其能够访问外部工具和服务。该工具包提供了一套标准的接口和架构,用于管理资源、注册和执行工具、以及定义和渲染 Prompt 模板,从而实现可定制化和可扩展的 LLM 应用。

核心组件:

  • MCP 服务器 (MCP Server): 负责托管资源、管理工具和 Prompt 模板,并通过 SSE (Server-Sent Events) 协议与 MCP 客户端通信,响应客户端的请求。
  • API 服务器 (API Server / MCP Client): 作为 MCP 客户端,通过 HTTP API 提供 LLM 接口,接收用户请求,并将工具调用等操作委托给 MCP 服务器处理。
  • 工具 (Tools): 内置了多种工具,例如文件系统操作、Git 操作、GitHub 操作、PostgreSQL 数据库操作等,可以扩展 LLM 的能力。
  • Prompt 模板 (Prompts): 预定义了多种 Prompt 模板,支持开发者根据需求定制 LLM 的交互方式。
  • 交互界面 (Frontend): 提供了一个基于 Web 的交互式聊天界面,方便用户与 AI 模型进行对话和测试。

主要功能点

  • 资源管理: 虽然文档没有明确提及资源管理,但 MCP 服务器的定义包含资源管理,作为 MCP 服务器实现,理论上支持资源管理功能。
  • 工具注册与执行: 内置多种实用工具,并支持自定义工具扩展,允许 LLM 通过 MCP 服务器调用外部功能。
  • Prompt 模板定义与渲染: 预置 Prompt 模板,并支持根据用户输入动态渲染 Prompt,实现灵活的 LLM 交互控制。
  • 多种 LLM 提供商支持: 兼容 Anthropic, OpenAI, Amazon Bedrock, Cohere, Meta Llama, Mistral, DeepSeek 等多种 LLM 模型,方便开发者选择合适的模型。
  • 会话管理: API 服务器具备简单的会话管理功能,可以维护聊天历史。
  • 可扩展架构: 采用客户端-服务器架构,易于扩展和维护。
  • 监控与日志: 集成了 Prometheus 指标监控和日志功能,方便运维和问题排查。
  • 鉴权: API 服务器支持鉴权功能,保障 API 安全。

安装步骤

前提条件:

  • Go 语言环境
  • Docker (可选,用于 Docker 部署)
  • Docker Compose (可选,用于 Docker Compose 部署)

安装方法:

1. 使用源码编译 (Source Code):

git clone https://github.com/shaharia-lab/mcp-kit.git
cd mcp-kit
make build

2. 使用 Docker 镜像 (Docker):

docker pull ghcr.io/shaharia-lab/mcp-kit:$VERSION # 将 $VERSION 替换为实际版本号,例如 latest

3. 使用 Docker Compose (Docker Compose):

  • 安装 Docker Compose 并确保 Docker 守护进程正在运行。
  • 项目根目录下应该有 'docker-compose.yml' 文件 (仓库中未直接提供,可能需要手动创建或参考文档)。
  • 执行命令:
    bash      docker-compose up -d      

服务器配置

MCP 服务器配置 (server):

MCP 服务器主要通过环境变量进行配置。以下是一些关键配置参数及其说明,您需要根据实际情况设置 '.env.local' 文件,并导出环境变量。

{
  "server name": "mcp-server",
  "command": "./mcp",
  "args": ["server"],
  "env": {
    "MCP_SERVER_PORT": "8080", // MCP 服务器端口,默认为 8080
    "GITHUB_TOKEN": "", // GitHub Token,用于 GitHub 工具,如需使用 GitHub 工具,请设置此环境变量
    "AUTH_DOMAIN": "", // 鉴权域名,如果启用鉴权,请设置此环境变量
    "AUTH_CLIENT_ID": "", // 鉴权客户端 ID,如果启用鉴权,请设置此环境变量
    "AUTH_CLIENT_SECRET": "", // 鉴权客户端密钥,如果启用鉴权,请设置此环境变量
    "AUTH_CALLBACK_URL": "", // 鉴权回调 URL,如果启用鉴权,请设置此环境变量
    "AUTH_TOKEN_TTL": "24h", // 鉴权 Token 有效期,默认为 24 小时
    "AUTH_AUDIENCE": "" // 鉴权 Audience,如果启用鉴权,请设置此环境变量
  },
  "description": "MCP Server Configuration"
}

API 服务器配置 (api):

API 服务器作为 MCP 客户端,也通过环境变量配置。以下是一些关键配置参数及其说明:

{
  "server name": "api-server",
  "command": "./mcp",
  "args": ["api"],
  "env": {
    "API_SERVER_PORT": "8081", // API 服务器端口,默认为 8081
    "MCP_SERVER_URL": "http://localhost:8080/events", // MCP 服务器 SSE 事件流 URL,默认为 http://localhost:8080/events,如果 MCP 服务器地址或端口发生变化,请修改此配置
    "ANTHROPIC_API_KEY": "", // Anthropic API Key,用于 Anthropic 模型,如需使用 Anthropic 模型,请设置此环境变量
    "AUTH_DOMAIN": "", // 鉴权域名,如果启用鉴权,请设置此环境变量
    "AUTH_CLIENT_ID": "", // 鉴权客户端 ID,如果启用鉴权,请设置此环境变量
    "AUTH_CLIENT_SECRET": "", // 鉴权客户端密钥,如果启用鉴权,请设置此环境变量
    "AUTH_CALLBACK_URL": "", // 鉴权回调 URL,如果启用鉴权,请设置此环境变量
    "AUTH_TOKEN_TTL": "24h", // 鉴权 Token 有效期,默认为 24 小时
    "AUTH_AUDIENCE": "" // 鉴权 Audience,如果启用鉴权,请设置此环境变量
  },
  "description": "API Server Configuration"
}

注意:

  • 请根据您的实际需求配置环境变量。
  • '.env.example' 文件提供了示例配置,您可以复制并修改为 '.env.local' 文件。
  • 使用 Docker 或 Docker Compose 部署时,环境变量可以通过 Docker 命令或 'docker-compose.yml' 文件进行设置。

基本使用方法

1. 启动 MCP 服务器:

  • 源码编译: 在项目根目录下执行 './mcp server' 命令。
  • Docker: 参考 README 中的 Docker 运行命令启动 MCP 服务器容器。
  • Docker Compose: 执行 'docker-compose up -d' 命令启动所有服务。

2. 启动 API 服务器:

  • 源码编译: 在项目根目录下执行 './mcp api' 命令。
  • Docker: 参考 README 中的 Docker 运行命令启动 API 服务器容器。
  • Docker Compose: 执行 'docker-compose up -d' 命令启动所有服务。

3. 访问 Web UI (Frontend):

  • 如果启动了前端服务 (通常通过 Docker Compose 部署),访问 'http://localhost:3001' 即可打开 Web UI 界面,与 AI 模型进行交互。

4. 通过 API 交互:

  • API 服务器提供 HTTP API 接口,您可以使用 curl, Postman 等工具或者编程语言的 HTTP 库与 API 服务器进行交互。
  • OpenAPI schema 定义文件 'openapi.yaml' 提供了 API 接口的详细信息。
  • 常用的 API 接口包括: * 'POST /ask': 同步请求 LLM 回答问题。 * 'POST /ask-stream': 流式请求 LLM 回答问题。 * 'GET /chats': 获取聊天历史列表 (需要鉴权)。 * 'GET /chats/{chatId}': 获取指定聊天 ID 的聊天记录 (需要鉴权)。 * 'GET /api/tools': 获取可用工具列表。 * 'GET /llm-providers': 获取支持的 LLM 提供商和模型列表。

示例 API 请求 (使用 curl):

curl -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "question": "What is the weather in London?",
    "selectedTools": ["get_weather"],
    "llmProvider": {
      "provider": "Anthropic",
      "modelId": "claude-3-sonnet-20240229-v1:0"
    }
  }' \
  http://localhost:8081/ask

请根据 'openapi.yaml' 文件和实际需求,探索更多 API 接口和功能。

信息

分类

开发者工具