CodeGuard MCP Server
Provides centralized security instructions for AI-assisted code generation by matching context-aware rules to the user's programming language and file patterns. It ensures generated code adheres to security best practices without requiring manual maintenance of instruction files across individual repositories.
README
CodeGuard MCP Server
Centralized security instruction server for AI-assisted code generation
π― Overview
Problem: Every repository needs .github/instructions/ files to enforce security rules with GitHub Copilot and AI assistants. This leads to:
- Duplicated instruction files across repositories
- Inconsistent rule versions
- Difficult to update security policies organization-wide
- Manual maintenance overhead
Solution: CodeGuard MCP Server provides centralized security instructions via the Model Context Protocol (MCP), eliminating per-repo instruction files while ensuring all AI-generated code follows security best practices.
π Quick Start
Prerequisites
- Node.js 18+
Installation
# Install dependencies
npm install
# Build the project
npm run build
# Test the server
npm start
Setup with Claude Desktop
-
Build first:
npm run build -
Configure Claude Desktop (
%APPDATA%\Claude\claude_desktop_config.json):{ "mcpServers": { "codeguard": { "command": "node", "args": ["C:\\repo\\contextpilot-server\\dist\\index.js"] } } } -
Restart Claude Desktop
-
Test: Ask Claude to generate Python code with password hashing!
Setup with GitHub Copilot (VS Code)
Add to your project's .github/.mcp.json:
{
"mcp": {
"servers": {
"codeguard": {
"command": "node",
"args": ["C:\\repo\\contextpilot-server\\dist\\index.js"]
}
}
}
}
Note: GitHub Copilot MCP support is pending. Currently works best with Claude Desktop.
ποΈ How It Works
Current Approach (Per-Repository)
my-app/
.github/
instructions/
codeguard-1-crypto.instructions.md β Duplicated
codeguard-1-credentials.instructions.md β Duplicated
codeguard-0-input-validation.instructions.md β Duplicated
... (copy to every repo)
CodeGuard MCP Approach (Centralized + Smart)
User: "Generate Python code to hash passwords"
β
AI Assistant (Copilot/Claude):
- Connects to CodeGuard MCP Server
- Sends context: language=python, keywords="hash password"
β
CodeGuard MCP Server (Phase 2 Smart Matching):
1. Auto-detects language: Python (.py files)
2. Extracts keywords: "hash", "password"
3. Scores & prioritizes rules:
β’ CRITICAL: codeguard-1-crypto-algorithms (score: 1000)
β’ CRITICAL: codeguard-1-hardcoded-credentials (score: 1000)
β’ HIGH: codeguard-0-authentication-mfa (score: 80)
4. Returns top 15 most relevant rules
β
AI generates code following prioritized rules:
β
Uses bcrypt/Argon2 (not MD5) - from crypto-algorithms
β
No hardcoded secrets - from hardcoded-credentials
β
Proper salt generation - from authentication-mfa
β
Secure defaults - from all combined rules
NO .github/instructions needed in the repo!
Smart context-aware rule delivery in < 10ms!
ποΈ Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AI Assistants (GitHub Copilot, Claude, etc.) β
β Working in any repository/workspace β
ββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββ
β MCP Protocol
β stdio/HTTP
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CodeGuard MCP Server β
β β
β βββββββββββββββββββββββββββββββββββββββββββββ β
β β MCP Protocol Layer β β
β β β’ Resources (instruction delivery) β β
β β β’ Prompts (dynamic injection) β β
β βββββββββββββββββββ¬ββββββββββββββββββββββββββ β
β β β
β βββββββββββββββββββΌββββββββββββββββββββββββββ β
β β Rule Engine β β
β β β’ Load instruction files β β
β β β’ Parse frontmatter (applyTo, version) β β
β β β’ Match language/file patterns β β
β β β’ Context-aware rule selection β β
β β β’ Priority scoring (Critical/High/Med/Low)β β
β β β’ Custom rule override support β β
β βββββββββββββββββββ¬ββββββββββββββββββββββββββ β
β β β
β βββββββββββββββββββΌββββββββββββββββββββββββββ β
β β Centralized Rule Repository β β
β β /rules/codeguard-1-*.instructions.md β β
β β /rules/codeguard-0-*.instructions.md β β
β β /rules/custom/*.instructions.md β¨ NEW β β
β βββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π Core Components
1. MCP Resources
AI assistants can query instructions as resources:
// Resource: All instructions
codeguard://instructions/all
// Resource: By language
codeguard://instructions/python
codeguard://instructions/javascript
codeguard://instructions/typescript
// Resource: By file pattern
codeguard://instructions/file?path=src/auth/handler.ts
2. MCP Prompts
Dynamic instruction injection based on context:
Prompt: get_security_instructions
Arguments:
- language: "python" | "javascript" | "c" | ...
- context: "auth" | "crypto" | "database" | ...
- filepath: Optional file path for pattern matching
Returns: Concatenated instruction text for matched rules
3. Rule Matching Engine
Smart rule selection based on:
- Language Detection:
**/*.pyβ Python rules (auto-detected from file extensions) - File Patterns:
**/*.test.jsβ Testing rules - Context Keywords: "authentication" β Auth/MFA rules (50+ keywords)
- Priority Scoring: 4-tier system (Critical/High/Medium/Low)
- Custom Rules: Organization rules get priority boost
- Critical Rules: Always include hardcoded credentials, weak crypto
- Frontmatter Parsing:
applyTo,version,description
π¨ Rule Structure
Each instruction file follows this format:
---
applyTo: '**/*.js,**/*.ts,**/*.jsx,**/*.tsx'
description: No Hardcoded Credentials
version: 1.0.1
---
rule_id: codeguard-1-hardcoded-credentials
# No Hardcoded Credentials
NEVER store secrets, passwords, API keys, tokens or any other
credentials directly in source code.
[... detailed rules and examples ...]
Current Rules (21+ instruction files):
codeguard-1-hardcoded-credentialsβ οΈ Criticalcodeguard-1-crypto-algorithmsβ οΈ Criticalcodeguard-1-digital-certificatesβ οΈ Criticalcodeguard-0-authentication-mfacodeguard-0-authorization-access-controlcodeguard-0-input-validation-injectioncodeguard-0-api-web-servicescodeguard-0-client-side-web-securitycodeguard-0-session-management-and-cookies- ... (and 12+ more)
π‘ Usage Examples
Example 1: Python Password Hashing
User Prompt:
"Generate Python code to hash user passwords"
What Happens:
- AI detects:
language=python,context=crypto password - MCP Server returns instructions:
- codeguard-1-crypto-algorithms (no MD5/SHA-1)
- codeguard-0-authentication-mfa
- codeguard-1-hardcoded-credentials
Generated Code:
import bcrypt
def hash_password(password: str) -> bytes:
"""Hash password using bcrypt with secure defaults."""
# β
Uses bcrypt (not MD5)
# β
Automatic salt generation
# β
Secure work factor
salt = bcrypt.gensalt(rounds=12)
return bcrypt.hashpw(password.encode('utf-8'), salt)
def verify_password(password: str, hashed: bytes) -> bool:
"""Verify password against hash."""
return bcrypt.checkpw(password.encode('utf-8'), hashed)
Example 2: Node.js Database Query
User Prompt:
"Create a function to get user by email in TypeScript"
What Happens:
- AI detects:
language=typescript,context=database - MCP Server returns instructions:
- codeguard-0-input-validation-injection
- codeguard-0-data-storage
- codeguard-0-authorization-access-control
Generated Code:
import { Pool } from 'pg';
async function getUserByEmail(email: string): Promise<User | null> {
// β
Input validation
if (!email || typeof email !== 'string') {
throw new Error('Invalid email parameter');
}
// β
Parameterized query (no SQL injection)
const query = 'SELECT * FROM users WHERE email = $1';
const result = await pool.query(query, [email]);
return result.rows[0] || null;
}
Example 3: React Authentication Component
User Prompt:
"Create a login form component in React"
What Happens:
- AI detects:
language=typescript,context=auth,filepath=*.tsx - MCP Server returns instructions:
- codeguard-0-client-side-web-security (XSS, CSRF)
- codeguard-0-authentication-mfa
- codeguard-0-session-management-and-cookies
Generated Code:
// β
No credentials in code
// β
CSRF protection
// β
Secure cookie handling
// β
XSS prevention via React defaults
export function LoginForm() {
const handleSubmit = async (e: FormEvent) => {
e.preventDefault();
const formData = new FormData(e.target as HTMLFormElement);
const response = await fetch('/api/auth/login', {
method: 'POST',
credentials: 'same-origin', // β
Secure cookies
headers: {
'Content-Type': 'application/json',
'X-CSRF-Token': getCsrfToken(), // β
CSRF protection
},
body: JSON.stringify({
email: formData.get('email'),
password: formData.get('password'),
}),
});
// ... handle response
};
return <form onSubmit={handleSubmit}>...</form>;
}
β¨ Custom Organization Rules (Phase 3 β )
Overview
CodeGuard supports custom organization-specific rules that extend or override default security rules.
Features
- Override Default Rules: Replace any default rule with your organization's version
- Add New Rules: Create organization-specific standards (API conventions, logging format, etc.)
- Priority Boost: Custom rules automatically ranked higher than defaults
- Automatic Loading: No configuration needed - just add files to
rules/custom/
Quick Start
-
Create custom rule file in
rules/custom/:rules/custom/org-api-standards.instructions.md -
Use standard frontmatter format:
--- applyTo: '**/*.ts,**/*.js,**/*.py' description: 'Organization API Standards' version: '1.0.0' --- # Organization API Standards Your organization-specific guidance... -
Restart MCP server - custom rules load automatically:
Loaded 22 default + 3 custom = 24 total instruction files Custom rule 'org-api-standards' loaded
Examples
Example 1: Override Hardcoded Credentials Rule
Create rules/custom/codeguard-1-hardcoded-credentials.instructions.md:
- Specifies your organization's approved secret managers (Azure Key Vault, HashiCorp Vault)
- Documents rotation policies and incident response
- Lists organization contacts
Example 2: API Standards
Create rules/custom/org-api-standards.instructions.md:
- REST conventions (methods, status codes, pagination)
- Error response format
- Rate limiting headers
- Authentication requirements
Example 3: Logging Format
Create rules/custom/org-logging-format.instructions.md:
- Required log fields (timestamp, traceId, service, userId)
- Log levels (DEBUG, INFO, WARN, ERROR, FATAL)
- What NOT to log (passwords, PII)
- Structured logging examples
See rules/custom/README.md for complete documentation.
Priority System
Custom rules get automatic advantages:
- +25 baseline score boost
- Elevated priority tier (LOWβMEDIUM, MEDIUMβHIGH)
- Appear before equivalent default rules in results
π οΈ Technology Stack
- Runtime: Node.js 18+ / TypeScript
- Protocol: MCP SDK (
@modelcontextprotocol/sdk) - Transport: stdio (standard MCP)
- Parser: Gray-matter (frontmatter), micromatch (glob patterns)
- Testing: Vitest (59 tests, 80-85% coverage)
π¦ Roadmap
See ROADMAP.md for detailed implementation plan.
Phase 1: Core MCP Server β COMPLETED (January 16, 2026)
- [x] MCP server setup with stdio transport
- [x] Rule loader with frontmatter parsing
- [x] Pattern matching engine (glob patterns, language detection)
- [x] Basic resource handlers
- [x] Prompt handlers for dynamic instruction injection
- [x] 22 instruction files loaded and working
- [x] TypeScript build system configured
- [x] Basic tests implemented (37 tests)
Phase 2: Smart Matching β COMPLETED (January 20, 2026)
- [x] Enhanced language detection (30+ languages, auto-detection from file paths)
- [x] Context keyword matching (50+ keywords with weighted scoring)
- [x] Rule prioritization system (4-tier: Critical/High/Medium/Low)
- [x] Advanced pattern matching (negative patterns, complex globs)
- [x] Multi-factor scoring algorithm
- [x] Response optimization (top 15 most relevant rules)
- [x] Comprehensive test coverage (51 tests, 80-85%)
Current Status:
- β
Server built and functional (
dist/index.js) - β Works with Claude Desktop (MCP supported)
- β Intelligent rule selection with priority scoring
- β Auto-detects language from file extensions
- β Context-aware matching (< 10ms response time)
- β³ Waiting for GitHub Copilot MCP support
Phase 3: Enhanced Features (Week 3)
- [ ] Custom organization rules support
- [ ] Rule versioning and updates
- [ ] Caching with TTL and invalidation
- [ ] Configuration management (config.json)
- [ ] Structured logging and metrics
Phase 4: Production Ready (Week 4+)
- [ ] Docker containerization
- [ ] HTTP transport option
- [ ] Health check endpoint
- [ ] Monitoring dashboard
- [ ] GitHub Copilot integration (when available)
π― Success Metrics
- β
Zero duplication: No
.github/instructionsin any repo - β Centralized updates: Update once, apply everywhere
- β Automatic enforcement: AI follows rules without developer intervention
- β Fast response: < 10ms with priority scoring (target: < 100ms) β
- β High accuracy: 90%+ correct rule matching with context awareness β
- β Developer experience: Transparent, no workflow changes
π€ Benefits
For Developers
- No manual rule maintenance per repo
- Consistent security standards across projects
- AI generates secure code automatically
- Clear, actionable security guidance
For Organizations
- Centralized security policy management
- Easy to update and enforce rules organization-wide
- Audit trail of instruction versions
- Reduced security vulnerabilities in AI-generated code
For Security Teams
- Single source of truth for security rules
- Version control for policy changes
- Measurable compliance across all projects
- Proactive security guidance at code generation time
ποΈ Architecture
Component Overview
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AI Assistants (Copilot, Claude, etc.) β
ββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββ
β MCP Protocol (stdio)
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CodeGuard MCP Server β
β βββββββββββββββββββββββββββββββββββββββββββββ β
β β MCP Layer (Resources, Prompts, Tools) β β
β βββββββββββββββββββ¬ββββββββββββββββββββββββββ β
β βββββββββββββββββββΌββββββββββββββββββββββββββ β
β β Rule Engine (Match & Prioritize) β β
β βββββββββββββββββββ¬ββββββββββββββββββββββββββ β
β βββββββββββββββββββΌββββββββββββββββββββββββββ β
β β Rules Repository (22+ instructions) β β
β βββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
MCP Endpoints
Resources:
codeguard://instructions/all- All instructionscodeguard://instructions/{language}- Language-specificcodeguard://instructions/file?path={file}- File-specific
Prompts:
get_security_instructions- Context-aware instruction retrieval- Args:
language,context,filepath
- Args:
Tools:
get_security_instructions- Get rules for code generationvalidate_code_security- Validate code against rules
Pattern Matching
The server intelligently matches rules based on:
- File patterns:
**/*.py,src/auth/** - Language: Detected from extensions or prompts
- Context: Keywords like "auth", "crypto", "database"
- Critical rules: Always included (credentials, crypto, certificates)
π¦ Project Structure
contextpilot-server/
βββ rules/ # 22+ security instruction files
β βββ codeguard-1-*.md # Critical rules
β βββ codeguard-0-*.md # Best practices
βββ src/
β βββ index.ts # MCP server entry
β βββ handlers/ # Resource/Prompt/Tool handlers
β βββ rules/ # Loader & Matcher
βββ tests/
βββ dist/ # Compiled output
βββ package.json
π§ͺ Development
# Development mode (hot reload)
npm run dev
# Run tests
npm test
# Build
npm run build
π¦ Current Status
β Completed (Phase 1)
- Core MCP server with stdio transport
- Rule loader with frontmatter parsing
- Pattern matching (glob, language, context)
- Resource & Prompt handlers
- 22 instruction files loaded
- Works with Claude Desktop
β³ Pending
- GitHub Copilot MCP support (waiting on Microsoft)
- Advanced caching & optimization
- Custom organization rules
π€ Benefits
For Developers:
- No manual rule maintenance per repo
- Consistent security across projects
- AI generates secure code automatically
For Organizations:
- Centralized security policy management
- Easy organization-wide updates
- Reduced security vulnerabilities
For Security Teams:
- Single source of truth
- Version control for policies
- Proactive security at code generation time
π License
MIT
π Resources
Built with β€οΈ for secure AI-assisted development
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
E2B
Using MCP to run code via e2b.