精准导航Cairo文档——您智能的Starknet证明语言向导 👨💻
</div>一个生产就绪的模型上下文协议(MCP)服务器,使用基于大小的分块、多提供商嵌入(Gemini/Mistral)和Qdrant向量搜索在Cairo/Starknet文档中提供语义搜索。构建以防止上下文溢出并提供最相关的结果。您的AI助手现在可以实时学习Cairo语法。
1. 安装Docker:
# macOS(使用Homebrew)
brew install docker
# Windows
# 从以下链接下载Docker Desktop:https://www.docker.com/products/docker-desktop/
2. 启动Qdrant向量数据库:
docker run -d -p 6333:6333 qdrant/qdrant
3. 安装Node.js >= 18.0.0 (下载)
# 1. 克隆并安装依赖项
git clone <repo-url>
cd cairo-context
npm install
# 2. 配置您的嵌入提供商
cp .env.example .env
# 编辑.env - 选择“gemini”或“mistral”,并添加您的API密钥
# 3. 生成嵌入(一次性设置,约3-5分钟)
npm run generate-embeddings
# 4. 构建项目(此步骤后MCP应在线)
npm run build
系统将执行以下操作:
提供商选项:
推荐:Roo(VS Code扩展)
{
"mcpServers": {
"cairo-context": {
"command": "node",
"args": [
"C:\\\\Users\\\\<your-username>\\\\path\\\\to\\\\cairo-context\\\\dist\\\\src\\\\index.js"
],
"alwaysAllow": [
"get-cairo-example",
"list-cairo-resources",
"semantic-search-cairo"
],
"disabled": false
}
}
}
替代IDE:
claude mcp add cairo-context -- node /path/to/cairo-context/dist/src/index.js~/.cursor/mcp.json(与Roo相同的JSON结构)正如制图师绘制未知领域一样,这个MCP服务器绘制了Cairo文档的地形图,引导AI助手通过:
再也不用迷失在庞大的文档中。制图师动态地摄取、分块、索引并使用自然语言语义搜索检索相关信息。
解决的问题:之前的MCP服务器在AI进行了过于广泛的搜索后返回巨大的部分,导致聊天崩溃,出现经典的“提示太长”错误消息。
我们的解决方案:
max_tokens向上舍入到最近的500score_threshold)和输出大小(max_tokens)AI调用MCP工具的示例(仅3个参数):
semantic-search-cairo({
query: "如何在STARK电路中实现Poseidon哈希?",
score_threshold: 0.5, // 0.0-1.0(越高越严格)
max_tokens: 10000 // 舍入到10000(20个500标记的块)
})
3个人工智能总结的来源(由Cairo Coder预处理):
6个动态摄取的来源(GitHub克隆+处理):
总计:2,150个块跨越9个来源
8个生产就绪的Cairo程序:
我们完全将Cairo Coder基于PostgreSQL的导入器系统移植到Qdrant,实现了:
9个来源 → 动态摄取 → Gemini嵌入(3072D)→ Qdrant → 语义搜索
重大工程成就:
qdrantVectorStore.ts)我们替换的内容:
- PostgreSQL + pgvector扩展
- 复杂的数据库迁移
- 手动依赖关系管理
我们构建的内容:
+ Qdrant向量数据库(1个容器,自动填充)
+ 对所有9个来源的完整Cairo Coder导入器兼容性
+ Gemini或Mistral嵌入
+ 2个来源的Python绕行包装器
+ 自动集合维度匹配
+ 跨越2,150个块的<200毫秒查询延迟
semantic-search-cairo(主要搜索工具)使用自然语言查询进行语义搜索,由Gemini嵌入和Qdrant驱动。
参数(简化为2个):
query(必需) - 自然语言问题score_threshold(可选) - 0.0-1.0,步长为0.05(默认:0.5)max_tokens(可选) - 默认:50000,最小:500(自动舍入到最近的500)标记舍入示例:
290 → 500(最少1个块)750 → 1000(2个块)2400 → 2500(5个块)10000 → 10000(20个块)50000 → 50000(100个块,默认)示例用法:
// 使用默认设置的广泛搜索
{
query: "如何在STARK电路中实现Poseidon哈希?",
score_threshold: 0.5,
max_tokens: 50000
}
// 输出有限的精确搜索
{
query: "felt252模运算",
score_threshold: 0.7,
max_tokens: 5000 // 返回约10个高度相关的块
}
// 探索模式
{
query: "存储优化技术",
score_threshold: 0.3,
max_tokens: 20000 // 返回约40个松散相关的块
}
get-cairo-example检索完整的Cairo代码示例。
参数:
example_id(必需) - 之一:
counter - 简单的状态管理erc20 - 可互换代币erc721 - NFT标准ownable-erc20 - 访问控制pausable-erc20 - 应急停止reentrancy-guard - 安全模式rollback-component - 状态恢复debugging - 调试技术示例:
example_id: "erc20"
list-cairo-resources列出所有可用的文档来源和示例。
参数:无需参数,只需调用该工具即可。
支持的提供商:
gemini-embedding-001RETRIEVAL_DOCUMENT用于文档,RETRIEVAL_QUERY用于查询mistral-embed特性:
.env中更改提供商并重新运行嵌入生成localhost:6333cairo-docs分数阈值指南:
0.9-1.0 - 几乎完全匹配0.7-0.9 - 高相似度(建议用于精确查询)0.5-0.7 - 中等相似度(默认,良好的平衡)0.3-0.5 - 较广范围匹配0.0-0.3 - 非常宽松匹配(可能包括无关结果)标记限制指南:
500 - 最小(1个块)5000 - 快速参考(约10个块)10000 - 中等探索(约20个块)50000 - 深度挖掘(默认,约100个块)MIT