MCP智能编排网关

MCP Grimoire是一个智能的MCP服务器编排器,通过延迟加载和意图驱动发现实现97%的令牌节省,优化AI开发工作流。

  • by CRACK-BREAK-MAKE
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 CRACK-BREAK-MAKE/mcp-grimoire

使用说明

您的MCP服务器智能拼写本 -延迟加载编排,节省97%的令牌


📺 视频教程

刚加入MCP Grimoire? 观看此全面演练:

🎥 在YouTube上观看:MCP Grimoire-完整的设置和使用指南


🎯 什么是MCP Grimoire?

MCP Grimoire 是一个智能编排器 模型上下文协议(MCP) 服务器。它充当人工智能代理(如Claude Desktop、GitHub Copilot)和MCP工具之间的智能网关,解决人工智能驱动的开发工作流程中的关键性能和可用性问题。

问题

传统的MCP实现存在三个关键问题:

1.上下文过载(令牌浪费)💸

  • 启动时加载50多个工具会消耗40000多个代币
  • 降低人工智能性能并增加API成本
  • 导致响应较慢和工具选择混乱

2.缺少领域专业知识🤷

  • MCP工具缺乏上下文指导和最佳实践
  • 用户必须手动提示输入安全模式
  • 导致漏洞和使用不一致

3.插件开发复杂性🔧

  • 创建MCP插件没有标准化的模式
  • 难以维护和扩展
  • 支离破碎的生态系统

解决方案

MCP Grimoire实现 代币减少97% 通过:

✅ 延迟加载 -仅在需要时生成MCP服务器,而不是在启动时生成
✅ 意图驱动的发现 -通过混合关键字+语义搜索将查询与工具匹配
✅ 积极清理 -在5次不活动后杀死不活动的服务器
✅ 转向喷射 -将最佳实践直接嵌入到工具描述中
✅ 透明操作 -克劳德不知道事情的复杂性

结果:40000个代币→ 1,平均166个令牌(每次查询约0.20美元→约0.006美元)


🚀 快速开始

先决条件

  • Node.js 22+(用于运行MCP服务器)
  • 克劳德桌面 或 GitHub Copilot (任何支持MCP的AI代理)
  • 基本了解命令行工具

设置工作流

1. Create Spells (Terminal)      →  2. Configure Grimoire (mcp.json)  →  3. Use in AI Agent
   npx mcp-grimoire create           Add to Claude/Copilot config          Ask questions naturally
   - Interactive wizard              - Grimoire runs as MCP gateway        - Servers spawn on-demand
   - Auto-probes server              - Debug with GRIMOIRE_DEBUG           - Auto-cleanup after 5 turns idle

1.首先创建拼写(在终端中)

⚠️ 重要:在配置MCP服务器之前,请务必创建法术!

运行交互式向导(建议所有用户使用):

npx @crack-break-make/mcp-grimoire@latest create

向导将:

  • ✅ 指导您完成每个配置步骤
  • ✅ 自动探测服务器(验证连接)
  • ✅ 从发现的工具自动生成关键字
  • ✅ 创建智能转向指令
  • ✅ 如果无法访问服务器,则阻止拼写创建
  • ✅ 将拼写保存到 (user.home)/.grimoire/yourspell.spell.yaml

为什么调查很重要:如果探测失败,则不会创建咒语(防止破坏配置)。

列出你的咒语: npx @crack-break-make/mcp-grimoire@latest list

2.配置MCP服务器(在Claude Desktop/GitHub Copilot中)

只有在创造法术之后,将Grimoire添加到您的MCP配置中。

📚 了解有关MCP配置的更多信息:

添加到您的 claude_desktop_config.json:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "grimoire": {
      "command": "npx",
      "args": ["-y", "@crack-break-make/mcp-grimoire"]
    }
  }
}

配置选项:

  • 环境变量GRIMOIRE_DEBUG:设置为 "true" 启用详细日志记录(有助于故障排除)

重新启动克劳德桌面 -Grimoire MCP服务器现在正在运行!

GitHub副本(VS代码),添加到 .vscode/mcp.json:

