关于 MCP Lab
MCP Lab 是一个用 TypeScript 和 MCP SDK 探索协议的个人实验项目,包含基础服务端、SQLite 自然语言转 SQL 示例和客户端。适合学习 MCP 工作方式及测试 MCP 服务与 OpenAI API 的连接。
主要功能
- 01基础 MCP 服务端示例
- 02SQLite 自然语言转 SQL
- 03MCP 客户端连接 OpenAI API
- 04使用 MCP Inspector 调试服务端
- 05支持 Claude Desktop 配置
适用场景
- 01学习 MCP SDK 与协议基础
- 02通过自然语言查询 SQLite 数据
- 03将 MCP 工具接入 OpenAI Responses API
MCP 相关
项目包含基础 MCP 服务端和面向 SQLite Text-to-SQL 的服务端,提供工具和资源供 LLM 使用。另含 MCP 客户端,将 MCP 工具转换为 OpenAI Responses API 可用的工具定义。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP Lab
此仓库是一个个人实验室,我一直在这里使用 TypeScript 摸索 Model Context Protocol SDK(@modelcontextprotocol/sdk)。主要目的是深入了解协议的工作原理、快速测试,并随着我逐渐熟悉这款工具,搭建更贴近实际的用例。
项目结构
.
├── 📂 mcp-server-dummies/ # Primeros pasos usando el SDK de MCP.
├── 📂 mcp-lab-text2sql/ # Caso de uso avanzado: Text-to-SQL sobre una base de datos SQLite.
├── 📂 mcp-client/ # Integración con OpenAI API para su integración con un Server MCP.
🧪 mcp-server-dummies
此项目包含一个基础实现,用于熟悉 MCP SDK。它旨在作为了解该协议的入门项目,适用于简单测试并帮助理解其工作原理(没有复杂功能)。
安装
说明
此项目需要 Node.js >= v20。
cd mcp-server-dummies
npm i
运行
npm run build # Compila el proyecto con tsc
npm run dev # Ejecuta el servidor con ts-node
作为调试工具,我们可以使用以下命令启动 MCP Inspector。此工具提供可视化界面,让我们能够更轻松、更直观地测试和调试 MCP 服务。
npm run test
该命令会在 http://localhost:6274 上启动与我们的 MCP 服务关联的 Inspector。
💬 mcp-lab-text2sql
第二个项目实现了一个 Text-to-SQL 系统:可以使用自然语言与 SQLite 数据库聊天。此 MCP 服务会公开必要的工具和资源,使我们的 LLM 能够与数据交互。
安装
说明
此项目需要 Node.js >= v20。
cd mcp-server-dummies
npm i
运行
npm run build # Compila el proyecto con tsc
npm run dev # Ejecuta el servidor con ts-node
作为调试工具,我们可以使用以下命令启动 MCP Inspector。此工具提供可视化界面,让我们能够更轻松、更直观地测试和调试 MCP 服务。
npm run test
该命令会在 http://localhost:6274 上启动与我们的 MCP 服务关联的 Inspector。
Claude Desktop
我们可以通过 Claude Desktop 测试 MCP 服务。要关联 MCP 服务,我们需要按如下方式修改 claude_desktop_config.json 文件:
{
"mcpServers": {
"mcp-lab-dummies": {
"command": "node",
"args": [
"C://PATH//mcp-lab//mcp-server-dummies//dist//index.js"
]
},
"mcp-lab-text2sql": {
"command": "node",
"args": [
"C://PATH//mcp-lab//mcp-server-text2sql//dist//index.js"
]
}
}
}
重要
请记得先在每个项目中运行
npm run build。
Windows 中的 claude_desktop_config.json 位于哪里?➡️ PATH//AppData//Roaming//Claude。
如需了解此配置文件的语法和位置,请参阅官方文档。
与 OpenAI 的兼容性
将 MCP 服务与 OpenAI 配合使用,在处理工具时效果很好。但如果我们想要使用资源,事情就会变得复杂得多。
说明
请注意:可以通过 OpenAI Agents SDK 原生使用 MCP 服务,不过目前该 SDK 仅提供 Python 版本。我这边使用的是 OpenAI TypeScript SDK 和 Responses API 进行测试。
好吧……我有一个 MCP 服务,其中公开了多个可在 Claude Desktop 中使用的工具。到目前为止一切顺利。但现在我想知道:能否在使用 OpenAI API 的 Agent 中使用同一个 MCP 服务?
首先,将 GPT 模型连接到我们的 MCP 服务并不兼容。@modelcontextprotocol 和 OpenAI 对工具的定义不同。这是否意味着无法使用它?也不尽然。我们来构建一个 MCP 客户端来实现这种集成。
重要
此规范兼容 OpenAI TypeScript SDK
4.95.0版和 @modelcontextprotocol/sdk1.9.0版。
我们的 MCP 客户端中 getTools() 函数的返回类型:
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
const mcpTool: Tool = {
name: "getUser",
description: "Get a user by ID",
inputSchema: z.object({
type: z.literal("object"),
properties: z.object({
id: z.string()
})
})
}
OpenAI Responses API 使用的工具类型:
import OpenAI from "openai";
// El campo "parameters" es un JSON Schema
const openaiTool: OpenAI.Responses.Tool {
"type": "function",
"name": "getUser",
"description": "Get a user by ID",
"parameters": {
"type": "object",
"properties": {
"id": { "type": "string" }
},
"required": ["id"],
"additionalProperties": false
},
"strict": true
}
限制
在 MCP 服务中配置工具时,使用 Zod 为参数指定类型时,需要注意一些与 OpenAI 不兼容的选项:
所有参数都必须是必填项:
Invalid schema for function 'update-user-goal': In context=(), 'required' is required to be supplied and to be an array including every key in properties.
定义 int() 字段时,不能使用 max() 或 min():
Invalid schema for function 'update-user-goal': In context=('properties', 'age', 'anyOf', '0'), 'minimum|maximun' is not permitted.
不能使用 default() 设置默认值:
BadRequestError: 400 Invalid schema for function 'update-user-goal': In context=('properties', 'hasPaid', 'anyOf', '0'), 'default' is not permitted.
演示 测试
说明
项目需要 Node.js >= v20 版本。
运行使用 OpenAI 的 LLM Agent 演示。
-
在 mcp-server-dummies 目录中运行
npm run build,因为我们将使用该 MCP 服务。 -
在 mcp-client 目录中运行
npm i安装依赖。 -
在 mcp-client 目录中使用命令
npm run dev运行演示。
-
别忘了在 mcp-client 目录中创建
.env文件,并填入有效的 OpenAI API 密钥:OPENAI_API_KEY=<openai_key>
📄 许可证
MIT © rperezll
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。