减少75-85%的令牌使用。相同的MCP功能。真正的成本节约。
MCP-DSL是一种领域特定语言,旨在替代模型上下文协议中的冗长JSON-RPC,最多可减少85%的令牌使用量,同时保持完全兼容性和表达力。
传统JSON-RPC:
{
"jsonrpc": "2.0",
"id": 42,
"method": "tools/call",
"params": {
"name": "search",
"arguments": {
"query": "weather"
}
}
}
MCP-DSL:
> tools/call#42 {name: "search", args: {query: "weather"}}
结果:176个令牌 → 42个令牌(76%的减少)
作为库安装:
npm install mcp-dsl
# 或
bun install mcp-dsl
全局安装以供CLI使用:
npm install -g mcp-dsl
# 或
bun install -g mcp-dsl
import { compileDsl, decompile } from 'mcp-dsl';
// 将DSL编译为JSON-RPC
const result = compileDsl('> initialize#1 {v: "2025-06-18"}');
console.log(result.messages[0]);
// {
// jsonrpc: "2.0",
// id: 1,
// method: "initialize",
// params: { protocolVersion: "2025-06-18" }
// }
// 将JSON-RPC反编译回DSL
const dsl = decompile(result.messages);
console.log(dsl);
// > initialize#1 {v: "2025-06-18"}
# 将DSL编译为JSON
echo '> initialize#1 {v: "2025-06-18"}' | mcp-dsl compile --pretty
# 将JSON反编译为DSL
cat message.json | mcp-dsl decompile
# 验证DSL
mcp-dsl lint input.mcp
# 格式化DSL
mcp-dsl format input.mcp -o output.mcp
compile - 将DSL转换为JSON-RPC
--pretty - 美化JSON输出--messages - 只输出消息--tools - 只输出工具定义--resources - 只输出资源定义--no-validate - 跳过语义验证decompile - 将JSON-RPC转换为DSL
--messages/--tools/--resources - 反编译特定类型lint - 验证DSL语法和语义
format - 解析并美化DSL
所有命令都支持 -i/--input(文件或 - 表示标准输入)和 -o/--output(文件或 - 表示标准输出)。
> 请求(带有方法#ID)< 响应(带有#ID)! 通知(不期望响应)x 错误(带有代码:消息)T 工具(具有模式的可执行函数)R 资源(具有URI的数据源)P 提示(具有参数的模板)RT 资源模板(参数化的URI模式)紧凑的类型表示法与推断:
T analyze_code {
desc: "分析代码问题"
in: {
code: str! # 必需字符串
language: str!
rules?: { # 可选嵌套对象
complexity?: int = 10
lineLength?: int = 100
}
}
out: {
issues: [{ # 对象数组
line: int
severity: enum[error, warning, info]
message: str
}]
}
}
| DSL | JSON-RPC |
|---|---|
v | protocolVersion |
caps | capabilities |
info | clientInfo / serverInfo |
args | arguments |
desc | description |
mime | mimeType |
in | inputSchema |
out | outputSchema |
参见 GRAMMAR.md 获取完整的语言规范。
对于每天处理1百万MCP消息的系统:
即使在中等规模下(每天10万消息),年度节约也超过**$120K**。
当以下情况时,MCP-DSL提供最大价值:
此项目使用mise进行工具版本管理:
# 安装mise(如果尚未安装)
curl https://mise.run | sh
# 安装项目依赖
mise install
bun install
mise run test # 运行所有测试
mise run test-watch # 监控模式
bun test # 直接通过bun运行
mise run check # 运行所有检查(测试+CLI验证)
mise run build # 验证CLI工具是否工作
mise run lint # 检查示例文件(如果有)
mise run format # 格式化示例文件(如果有)
src/
├── ast/ # 抽象语法树定义
├── lexer/ # 词法分析
├── parser/ # 递归下降解析器
├── compiler/ # DSL → JSON-RPC转换
├── decompiler/ # JSON-RPC → DSL转换
├── semantic/ # 语义验证
├── types/ # 公共类型定义
├── utils/ # 实用工具(映射、字符串处理)
├── cli.ts # CLI工具
└── index.ts # 公开API
参见 GRAMMAR.md 获取完整的EBNF语法规范。
欢迎贡献!请查看问题跟踪器了解当前任务和计划的功能。
MIT许可证 - 详情请参阅LICENSE。
模型上下文协议正成为LLM工具交互的标准。随着MCP的采用增加,协议效率直接影响:
MCP-DSL使协议更加易用和成本效益,而不牺牲功能或兼容性。