{
  "mcpServers": {
    "grimoire": {
      "command": "npx",
      "args": ["-y", "@crack-break-make/mcp-grimoire"]
    }
  }
}

3.管理拼写(CLI命令)

对于高级用户,CLI模式可用于命令参数:

# List installed spells
npx @crack-break-make/mcp-grimoire@latest list

# Validate a spell configuration
npx @crack-break-make/mcp-grimoire@latest validate ~/.grimoire/postgres.spell.yaml

# Show help
npx @crack-break-make/mcp-grimoire@latest --help

4.在Claude或Copilot中使用

重启AI代理后,让它与您的工具进行交互:

Show me all users from the database

Grimoire将自动:

  • 如果您配置了查询,请将其与正确的拼写(“postgres”)匹配
  • 为MCP服务器生成身份验证
  • 为Claude/Copilot提供工具
  • 注入转向指导以获得最佳实践

🎭 双模式操作

MCP Grimoire使用 三步检测策略:

模式 如何命名 目的 谁使用它
MCP 服务器 从 mcp.json 使用stdio管道 作为AI代理的MCP网关运行 Claude Desktop/Copilot自动生成它
交互式CLI 从终端与 create command 使用向导轻松创建法术 ⭐ 所有用户-推荐!
高级CLI 从带有其他参数的终端 管理拼写配置 ⚠️ 仅限高级用户

📦 运作原理

高水位流量

User Query → Claude analyzes intent → resolve_intent(query) →
Grimoire matches keywords/semantics → Spawns relevant MCP server →
Injects steering → tools/list_changed → Claude sees tools + guidance →
Executes with best practices → After 5 turns idle → Kill server

架构图

┌──────────────────────────────────────┐
│      Claude Desktop / Copilot        │
│  Maintains conversation state        │
└──────────────┬───────────────────────┘
               │ stdio (MCP Protocol)
               │
┌──────────────▼───────────────────────┐
│      GRIMOIRE GATEWAY SERVER         │
│  - Intent Resolution (hybrid)        │
│  - Process Lifecycle Management      │
│  - Tool Routing                      │
│  - Steering Injection                │
│  - Authentication Handling           │
└──────┬──────────────┬────────────────┘
       │ stdio/http   │ sse/http
       │ + auth       │ + auth
┌──────▼─────┐  ┌────▼──────┐
│  Postgres  │  │  Stripe   │  ... (spawned on-demand)
│ MCP Server │  │ MCP Server│       with auth headers
└────────────┘  └───────────┘

关键组件

1.意图解析(混合方法)

  • 关键词匹配:拼写关键字的精确和模糊匹配
  • 语义搜索:基于嵌入的相似性(MessagePack存储)
  • 信心评分:0.0-1.0比例决定自动生成与备选方案
  • 自动生成:探测功能从工具名称中提取关键字

2.过程生命周期管理

  • 按需产卵:服务器仅在置信度≥0.85时启动
  • 使用情况跟踪:每次工具调用都会更新 lastUsedTurn
  • 5转不活动:5次空闲会话回合后自动清理
  • 优雅关闭:SIGTERM→ wait → SIGKILL(如果需要)

3.身份验证管道

  • 环境拓展: ${VAR} 从shell环境解析语法
  • 海德大厦:构造Bearer、Basic或自定义身份验证标头
  • 安全存储:凭据从未按字面意思记录(掩码为 ***)
  • OAuth支持:\ud83d\udea7计划在未来发布(尚未实施)
    • 目前,在OAuth场景中使用手动获得的Bearer令牌

4.刀具路径

  • 透明代理:将工具调用路由到相应的生成服务器
  • MCP协议:基于拼写配置的Stdio、SSE或HTTP传输
  • 错误处理:优雅的回退,带有详细的错误消息

5.转向喷射

  • 最佳实践:在工具描述中注入专家指导
  • 架构上下文:嵌入数据库架构、API限制、安全规则
  • 自动生成:Probe发现工具并创建上下文导向

多层意图解析

Grimoire使用 基于置信度的方法 决定何时自动生成vs要求澄清:

