使用说明
项目简介
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 接口和功能。
信息
分类
开发者工具