mcpField
M
Malloy MCP Server

Malloy MCP Server

本地服务
github.com/namabile数据与分析282 周前更新

关于 Malloy MCP Server

Malloy MCP Server 供数据团队通过 Malloy Publisher 执行 Malloy 查询,并查看项目、软件包和模型元数据。

主要功能

  1. 01执行 Malloy 查询
  2. 02读取项目、软件包和模型元数据
  3. 03提供详细的查询错误上下文
  4. 04类型安全实现

适用场景

  1. 01通过 MCP 客户端运行 Malloy 查询
  2. 02查看 Malloy 模型和软件包元数据

MCP 相关

它向 MCP 客户端提供查询执行工具及 Malloy 元数据资源。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Malloy MCP 服务

用于执行 Malloy 查询和管理 Malloy 资源的 MCP 服务实现。

功能

  • 通过 MCP 执行 Malloy 查询
  • 访问 Malloy 项目、包和模型元数据
  • 提供稳健的错误处理和详细上下文
  • 全面的测试覆盖
  • 类型安全的实现

安装

# Install using uv (recommended)
uv pip install malloy-mcp-server

# Or using pip
pip install malloy-mcp-server

使用方法

启动服务
from malloy_mcp_server import mcp

# Run the server
if __name__ == "__main__":
    mcp.serve()
配置

可以使用环境变量配置服务:

变量描述默认值
MALLOY_PUBLISHER_ROOT_URLMalloy Publisher API 的 URLhttp://localhost:4000

示例:

# Set the publisher URL
export MALLOY_PUBLISHER_ROOT_URL="http://malloy-publisher:4000"

# Run with custom configuration
python -m malloy_mcp_server
执行查询

服务提供了用于执行 Malloy 查询的 MCP 工具:

from malloy_mcp_server import ExecuteMalloyQueryTool

# Example query execution
result = await ExecuteMalloyQueryTool(
    query="select * from users",
    model_path="my_package/users"
)
访问资源

服务提供以下资源端点:

  • malloy://project/home/metadata - 项目元数据
  • malloy://project/home/package/{package_name} - 包元数据
  • malloy://project/home/model/{model_path} - 模型元数据

开发

设置
  1. 克隆仓库:
git clone https://github.com/namabile/malloy-mcp-server.git
cd malloy-mcp-server
  1. 安装依赖:
uv pip install -e ".[dev]"
运行测试
# Run all tests
pytest

# Run with coverage
pytest --cov=malloy_mcp_server
代码质量

项目使用:

  • black 进行代码格式化
  • mypy 进行类型检查
  • ruff 进行代码检查

运行质量检查:

black .
mypy .
ruff check .

错误处理

服务提供带上下文的详细错误处理:

from malloy_mcp_server.errors import QueryExecutionError

try:
    result = await ExecuteMalloyQueryTool(...)
except QueryExecutionError as e:
    print(f"Error: {e.message}")
    print("Context:", e.context)

架构

服务基于以下组件构建:

  • FastMCP,用于实现 MCP 服务
  • Malloy Publisher Client,用于与 Malloy 交互
  • Pydantic,用于数据验证

主要组件:

  • server.py - 核心服务实现
  • tools/query_executor.py - 查询执行工具
  • errors.py - 错误处理实用工具

贡献

  1. Fork 仓库
  2. 创建功能分支
  3. 进行更改
  4. 为新功能添加测试
  5. 提交拉取请求

许可证

MIT 许可证 - 详情请参阅 LICENSE 文件

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。