层级 信心 行为 示例
高 ≥ 0.85 自动生成 立即 “查询postgres”→ 即时激活
中等 0.50-0.84 返回备选方案 “检查数据库”→ [postgres、mysql、mongodb]
低 0.30-0.49 弱匹配 “分析数据”→ 5 弱匹配
无 < 0.30 未找到 “发射火箭”→ 错误+可用法术

70%的查询 达到高置信度(零摩擦用户体验)
20%的查询 达到中等置信度(AI代理从上下文中选择)
10%的查询 需要澄清


🧙 创造你的第一个咒语

“咒语”是一个YAML配置文件,它告诉Grimoire如何生成和使用MCP服务器。

交互式创建(建议所有用户使用)

这是创造法术的主要方式 -向导使其变得简单:

# Run without installation (recommended)
npx @crack-break-make/mcp-grimoire create

# OR install globally first, then use short command
npm install -g @crack-break-make/mcp-grimoire
grimoire create

交互式向导将指导您完成以下操作:

  1. 法术名称 (例如。, postgres, github-api, weather-service)
  2. 传输类型 (stdio、SSE或HTTP)
  3. 服务器配置 (stdio的命令/args,HTTP/SSE的URL)
  4. 认证 (无身份验证、承载令牌、基本身份验证)
  5. 环境变量 (用于机密和凭证)
  6. 服务器验证 (自动-探测服务器并自动生成配置)

探测是自动的 -向导将:

  • ✅ 使用身份验证连接到服务器
  • ✅ 验证服务器是否实际工作
  • ✅ 根据发现的工具名称自动生成关键字
  • ✅ 创建智能转向指令
  • ✅ 发现工具模式和参数
  • ✅ 如果无法访问服务器,则阻止拼写创建 (保持文件夹干净!)

手动创建示例(仅限高级用户)

⚠️ 大多数用户应该使用上面的交互模式。 手动创建适用于希望完全控制的高级用户。

示例1:Stdio服务器(无身份验证)

创建 (user.home)/.grimoire/postgres.spell.yaml:

name: postgres
version: 1.0.0
description: PostgreSQL database operations

server:
  transport: stdio
  command: npx
  args:
    - '-y'
    - '@modelcontextprotocol/server-postgres'
  env:
    DATABASE_URL: postgresql://user:pass@localhost/db

keywords:
  - database
  - sql
  - query
  - postgres
  - tables
  - users

steering: |
  # Database Schema
  Tables:
    - users (id uuid, email string, created_at timestamp)
    - orders (id uuid, user_id uuid, total decimal)

  # Security Rules
  ALWAYS use parameterized queries:
    ✓ query_database('SELECT * FROM users WHERE id = $1', [id])
    ✗ 'SELECT * FROM users WHERE id = ' + id  (SQL INJECTION!)

  # Performance Tips
  - Use LIMIT to avoid scanning millions of rows
  - created_at is indexed, use for date filtering

示例2:HTTP服务器(承载令牌身份验证)

创建 (user.home)/.grimoire/weather-api.spell.yaml:

name: weather-api
version: 1.0.0
description: Weather forecast and current conditions

server:
  transport: http
  url: http://localhost:8000/mcp
  auth:
    type: bearer
    token: ${WEATHER_API_KEY} # From environment variable

keywords:
  - weather
  - forecast
  - temperature
  - conditions
  - climate

steering: |
  # API Usage
  - Rate limit: 1000 calls/day
  - Forecast available: 7 days ahead
  - Historical data: Not available

  # Best Practices
  - Cache forecast results (updated hourly)
  - Use city name or coordinates
  - Check units: imperial (°F) or metric (°C)

示例3:SSE服务器(自定义标头身份验证)

创建 (user.home)/.grimoire/github-api.spell.yaml:

name: github-api
version: 1.0.0
description: GitHub repository and issue management

server:
  transport: sse
  url: http://localhost:8001/sse
  headers:
    X-GitHub-Token: ${GITHUB_PERSONAL_ACCESS_TOKEN}
    Accept: application/vnd.github.v3+json

keywords:
  - github
  - repository
  - repo
  - issues
  - pull
  - requests
  - commits

