模型上下文协议服务器

Arsenal MCP Server通过模型上下文协议(MCP)提供Arsenal内容(记忆、规则、提示、工作流、脚本)的混合搜索、确定性组合和热重载索引功能。

  • by ChrisTansey007
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 ChrisTansey007/arsenal-mcp-server

使用说明

阿森纳MCP服务器

状态开发中的v0.1.0最小可行性产品(MVP)

Arsenal MCP服务器通过模型上下文协议(MCP)公开Arsenal内容(记忆、规则、提示、工作流、脚本),并支持混合搜索、确定性组合和热加载索引。

快速入门

安装

npm install

发展

npm run dev

构建

npm run build
npm start

测试

npm test                # Run all tests
npm run test:watch      # Watch mode
npm run test:coverage   # Generate coverage report

功能(v0.1 最小可行性产品)

  • ✅ 5个MCP工具: search, get, compose, pack, index.rebuild
  • ✅ Stdio 传输通过标准输入输出进行的JSON-RPC 2.0(在v0.2版本中为WebSocket)
  • ✅ 混合搜索BM25(FTS5)+ 嵌入架构(v0.1版本仅支持关键词)
  • ✅ 确定性组合基于DAG的合并,包含变量替换
  • ✅ 热加载索引带有增量更新的文件监视器
  • ✅ 翻译为中文是:✅(此符号本身无特定含义,通常用作确认或正确标记) 结构化日志记录带有安全变量遮蔽的JSON日志

传奇✅ 已完成 | 🚧 进行中 | ⏳ 计划中

🎉 版本0.1 最小可行性产品(MVP)状态:功能完整!

阿森纳MCP服务器现已全面启用,所有核心功能均已实现!

建筑学

src/
├── config/         # Configuration loading & validation
├── index/          # SQLite FTS5 + vector index
├── search/         # Search engine (BM25 + embeddings)
├── compose/        # Composition engine & DAG resolver
├── handlers/       # MCP tool handlers
├── transport/      # JSON-RPC transport (stdio, ws)
├── models/         # TypeScript types & interfaces
├── utils/          # Helpers (logger, errors, etc.)
└── main.ts         # Entry point

配置

创建 ~/.arsenal/config.json:

{
  "arsenalsDir": "~/arsenals",
  "autoUpdate": true,
  "bind": {
    "stdio": true,
    "ws": { "enabled": false, "port": 4972 }
  },
  "embeddings": {
    "provider": "none",
    "model": "gte-small"
  },
  "index": {
    "watch": true,
    "ignore": ["**/.git/**", "**/node_modules/**"]
  }
}

环境变量

  • ARSENAL_DIR - 弹药库的根路径
  • ARSENAL_WS_PORT - WebSocket 端口(默认:4972)
  • ARSENAL_EMBED_MODEL - 嵌入模型ID
  • ARSENAL_INDEX_WATCH - 启用文件监视(true|false)

MCP 工具

arsenal.search

使用混合排序跨项目进行搜索。

{
  "q": "release notes style",
  "type": ["prompt", "rule"],
  "limit": 5
}

arsenal.get

通过ID获取单个项目。

{ "id": "prm.tight-changelog" }

arsenal.compose

合并具有依赖关系和变量替换的项目。

{
  "ids": ["rule.dev-style", "prm.tight-changelog"],
  "vars": { "repo": "payments", "ticket": "PLT-123" },
  "maxTokens": 1500
}

arsenal.pack

渲染一个命名的包文件。

{
  "name": "onboarding",
  "vars": { "project": "payments" }
}

arsenal.index.rebuild

触发增量或完整重新索引。

{ "full": false }

发展

🎉 开发状态:已完成!

所有阶段已完成:

  • [x] 第一阶段:项目设置与基础设施 ✅
  • [x] 第二阶段:核心数据模型与配置层 ✅
  • [x] 第三阶段:文件系统与索引管理 ✅
  • [x] 第四阶段:搜索引擎(混合BM25 + 嵌入式向量)✅
  • [x] 第五阶段:MCP传输层(通过stdio的JSON-RPC)✅
  • [x] 第六阶段:工具处理器实现 ✅
  • [x] 第7阶段:组合引擎 & 变量替换 ✅
  • [x] 第八阶段:打包系统 ✅
  • [x] 第9阶段:测试套件与验证 ✅
  • [x] 第10阶段:可观测性与错误处理 ✅
  • [x] 第11阶段:文档编写与部署 ✅

🚀 v0.1 最小可行性产品(MVP)已准备好投入生产!

文档

许可证

麻省理工学院(MIT)