
parquet mcp server
一个强大的 MCP (模型控制协议) 服务器,提供用于操作和分析 Parquet 文件的工具。该服务器旨在与 Claude Desktop 配合使用,并提供四个主要功能:
README
parquet_mcp_server
一个强大的 MCP (模型控制协议) 服务器,提供用于操作和分析 Parquet 文件的工具。该服务器旨在与 Claude Desktop 配合使用,并提供五个主要功能:
- 文本嵌入生成: 使用 Ollama 模型将 Parquet 文件中的文本列转换为向量嵌入
- Parquet 文件分析: 提取有关 Parquet 文件的详细信息,包括模式、行数和文件大小
- DuckDB 集成: 将 Parquet 文件转换为 DuckDB 数据库,以实现高效的查询和分析
- PostgreSQL 集成: 将 Parquet 文件转换为 PostgreSQL 表,并支持 pgvector 进行向量相似性搜索
- Markdown 处理: 将 markdown 文件转换为带有元数据的分块文本,保留文档结构和链接
此服务器特别适用于:
- 处理大型 Parquet 数据集的数据科学家
- 需要文本数据向量嵌入的应用程序
- 需要分析或转换 Parquet 文件的项目
- 受益于 DuckDB 快速查询功能的工作流程
- 需要使用 PostgreSQL 和 pgvector 进行向量相似性搜索的应用程序
安装
通过 Smithery 安装
要通过 Smithery 为 Claude Desktop 自动安装 Parquet MCP Server:
npx -y @smithery/cli install @DeepSpringAI/parquet_mcp_server --client claude
克隆此存储库
git clone ...
cd parquet_mcp_server
创建并激活虚拟环境
uv venv
.venv\Scripts\activate # 在 Windows 上
source .venv/bin/activate # 在 macOS/Linux 上
安装包
uv pip install -e .
环境变量
创建一个包含以下变量的 .env
文件:
EMBEDDING_URL= # 嵌入服务的 URL
OLLAMA_URL= # Ollama 服务器的 URL
EMBEDDING_MODEL=nomic-embed-text # 用于生成嵌入的模型
# PostgreSQL 配置
POSTGRES_DB=your_database_name
POSTGRES_USER=your_username
POSTGRES_PASSWORD=your_password
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
与 Claude Desktop 一起使用
将其添加到您的 Claude Desktop 配置文件 (claude_desktop_config.json
):
{
"mcpServers": {
"parquet-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/home/${USER}/workspace/parquet_mcp_server/src/parquet_mcp_server",
"run",
"main.py"
]
}
}
}
可用工具
该服务器提供五个主要工具:
-
嵌入 Parquet: 将嵌入添加到 Parquet 文件中的特定列
- 必需参数:
input_path
: 输入 Parquet 文件的路径output_path
: 保存输出的路径column_name
: 包含要嵌入的文本的列embedding_column
: 新嵌入列的名称batch_size
: 每个批次中要处理的文本数量(为了更好的性能)
- 必需参数:
-
Parquet 信息: 获取有关 Parquet 文件的详细信息
- 必需参数:
file_path
: 要分析的 Parquet 文件的路径
- 必需参数:
-
转换为 DuckDB: 将 Parquet 文件转换为 DuckDB 数据库
- 必需参数:
parquet_path
: 输入 Parquet 文件的路径
- 可选参数:
output_dir
: 保存 DuckDB 数据库的目录(默认为与输入文件相同的目录)
- 必需参数:
-
转换为 PostgreSQL: 将 Parquet 文件转换为支持 pgvector 的 PostgreSQL 表
- 必需参数:
parquet_path
: 输入 Parquet 文件的路径table_name
: 要创建或追加到的 PostgreSQL 表的名称
- 必需参数:
-
处理 Markdown: 将 markdown 文件转换为带有元数据的结构化块
- 必需参数:
file_path
: 要处理的 markdown 文件的路径output_path
: 保存输出 parquet 文件的路径
- 特点:
- 保留文档结构和链接
- 提取节标题和元数据
- 针对大型文件进行内存优化
- 可配置的块大小和重叠
- 必需参数:
示例提示
以下是一些您可以与代理一起使用的示例提示:
用于嵌入:
"请嵌入 parquet 文件 '/path/to/input.parquet' 中的 'text' 列,并将输出保存到 '/path/to/output.parquet'。使用 'embeddings' 作为最终列名,批处理大小为 2"
用于 Parquet 信息:
"请给我一些关于 parquet 文件 '/path/to/input.parquet' 的信息"
用于 DuckDB 转换:
"请将 parquet 文件 '/path/to/input.parquet' 转换为 DuckDB 格式,并将其保存在 '/path/to/output/directory' 中"
用于 PostgreSQL 转换:
"请将 parquet 文件 '/path/to/input.parquet' 转换为名为 'my_table' 的 PostgreSQL 表"
用于 Markdown 处理:
"请处理 markdown 文件 '/path/to/input.md' 并将块保存到 '/path/to/output.parquet'"
测试 MCP 服务器
该项目在 src/tests
目录中包含一个全面的测试套件。您可以使用以下命令运行所有测试:
python src/tests/run_tests.py
或者运行单个测试:
# 测试嵌入功能
python src/tests/test_embedding.py
# 测试 parquet 信息工具
python src/tests/test_parquet_info.py
# 测试 DuckDB 转换
python src/tests/test_duckdb_conversion.py
# 测试 PostgreSQL 转换
python src/tests/test_postgres_conversion.py
# 测试 Markdown 处理
python src/tests/test_markdown_processing.py
您也可以直接使用客户端测试服务器:
from parquet_mcp_server.client import (
convert_to_duckdb,
embed_parquet,
get_parquet_info,
convert_to_postgres,
process_markdown_file # 新的 markdown 处理函数
)
# 测试 DuckDB 转换
result = convert_to_duckdb(
parquet_path="input.parquet",
output_dir="db_output"
)
# 测试嵌入
result = embed_parquet(
input_path="input.parquet",
output_path="output.parquet",
column_name="text",
embedding_column="embeddings",
batch_size=2
)
# 测试 parquet 信息
result = get_parquet_info("input.parquet")
# 测试 PostgreSQL 转换
result = convert_to_postgres(
parquet_path="input.parquet",
table_name="my_table"
)
# 测试 markdown 处理
result = process_markdown_file(
file_path="input.md",
output_path="output.parquet"
)
故障排除
- 如果您收到 SSL 验证错误,请确保您的
.env
文件中的 SSL 设置正确 - 如果未生成嵌入,请检查:
- Ollama 服务器正在运行且可访问
- 指定的模型在您的 Ollama 服务器上可用
- 文本列存在于您的输入 Parquet 文件中
- 如果 DuckDB 转换失败,请检查:
- 输入 Parquet 文件存在且可读
- 您在输出目录中具有写入权限
- Parquet 文件未损坏
- 如果 PostgreSQL 转换失败,请检查:
- 您的
.env
文件中的 PostgreSQL 连接设置正确 - PostgreSQL 服务器正在运行且可访问
- 您具有创建/修改表的必要权限
- pgvector 扩展已安装在您的数据库中
- 您的
API 响应格式
嵌入以以下格式返回:
{
"object": "list",
"data": [{
"object": "embedding",
"embedding": [0.123, 0.456, ...],
"index": 0
}],
"model": "llama2",
"usage": {
"prompt_tokens": 4,
"total_tokens": 4
}
}
每个嵌入向量都作为 NumPy 数组存储在 Parquet 文件中的指定嵌入列中。
DuckDB 转换工具返回一条成功消息,其中包含已创建的数据库文件的路径;如果转换失败,则返回一条错误消息。
PostgreSQL 转换工具返回一条成功消息,指示是创建了新表还是将数据追加到了现有表。
markdown 分块工具将 markdown 文件处理成块,并将它们保存为具有以下列的 Parquet 文件:
text
: 每个块的文本内容metadata
: 关于块的附加元数据(例如,标题、节信息)
该工具返回一条成功消息,其中包含已创建的 Parquet 文件的路径;如果处理失败,则返回一条错误消息。
推荐服务器

Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。