关于 guidance-lark-mcp
guidance-lark-mcp 是用于验证和测试 Lark 格式 llguidance 语法的 MCP 服务,帮助开发者和 AI 编码 Agent 迭代语法定义,并可选地生成受语法约束的文本。
主要功能
- 01验证语法的完整性与一致性
- 02运行 JSON 文件中的批量测试
- 03获取 llguidance 语法文档
- 04可选生成符合语法的文本
适用场景
- 01检查新编写的 Lark 语法
- 02用样例输入测试语法
- 03编辑时查阅语法文档
- 04生成符合指定语法的文本
MCP 相关
MCP 服务向客户端提供语法验证、批量测试、文档查询和可选的文本生成工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP 语法工具
用于验证和测试 llguidance 语法(Lark 格式)的 MCP 服务。提供语法验证、批量测试执行和语法文档,非常适合与 AI 编码助手协作,迭代构建语法。
安装
使用 uvx(推荐)
uvx guidance-lark-mcp
使用 pip
pip install guidance-lark-mcp
从源代码安装
cd mcp-grammar-tools
pip install -e .
MCP 客户端配置
GitHub Copilot CLI
你可以使用交互式 /mcp add 命令添加服务,也可以直接编辑配置文件。完整详情请参阅 Copilot CLI MCP 文档。
选项 1:交互式设置
在 Copilot CLI 中运行 /mcp add,选择 Local/STDIO,并输入 uvx guidance-lark-mcp 作为命令。
选项 2:编辑配置文件
将以下内容添加到 ~/.copilot/mcp-config.json:
{
"mcpServers": {
"grammar-tools": {
"type": "local",
"command": "uvx",
"args": ["guidance-lark-mcp"],
"tools": ["*"]
}
}
}
这样即可直接使用语法验证和批量测试。若还要启用由大模型驱动的生成(generate_with_grammar),请将 ENABLE_GENERATION 和你的凭据添加到 env:
"env": {
"ENABLE_GENERATION": "true",
"OPENAI_API_KEY": "your-key-here"
}
对于 Azure OpenAI(通过 az login 使用 Entra ID),请使用 guidance-lark-mcp[azure],并改为设置 endpoint:
"args": ["guidance-lark-mcp[azure]"],
"env": {
"ENABLE_GENERATION": "true",
"AZURE_OPENAI_ENDPOINT": "https://your-resource.openai.azure.com/",
"OPENAI_MODEL": "your-deployment-name"
}
所有受支持的后端请参阅后端配置。
保存后,使用 /mcp show 确认服务已连接。
VS Code
{
"mcpServers": {
"grammar-tools": {
"type": "local",
"command": "uvx",
"args": ["guidance-lark-mcp"],
"env": {
"ENABLE_GENERATION": "true",
"OPENAI_API_KEY": "your-key-here"
},
"tools": ["*"]
}
}
}
Claude Desktop
{
"mcpServers": {
"grammar-tools": {
"command": "uvx",
"args": ["guidance-lark-mcp"],
"env": {
"ENABLE_GENERATION": "true",
"OPENAI_API_KEY": "your-key-here"
}
}
}
}
用法
可用工具
-
validate_grammar— 使用 llguidance 内置的验证器检查语法的完整性和一致性。{"grammar": "start: \"hello\" \"world\""} -
run_batch_validation_tests— 根据某个语法,运行 JSON 文件中的批量验证测试。返回通过/失败统计信息和详细的失败信息。{ "grammar": "start: /[0-9]+/", "test_file": "tests.json" }测试文件格式:
[ {"input": "123", "should_parse": true, "description": "Valid number"}, {"input": "abc", "should_parse": false, "description": "Not a number"} ] -
get_llguidance_documentation— 从官方仓库获取 llguidance 语法文档。 -
generate_with_grammar(可选,需要ENABLE_GENERATION=true) — 使用受语法约束的 OpenAI 模型生成文本。采用 Responses API 的自定义工具语法格式,因此输出保证符合语法要求。需要设置OPENAI_API_KEY环境变量。Azure 和其他 endpoint 的配置请参阅后端配置。
后端配置
generate_with_grammar 工具使用 OpenAI Python SDK,该 SDK 可通过环境变量原生支持多个后端:
| 后端 | 必需的环境变量 | 可选的环境变量 |
|---|---|---|
| OpenAI(默认) | OPENAI_API_KEY | OPENAI_MODEL |
| Azure OpenAI(API key) | AZURE_OPENAI_ENDPOINT、AZURE_OPENAI_API_KEY | AZURE_OPENAI_API_VERSION、OPENAI_MODEL |
| Azure OpenAI(Entra ID) | AZURE_OPENAI_ENDPOINT + az login | AZURE_OPENAI_API_VERSION、OPENAI_MODEL |
| 自定义 endpoint | OPENAI_API_KEY、OPENAI_BASE_URL | OPENAI_MODEL |
服务会自动检测要使用的后端:
- 如果设置了
AZURE_OPENAI_ENDPOINT→ 使用AzureOpenAI客户端(通过 Entra ID 或 API key) - 否则 → 使用
OpenAI客户端(自动读取OPENAI_API_KEY和OPENAI_BASE_URL)
服务启动时会记录检测到的后端。
示例:Azure OpenAI(API key)
{
"mcpServers": {
"grammar-tools": {
"type": "local",
"command": "uvx",
"args": ["guidance-lark-mcp"],
"env": {
"ENABLE_GENERATION": "true",
"AZURE_OPENAI_ENDPOINT": "https://my-resource.openai.azure.com",
"AZURE_OPENAI_API_KEY": "your-azure-key",
"OPENAI_MODEL": "gpt-4.1"
},
"tools": ["*"]
}
}
}
示例:Azure OpenAI(Entra ID / 无密钥)
需要运行 az login,并安装 azure 附加组件:pip install guidance-lark-mcp[azure]
{
"mcpServers": {
"grammar-tools": {
"type": "local",
"command": "uvx",
"args": ["guidance-lark-mcp[azure]"],
"env": {
"ENABLE_GENERATION": "true",
"AZURE_OPENAI_ENDPOINT": "https://my-resource.openai.azure.com",
"OPENAI_MODEL": "gpt-4.1"
},
"tools": ["*"]
}
}
}
示例工作流
与 AI 助手协作,迭代构建语法:
- 从规范开始 — 粘贴语言规范中的 EBNF 规则
- 编写基本语法 — 将几条规则转换为 Lark 格式
- 验证 — 使用
validate_grammar检查是否有缺失的规则 - 编写测试 — 创建包含示例输入的 JSON 测试文件
- 批量测试 — 使用
run_batch_validation_tests查找失败项 - 修复并重复 — 不断完善语法,直到所有测试通过
示例语法
examples/ 目录包含使用这些工具构建的示例语法,其中包括 Lark 语法文件、测试套件和文档:
- GraphQL — GraphQL 规范的可执行子集(查询、变更、片段、变量)
故障排除
Copilot CLI / VS Code 中的服务无法连接?
Copilot CLI 等 MCP 客户端只会在服务启动时崩溃的情况下显示“Connection closed”。要查看实际错误,请在终端中直接运行服务:
uvx guidance-lark-mcp
或者启用生成:
ENABLE_GENERATION=true OPENAI_API_KEY=your-key uvx guidance-lark-mcp
常见问题:
- 缺少凭据 — 设置了
ENABLE_GENERATION=true,但没有有效的OPENAI_API_KEY或AZURE_OPENAI_ENDPOINT。服务仍会启动并提供验证工具;generate_with_grammar会返回一条说明性错误。 - Azure Entra ID — 确保已运行
az login,并使用guidance-lark-mcp[azure](而不是基础包)。 - 首次启动较慢 —
uvx首次运行时需要解析并安装依赖项,耗时可能超过 MCP 客户端的连接超时时间。手动运行一次uvx guidance-lark-mcp以预热缓存。 - 更新到新版本 —
uvx会缓存软件包,因此发布新版本后,你可能需要清除缓存并重启 MCP 客户端:uv cache clean guidance-lark-mcp
开发
git clone https://github.com/guidance-ai/guidance-lark-mcp
cd guidance-lark-mcp
uv sync
uv run pytest tests/ -q
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。