MCP-DSL:一种用于模型上下文协议的令牌高效语言
代币减少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
# or
bun install mcp-dsl全局安装以供CLI使用:
npm install -g mcp-dsl
# or
bun install -g mcp-dsl用法
作为图书馆
import { compileDsl, decompile } from 'mcp-dsl';
// Compile DSL to 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" }
// }
// Decompile JSON-RPC back to DSL
const dsl = decompile(result.messages);
console.log(dsl);
// > initialize#1 {v: "2025-06-18"}CLI工具
# Compile DSL to JSON
echo '> initialize#1 {v: "2025-06-18"}' | mcp-dsl compile --pretty
# Decompile JSON to DSL
cat message.json | mcp-dsl decompile
# Validate DSL
mcp-dsl lint input.mcp
# Format DSL
mcp-dsl format input.mcp -o output.mcpCLI命令
compile-将DSL转换为JSON-RPC
- --pretty -漂亮的打印JSON输出 - --messages -仅输出消息 - --tools -仅输出工具定义 - --resources -仅输出资源定义 - --no-validate -跳过语义验证
decompile-将JSON-RPC转换为DSL
- --messages/--tools/--resources -分解特定类型
lint-验证DSL语法和语义
format-解析和漂亮打印DSL
所有命令支持 -i/--input (文件或 - 用于stdin)和 -o/--output (文件或 - 用于stdout)。
语言特性
消息类型
>请求(使用方法#id)<响应(带#id)!通知(预期无响应)x错误(代码:message)
定义类型
T工具(带模式的可执行函数)R资源(具有URI的数据源)P提示(带参数的模板)RT资源模板(参数化URI模式)
类型系统
带推理的紧凑型表示法:
T analyze_code {
desc: "Analyzes code for issues"
in: {
code: str! # Required string
language: str!
rules?: { # Optional nested object
complexity?: int = 10
lineLength?: int = 100
}
}
out: {
issues: [{ # Array of objects
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 |
看 格拉玛.md 完整的语言规范。
为什么选择MCP-DSL?
代币效率
对于系统处理 每天100万条MCP消息:
- 已保存的令牌:3.41亿代币/天
- API成本节约 (按3美元/M输入代币计算): 1023美元/天 = 373395美元/年
- 带有输出令牌 (15美元/M):节省总额 120万美元/年
即使在中等规模(每天10万条消息)下,每年的节省也超过 12万美元.
何时使用MCP-DSL
MCP-DSL在以下情况下提供最大值:
- 信息量大:服务器每天处理数千个请求
- 上下文约束模型:窗户有限的较小型号
- 对成本敏感的应用程序:大规模生产系统
- 实时系统:较低的令牌数量意味着更快的处理速度
- 多回合对话:多个交易所的储蓄复合增长
发展
设置
此项目使用 布置 对于工具版本管理:
# Install mise (if not already installed)
curl https://mise.run | sh
# Install project dependencies
mise install
bun install运行测试
mise run test # Run all tests
mise run test-watch # Watch mode
bun test # Direct via bun开发任务
mise run check # Run all checks (tests + CLI verification)
mise run build # Verify CLI tool works
mise run lint # Lint example files (when available)
mise run format # Format example files (when available)项目结构
src/
├── ast/ # Abstract Syntax Tree definitions
├── lexer/ # Tokenization
├── parser/ # Recursive descent parser
├── compiler/ # DSL → JSON-RPC transformation
├── decompiler/ # JSON-RPC → DSL transformation
├── semantic/ # Semantic validation
├── types/ # Common type definitions
├── utils/ # Utilities (mappings, string handling)
├── cli.ts # CLI tool
└── index.ts # Public API语法
看 格拉玛.md 以获取完整的EBNF语法规范。
贡献
欢迎投稿!请检查 问题跟踪系统 用于当前任务和计划功能。
许可证
MIT许可证-请参阅 许可证 了解详情。
为什么这很重要
模型上下文协议正在成为LLM工具交互的标准。随着MCP采用率的增长,协议效率直接影响:
- 规模成本:处理数百万条消息的生产系统
- 模型能力:更多代币可用于实际内容
- 开发人员经验:可读、可维护的协议定义
- 生态系统增长:降低构建MCP服务器/客户端的障碍
MCP-DSL使协议更易于访问且更具成本效益,而不会影响功率或兼容性。
