Unleash MCP Server
A Model Context Protocol (MCP) server implementation that integrates with Unleash Feature Toggle system.
Overview
This project provides a bridge between LLM applications and Unleash feature flag system using the Model Context Protocol (MCP). It allows AI applications to:
- Check feature flag status from Unleash
- Expose feature flag information to LLMs
- Create feature flag
- Update feature flag
- List all projects
Table of Contents
- Requirements
- Installation
- Architecture
- Configuration
- Development
- Contributing
- License
Requirements
- Node.js (v18 or higher)
- TypeScript (v5.0 or higher)
- Access to an Unleash server instance
Installation
# Install dependencies
npm i
Architecture
The Unleash MCP Server acts as a bridge between LLM applications and the Unleash feature flag system:
+----------------+ +-------------------+ +----------------+
| | | | | |
| LLM App | <--> | Unleash MCP | <--> | Unleash API |
| (MCP Client) | | Server | | Server |
| | | | | |
+----------------+ +-------------------+ +----------------+
Development
Project Structure
unleash-mcp-server/
├── src/
│ ├── index.ts # Main entry point
│ ├── server.ts # Server implementation
│ ├── config.ts # Configuration handling
│ ├── transport/ # MCP transport implementations
│ │ ├── http.ts # HTTP/SSE transport
│ │ └── stdio.ts # STDIO transport
│ ├── unleash/ # Unleash API client implementations
│ │ ├── unleash-client.ts # Main Unleash client
│ │ ├── get-feature-flag.ts
│ │ └── get-all-projects.ts
│ ├── resources/ # MCP resource implementations
│ │ ├── flags.ts # Feature flag resources
│ │ └── projects.ts # Project resources
│ ├── tools/ # MCP tool implementations
│ │ ├── get-flag.ts # Get feature flag tool
│ │ └── get-projects.ts # Get projects tool
│ └── prompts/ # MCP prompt implementations
│ ├── flag-check.ts # Check single flag
│ └── batch-flag-check.ts # Check multiple flags
├── tests/ # Tests
└── package.json # Project configuration
Coding Standards
Naming Conventions:
- Files: Use kebab-case.ts (e.g.,
feature-flag.ts
) - Classes: Use PascalCase (e.g.,
UnleashClient
) - Functions/Methods: Use camelCase (e.g.,
getFlagStatus
) - Interfaces/Types: Use PascalCase (e.g.,
FeatureFlagConfig
)
- Files: Use kebab-case.ts (e.g.,
Imports:
- Always include .js extension when importing local files
- Follow import ordering: Node.js built-ins → External dependencies → Local imports
- Use named exports over default exports
Documentation:
- Use JSDoc comments for public functions, classes, and interfaces
- Document complex logic with inline comments
Building
# Compile TypeScript
npm run build
# Run the server
npm start
Testing
# Run tests
npm test
Inspecting
# MCP stdio inspect
npm run build
npx @modelcontextprotocol/inspector node dist/index.js
# MCP sse inspect
npm start
npx @modelcontextprotocol/inspector
How to use
For Claude or Cursor config:
{
"mcpServers": {
"unleash": {
"command": "npx",
"args": [
"-y",
"unleash-mcp"
],
"env": {
"UNLEASH_URL": "YOUR_UNLEASH_END_POINT",
"UNLEASH_API_TOKEN": "YOUR_UNLEASH_API_TOKEN",
"MCP_TRANSPORT": "stdio",
"MCP_HTTP_PORT": 3001
}
}
}
}
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Support the Project
If you find this project helpful, consider buying me a coffee!
Scan the QR code above or click here to support the development of this project.
License
This project is licensed under the MIT License - see the LICENSE file for details.