steering: |
  # GitHub API Guidelines
  - Use full repository names: owner/repo
  - Rate limit: 5000 requests/hour (authenticated)
  - Always check permissions before write operations

  # Security Best Practices
  - Never hardcode tokens (use environment variables)
  - Use fine-grained tokens when possible
  - Minimum required scopes: repo, read:user

备注:对于大多数真实场景,请使用交互式向导(create 无参数),而不是手动编写YAML文件。以上示例仅供参考。

环境变量

对于需要认证的服务器, 始终使用环境变量扩展 在拼写文件中:

server:
  env:
    # Database connections
    DATABASE_URL: ${DATABASE_URL}
    POSTGRES_PASSWORD: ${DB_PASSWORD}

    # API keys
    GITHUB_PERSONAL_ACCESS_TOKEN: ${GITHUB_PAT}
    WEATHER_API_KEY: ${WEATHER_KEY}
    STRIPE_SECRET_KEY: ${STRIPE_SECRET}

    # OAuth credentials
    OAUTH_CLIENT_ID: ${ENTERPRISE_CLIENT_ID}
    OAUTH_CLIENT_SECRET: ${ENTERPRISE_SECRET}

设置环境变量:

创建 .env 文件在 (user.home)/.grimoire/.env 与你的秘密:

# (user.home)/.grimoire/.env
GITHUB_PAT=ghp_your_token_here
WEATHER_KEY=your_weather_api_key
DATABASE_URL=postgresql://user:pass@localhost/db
DB_PASSWORD=your_secure_password
STRIPE_SECRET=sk_test_your_stripe_key
ENTERPRISE_CLIENT_ID=your_oauth_client_id
ENTERPRISE_SECRET=your_oauth_client_secret

⚠️ 重要:The .env 文件在启动时由MCP Grimoire自动加载。切勿将此文件提交到版本控制。

拼写文件位置 (所有平台):

  • (user.home)/.grimoire/ (遵循AI代理惯例)
    • macOS: /Users/username/.grimoire/
    • 视窗: C:\Users\username\.grimoire\
    • Linux: /home/username/.grimoire/

🔮 支持的MCP传输

✅ Stdio(完全支持)

对于作为子进程生成的本地MCP服务器(最常见):

server:
  transport: stdio
  command: npx
  args:
    - '-y'
    - '@modelcontextprotocol/server-postgres'

示例:

  • @modelcontextprotocol/server-postgres
  • @modelcontextprotocol/server-github
  • @cap-js/mcp-server

✅ SSE(完全支持)

对于使用服务器发送事件的实时MCP服务器:

server:
  transport: sse
  url: https://your-sse-url/sse

✅ HTTP(完全支持)

对于类似REST的MCP服务器:

server:
  transport: http
  url: https://your-http-url/mcp

🔐 身份验证支持

Grimoire支持安全MCP服务器连接的全面身份验证:

✅ 无需认证

对于没有身份验证要求的公共或本地服务器:

server:
  transport: stdio
  command: npx
  args: ['-y', '@modelcontextprotocol/server-filesystem']
  # No auth configuration needed

✅ API密钥/承载令牌

