ChrisTansey007/arsenal-mcp-server
If you are the rightful owner of arsenal-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
Arsenal MCP Server is a platform that exposes content such as memories, rules, prompts, workflows, and scripts over the Model Context Protocol (MCP) with advanced search and composition capabilities.
Arsenal MCP Server
Status: v0.1.0 MVP in development
Arsenal MCP Server exposes Arsenal content (memories, rules, prompts, workflows, scripts) over the Model Context Protocol (MCP) with hybrid search, deterministic composition, and hot-reload indexing.
Quick Start
Installation
npm install
Development
npm run dev
Build
npm run build
npm start
Testing
npm test # Run all tests
npm run test:watch # Watch mode
npm run test:coverage # Generate coverage report
Features (v0.1 MVP)
- ✅ 5 MCP Tools:
search,get,compose,pack,index.rebuild - ✅ Stdio Transport: JSON-RPC 2.0 over stdio (WebSocket in v0.2)
- ✅ Hybrid Search: BM25 (FTS5) + embeddings architecture (keyword-only for v0.1)
- ✅ Deterministic Composition: DAG-based merge with variable substitution
- ✅ Hot-Reload Indexing: File watcher with incremental updates
- ✅ Structured Logging: JSON logs with secure variable redaction
Legend: ✅ Completed | 🚧 In Progress | ⏳ Planned
🎉 v0.1 MVP Status: FEATURE-COMPLETE!
The Arsenal MCP Server is now fully functional with all core features implemented!
Architecture
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
Configuration
Create ~/.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/**"]
}
}
Environment Variables
ARSENAL_DIR- Root path of arsenalsARSENAL_WS_PORT- WebSocket port (default: 4972)ARSENAL_EMBED_MODEL- Embeddings model IDARSENAL_INDEX_WATCH- Enable file watching (true|false)
MCP Tools
arsenal.search
Search across items with hybrid ranking.
{
"q": "release notes style",
"type": ["prompt", "rule"],
"limit": 5
}
arsenal.get
Fetch a single item by ID.
{ "id": "prm.tight-changelog" }
arsenal.compose
Merge items with dependencies and variable substitution.
{
"ids": ["rule.dev-style", "prm.tight-changelog"],
"vars": { "repo": "payments", "ticket": "PLT-123" },
"maxTokens": 1500
}
arsenal.pack
Render a named pack file.
{
"name": "onboarding",
"vars": { "project": "payments" }
}
arsenal.index.rebuild
Trigger incremental or full reindex.
{ "full": false }
Development
🎉 Development Status: COMPLETE!
All Phases Completed:
- Phase 1: Project Setup & Infrastructure ✅
- Phase 2: Core Data Models & Configuration Layer ✅
- Phase 3: File System & Index Management ✅
- Phase 4: Search Engine (Hybrid BM25 + Embeddings) ✅
- Phase 5: MCP Transport Layer (JSON-RPC over stdio) ✅
- Phase 6: Tool Handlers Implementation ✅
- Phase 7: Composition Engine & Variable Substitution ✅
- Phase 8: Pack System ✅
- Phase 9: Testing Suite & Validation ✅
- Phase 10: Observability & Error Handling ✅
- Phase 11: Documentation & Deployment ✅
🚀 v0.1 MVP is production-ready!
Documentation
- - Complete user guide with examples
- - Production deployment instructions
- - Common issues and solutions
- - How to contribute to the project
- - Implementation summary
License
MIT