对于需要API密钥身份验证的服务器(以 Authorization: Bearer 头球

server:
  transport: http
  url: http://localhost:8000/mcp
  auth:
    type: bearer
    token: ${MY_API_KEY} # Environment variable expansion

通用:天气API、新闻服务、分析平台

✅ 基本认证

对于使用用户名/密码身份验证的服务器:

server:
  transport: http
  url: http://localhost:8001/mcp
  auth:
    type: basic
    username: ${DB_USERNAME}
    password: ${DB_PASSWORD}

备注:基本身份验证作为承载令牌发送(Base64编码 username:password)为了确保FastMCP服务器的兼容性。

✅ 安全密钥(自定义标头)

对于需要自定义身份验证标头的服务器(例如GitHub、Brave):

server:
  transport: sse
  url: http://localhost:8002/sse
  headers:
    X-GitHub-Token: ${GITHUB_TOKEN}
    X-Brave-Key: ${BRAVE_API_KEY}
    X-Custom-Auth: ${CUSTOM_SECRET}

通用:GitHub API,勇敢的搜索,自定义企业API

🚧 OAuth 2.0流程(计划在未来发布)

OAuth 2.0身份验证流程如下 尚未实施。它们计划在未来发布。

计划中的OAuth流程 (尚未提供):

OAuth 2.0客户端凭据(计划中)

server:
  transport: http
  url: http://localhost:8003/mcp
  auth:
    type: client_credentials
    clientId: ${OAUTH_CLIENT_ID}
    clientSecret: ${OAUTH_CLIENT_SECRET}
    tokenUrl: https://oauth.example.com/token
    scope: read:data write:data # Optional

状态: 🚧 计划的 -尚未实施

OAuth 2.0私钥JWT(计划中)

server:
  transport: http
  url: http://localhost:8004/mcp
  auth:
    type: private_key_jwt
    clientId: ${OAUTH_CLIENT_ID}
    privateKey: ${PRIVATE_KEY_PEM} # PEM format
    tokenUrl: https://oauth.example.com/token
    algorithm: RS256 # Optional: RS256 (default), RS384, RS512, ES256, ES384, ES512

状态: 🚧 计划的 -尚未实施

OAuth 2.0静态私钥JWT(计划中)

对于带有静态断言的预生成JWT令牌:

server:
  transport: http
  url: http://localhost:8005/mcp
  auth:
    type: static_private_key_jwt
    clientId: ${OAUTH_CLIENT_ID}
    privateKey: ${PRIVATE_KEY_PEM}
    tokenUrl: https://oauth.example.com/token
    staticClaims:
      sub: service-account@example.com
      aud: https://api.example.com

状态: 🚧 计划的 -尚未实施

OAuth 2.0授权码(计划中)

基于浏览器身份验证的交互式OAuth流:

server:
  transport: http
  url: http://localhost:8006/mcp
  auth:
    type: authorization_code
    clientId: ${OAUTH_CLIENT_ID}
    clientSecret: ${OAUTH_CLIENT_SECRET}
    authorizationUrl: https://oauth.example.com/authorize
    tokenUrl: https://oauth.example.com/token
    redirectUri: http://localhost:3000/callback

状态: 🚧 计划的 -需要浏览器交互流(未来版本)

Auth支持概述

身份验证类型 状态 用例
无身份验证 ✅ 工作 公共/本地服务器
承载令牌 ✅ 正在工作 API密钥、访问令牌
基本身份验证 ✅ 正在工作 用户名/密码服务器
安全密钥 ✅ 工作 自定义标头(GitHub、Brave)
OAuth客户端凭据 🚧 计划 服务器到服务器OAuth
OAuth私钥JWT 🚧 计划 增强安全OAuth
OAuth授权码 🚧 计划 交互式浏览器流

目前,在大多数OAuth场景中使用承载令牌或安全密钥 通过手动获取令牌。


⚡ 当服务器被销毁时

产卵触发器

1.高置信度匹配(≥0.85)

User: "query my postgres database"
→ resolve_intent matches "postgres" with 0.94 confidence
→ Immediate spawn + return tools
→ Time: 200-300ms

2.手动激活

User: "check my database"
→ resolve_intent returns alternatives: [postgres, mysql, mongodb]
→ Claude (or user) calls: activate_spell({ name: "postgres" })
→ Spawn specified spell
→ Time: 200-300ms

3.已激活

→ Just update usage tracking
→ Time: ~5ms (no spawn overhead)

杀死触发器(5转不活动)

之后 每次工具调用Grimoire检查:

If (currentTurn - lastUsedTurn) >= 5:
  → Kill process
  → Unregister tools
  → Send tools/list_changed notification

真实世界示例 (电子商务工作流程):

转身 动作 活动法术 事件
1-3 数据库查询 [postgres] ✅ Postgres诞生
4-7 处理付款 [postgres, stripe] ✅ 条纹生成
8 部署CAP应用程序 [postgres, stripe, cap-js] ✅ Cap js诞生
9 CAP部署 [stripe, cap-js] ❌ Postgres被杀(6转空闲)
14 CAP测试 [cap-js] ❌ 条纹被杀死(7转空闲)

结果:3个法术→ 1 法术(从峰值减少67%的令牌)


🛠️ CLI命令(在终端中运行)

重要:CLI命令在您的 终端,不在Claude Desktop中。MCP服务器在Claude内部自动运行。

npx @crack-break-make/mcp-grimoire@latest create

使用交互式向导创建新的法术配置:

# Interactive mode (guided) - RECOMMENDED
npx @crack-break-make/mcp-grimoire@latest create

# With server validation (auto-generates steering)
npx @crack-break-make/mcp-grimoire@latest create --probe

# Non-interactive mode
npx @crack-break-make/mcp-grimoire@latest create \
  -n postgres \
  -t stdio \
  --command npx \
  --args "-y" "@modelcontextprotocol/server-postgres"

# With environment variables (for authenticated servers)
npx @crack-break-make/mcp-grimoire@latest create \
  -n github \
  -t stdio \
  --command npx \
  --args "-y" "@modelcontextprotocol/server-github" \
  --env "GITHUB_PERSONAL_ACCESS_TOKEN=${GITHUB_PERSONAL_ACCESS_TOKEN}"

可选的:全局安装以缩短命令:

npm install -g @crack-break-make/mcp-grimoire@latest

# Now use short form:
grimoire create
grimoire list

特性:

  • 在创建配置之前验证MCP服务器是否正常工作
  • 根据工具名称自动生成关键字
  • 创建智能转向指令
  • 支持经过身份验证的服务器的环境变量
  • 支持所有传输类型(stdio、SSE、HTTP)

npx @crack-break-make/mcp-grimoire@latest list

列出所有已安装的法术:

# Simple list
npx @crack-break-make/mcp-grimoire@latest list

# Verbose output with details
npx @crack-break-make/mcp-grimoire@latest list -v

输出:

📚 Spells in ~/.grimoire

  🔮 postgres                    [stdio ] (8 keywords)
  🔮 stripe                      [stdio ] (12 keywords)
  🔮 github-api                  [stdio ] (15 keywords)

✓ Total: 3 spells

npx @crack-break-make/mcp-grimoire@latest validate

验证拼写配置:

npx @crack-break-make/mcp-grimoire@latest validate ~/.grimoire/postgres.spell.yaml

支票:

  • 必填字段(名称、关键字、server.command/url)
  • 字段类型和格式
  • 最少3个关键字
  • 运输特定要求

🎨 与AI代理一起使用

克劳德桌面

运作原理:

  1. 用户询问:“显示数据库中的用户”
  2. 克劳德看到 resolve_intent 工具(始终可用)
  3. 克劳德来电: resolve_intent({ query: "show users from database" })
  4. Grimoire生产postgres,注入转向系统,归还工具
  5. 克劳德接收 tools/list_changed 通知
  6. 克劳德来电: query_database({ query: "SELECT * FROM users" })
  7. 5转怠速后→ Grimoire会自动杀死postgres

关键洞察:Claude不知道Grimoire的复杂性——它只是通过MCP协议通知看到工具出现/消失。

GitHub副本(VS代码)

工作流程与Claude Desktop相同。添加到 settings.json:

{
  "servers": {
    "grimoire": {
      "command": "npx",
      "args": ["-y", "@crack-break-make/mcp-grimoire"]
    }
  }
}

📊 代币储蓄明细

传统MCP(基线)

All 50 servers spawned at startup:
- postgres tools (8 tools × 200 tokens) = 1,600 tokens
- stripe tools (12 tools × 200 tokens) = 2,400 tokens
- github tools (15 tools × 200 tokens) = 3,000 tokens
- ... 47 more servers
= ~40,000 tokens per conversation

Grimoire(多层战略)

加权平均计算:

High confidence (70%):   1,000 tokens (selected tools only)
Medium confidence (20%): 1,500 tokens (3 alternatives + tools)
Low confidence (8%):     2,000 tokens (5 weak matches + tools)
No match (2%):             300 tokens (error + available spells)

Average = 0.70×1000 + 0.20×1500 + 0.08×2000 + 0.02×300
        = 700 + 300 + 160 + 6
        = 1,166 tokens

储蓄: (40,000 - 1,166) / 40,000 = 97.1% 🎉


🤝 贡献

我们欢迎捐款!无论您是在修复错误、添加功能还是改进文档,我们都会感谢您的帮助。

入门指南

1.分叉和克隆

# Fork on GitHub, then clone
git clone https://github.com/YOUR_USERNAME/mcp-grimoire.git
cd mcp-grimoire

# Install dependencies
pnpm install

2.创建分支

git checkout -b feature/my-awesome-feature

3.进行更改

遵循我们的编码原则:

  • 雅格尼:只实施现在需要的东西
  • 不要重复自己不要重复自己的话
  • 单一职责原则:单一责任原则
  • SOLID:遵循SOLID原则

看 贡献.md 全面的发展指南。

4.运行测试

# Run all tests
pnpm test

# Run with coverage
pnpm test:coverage

5.提交更改

我们使用 约定式提交:

# Format
type(scope): short description

# Examples
feat(intent): add semantic search with embeddings
fix(lifecycle): prevent orphaned child processes
docs(readme): add contributing section
test(gateway): add multi-tier resolution tests

6.提交拉取请求

git push origin feature/my-awesome-feature

然后在GitHub上打开一个PR:

  • 变更的清晰描述
  • 链接到相关问题
  • 屏幕截图/示例(如适用)

开发命令

# Development server (hot reload)
pnpm dev

# Build TypeScript
pnpm build

# Linting
pnpm lint          # Check for issues
pnpm lint:fix      # Auto-fix issues

# Formatting
pnpm format        # Format all files with Prettier

# Type checking
pnpm type-check    # Check TypeScript types

项目结构

mcp-grimoire/
├── src/
│   ├── core/                    # Domain models (types, configs)
│   ├── application/             # Business logic (intent, lifecycle)
│   ├── infrastructure/          # External systems (file, embeddings)
│   ├── presentation/            # Gateway server, tool routing
│   ├── cli/                     # CLI commands, templates
│   └── utils/                   # Shared utilities
├── tests/
│   └── fixtures/                # Test spell configurations
├── docs/
│   ├── adr/                     # Architecture Decision Records
│   └── architecture.md          # System architecture

创建架构决策记录(ADR)

对于重大的架构决策,创建ADR:

# Use the adr-generator skill
/adr-generator --title "Use Hybrid Intent Resolution" --status proposed

看 docs/adr/README.md 作为指导方针。

运行集成测试

# Requires test servers to be available
pnpm test:integration

# Run specific integration test
pnpm test src/presentation/__tests__/gateway-real-workflow.integration.test.ts

代码质量标准

我们通过以下方式保持高代码质量:

  • ✅ 80%+测试覆盖率(单元+集成)
  • ✅ 严格的TypeScript(strict: true)
  • ✅ ESLint+预处理格式
  • ✅ 不 any 类型(由linter强制执行)
  • ✅ 全面的错误处理

需要帮助?


❓ 常见问题解答和故障排除

AI代理未显示 resolve_intent 工具

问题GitHub Copilot(VS Code)或其他AI代理积极缓存工具。Grimoire生成并注册新工具后,AI代理可能不会立即看到它们,包括关键工具 resolve_intent 工具。

解决方案:明确提示AI代理刷新其工具列表:

Please call the tools/list API to refresh available tools, then use the resolve_intent tool to search for [your query].

为什么会这样:

  • MCP客户端缓存工具列表以提高性能
  • 这 tools/list_changed 通知可能不会在所有客户端中立即触发刷新
  • 这是一些MCP客户端实现的已知限制(不是Grimoire错误)

替代方法:重新启动AI代理(例如,重新加载VS Code窗口)以强制刷新工具缓存。


📖 文档


📝 许可证

ISC© 莫汉·夏尔马


🔗 链接


由...制作❤️ 通过 莫汉·夏尔马

特别感谢MCP社区和所有贡献者!