Flagsmith
Officialby Flagsmith
README.md
# flagsmith
Model Context Protocol (MCP) Server for the *flagsmith* API.
[](https://www.speakeasy.com/?utm_source=flagsmith&utm_campaign=mcp-typescript)
[](https://opensource.org/licenses/MIT)
<br /><br />
> [!IMPORTANT]
> This MCP Server is not yet ready for production use. To complete setup please follow the steps outlined in your [workspace](https://app.speakeasy.com/org/flagsmith/flagsmith). Delete this notice before publishing to a package manager.
<!-- Start Summary [summary] -->
## Summary
mcp_openapi: Flagsmith's Core and SDK APIs. Check out <a href='https://docs.flagsmith.com'>Flagsmith documentation</a>.
<!-- End Summary [summary] -->
<!-- Start Table of Contents [toc] -->
## Table of Contents
<!-- $toc-max-depth=2 -->
* [flagsmith](#flagsmith)
* [Installation](#installation)
* [Progressive Discovery](#progressive-discovery)
* [Development](#development)
* [Publishing to Anthropic MCP Registry](#publishing-to-anthropic-mcp-registry)
* [Contributions](#contributions)
<!-- End Table of Contents [toc] -->
<!-- Start Installation [installation] -->
## Installation
> [!TIP]
> To finish publishing your MCP Server to npm and others you must [run your first generation action](https://www.speakeasy.com/docs/github-setup#step-by-step-guide).
<details>
<summary>Claude Desktop</summary>
Install the MCP server as a Desktop Extension using the pre-built [`mcp-server.mcpb`](https://github.com/Flagsmith/flagsmith-mcp/releases/download/v0.0.2/mcp-server.mcpb) file:
Simply drag and drop the [`mcp-server.mcpb`](https://github.com/Flagsmith/flagsmith-mcp/releases/download/v0.0.2/mcp-server.mcpb) file onto Claude Desktop to install the extension.
The MCP bundle package includes the MCP server and all necessary configuration. Once installed, the server will be available without additional setup.
> [!NOTE]
> MCP bundles provide a streamlined way to package and distribute MCP servers. Learn more about [Desktop Extensions](https://www.anthropic.com/engineering/desktop-extensions).
</details>
<details>
<summary>Cursor</summary>
[](cursor://anysphere.cursor-deeplink/mcp/install?name=Flagsmith&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyJmbGFnc21pdGgiLCJzdGFydCIsIi0tdG9rZW4tYXV0aCIsIiJdfQ==)
Or manually:
1. Open Cursor Settings
2. Select Tools and Integrations
3. Select New MCP Server
4. If the configuration file is empty paste the following JSON into the MCP Server Configuration:
```json
{
"command": "npx",
"args": [
"flagsmith",
"start",
"--token-auth",
""
]
}
```
</details>
<details>
<summary>Claude Code CLI</summary>
```bash
claude mcp add Flagsmith -- npx -y flagsmith start --token-auth
```
</details>
<details>
<summary>Gemini</summary>
```bash
gemini mcp add Flagsmith -- npx -y flagsmith start --token-auth
```
</details>
<details>
<summary>Windsurf</summary>
Refer to [Official Windsurf documentation](https://docs.windsurf.com/windsurf/cascade/mcp#adding-a-new-mcp-plugin) for latest information
1. Open Windsurf Settings
2. Select Cascade on left side menu
3. Click on `Manage MCPs`. (To Manage MCPs you should be signed in with a Windsurf Account)
4. Click on `View raw config` to open up the mcp configuration file.
5. If the configuration file is empty paste the full json
```bash
{
"command": "npx",
"args": [
"flagsmith",
"start",
"--token-auth",
""
]
}
```
</details>
<details>
<summary>VS Code</summary>
[](vscode://ms-vscode.vscode-mcp/install?name=Flagsmith&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyJmbGFnc21pdGgiLCJzdGFydCIsIi0tdG9rZW4tYXV0aCIsIiJdfQ==)
Or manually:
Refer to [Official VS Code documentation](https://code.visualstudio.com/api/extension-guides/ai/mcp) for latest information
1. Open [Command Palette](https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette)
1. Search and open `MCP: Open User Configuration`. This should open mcp.json file
2. If the configuration file is empty paste the full json
```bash
{
"command": "npx",
"args": [
"flagsmith",
"start",
"--token-auth",
""
]
}
```
</details>
<details>
<summary> Stdio installation via npm </summary>
To start the MCP server, run:
```bash
npx flagsmith start --token-auth
```
For a full list of server arguments, run:
```
npx flagsmith --help
```
</details>
<!-- End Installation [installation] -->
<!-- Start Progressive Discovery [dynamic-mode] -->
## Progressive Discovery
MCP servers with many tools can bloat LLM context windows, leading to increased token usage and tool confusion. Dynamic mode solves this by exposing only a small set of meta-tools that let agents progressively discover and invoke tools on demand.
To enable dynamic mode, pass the `--mode dynamic` flag when starting your server:
```jsonc
{
"mcpServers": {
"Flagsmith": {
"command": "npx",
"args": ["flagsmith", "start", "--mode", "dynamic"],
// ... other server arguments
}
}
}
```
In dynamic mode, the server registers only the following meta-tools instead of every individual tool:
- **`list_tools`**: Lists all available tools with their names and descriptions.
- **`describe_tool`**: Returns the input schema for one or more tools by name.
- **`execute_tool`**: Executes a tool by name with the provided input parameters.
This approach significantly reduces the number of tokens sent to the LLM on each request, which is especially useful for servers with a large number of tools.
<!-- End Progressive Discovery [dynamic-mode] -->
<!-- Placeholder for Future Speakeasy SDK Sections -->
## Development
Run locally without a published npm package:
1. Clone this repository
2. Run `npm install`
3. Run `npm run build`
4. Run `node ./bin/mcp-server.js start --token-auth `
To use this local version with Cursor, Claude or other MCP Clients, you'll need to add the following config:
```json
{
"command": "node",
"args": [
"./bin/mcp-server.js",
"start",
"--token-auth",
""
]
}
```
Or to debug the MCP server locally, use the official MCP Inspector:
```bash
npx @modelcontextprotocol/inspector node ./bin/mcp-server.js start --token-auth
```
## Publishing to Anthropic MCP Registry
To publish your MCP server to the [Anthropic MCP Registry](https://github.com/modelcontextprotocol/registry), follow these steps based on the [official publishing guide](https://github.com/modelcontextprotocol/registry/blob/main/docs/guides/publishing/publish-server.md).
### Step 1: Configure mcpName in Your Generation Config
Add the `mcpName` field to your `.speakeasy/gen.yaml` file:
```yaml
mcp-typescript:
mcpName: io.github.username/server-name # Use reverse-DNS format
# ... other configuration
```
The `mcpName` should follow the reverse-DNS format (e.g., `io.github.username/server-name`) to ensure uniqueness in the registry.
### Step 2: Regenerate Your MCP Server
Run Speakeasy generation with the updated configuration. This will:
- Add the `mcpName` field to your `package.json` (required for npm package validation)
- Generate a `server.json` file with registry metadata
### Step 3: Publish to npm
The registry validates npm packages by checking that your published package includes the `mcpName` field:
```bash
npm publish
```
The registry will fetch your package from npm and verify that the `mcpName` in `package.json` matches your server name.
### Step 4: Install the Publisher CLI
Install the `mcp-publisher` CLI tool:
**macOS/Linux (Homebrew)**:
```bash
brew install mcp-publisher
```
**macOS/Linux/WSL (curl)**:
```bash
curl -L "https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher && sudo mv mcp-publisher /usr/local/bin/
```
**Windows PowerShell**:
```powershell
$arch = if ([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture -eq "Arm64") { "arm64" } else { "amd64" }
Invoke-WebRequest -Uri "https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_windows_$arch.tar.gz" -OutFile "mcp-publisher.tar.gz"
tar xf mcp-publisher.tar.gz mcp-publisher.exe
rm mcp-publisher.tar.gz
# Move mcp-publisher.exe to a directory in your PATH
```
### Step 5: Authenticate
Authenticate based on your namespace:
**For `io.github.*` namespaces (GitHub OAuth)**:
```bash
mcp-publisher login github
```
**For custom domains like `com.yourcompany.*` (DNS authentication)**:
```bash
# Generate keypair
openssl genpkey -algorithm Ed25519 -out key.pem
# Get public key for DNS record
echo "yourcompany.com. IN TXT \"v=MCPv1; k=ed25519; p=$(openssl pkey -in key.pem -pubout -outform DER | tail -c 32 | base64)\""
# Add the TXT record to your DNS, then login
mcp-publisher login dns --domain yourcompany.com --private-key $(openssl pkey -in key.pem -noout -text | grep -A3 "priv:" | tail -n +2 | tr -d ' :\n')
```
### Step 6: Publish to the Registry
From your server directory, publish to the registry:
```bash
mcp-publisher publish
```
You'll see:
```
✓ Successfully published
```
### Step 7: Verify Publication
Check that your server appears in the registry:
```bash
curl "https://registry.modelcontextprotocol.io/v0/servers?search=io.github.username/server-name"
```
For complete documentation including remote deployments, troubleshooting, and CI/CD automation, see the [official publishing guide](https://github.com/modelcontextprotocol/registry/blob/main/docs/guides/publishing/publish-server.md).
## Contributions
While we value contributions to this MCP Server, the code is generated programmatically. Any manual changes added to internal files will be overwritten on the next generation.
We look forward to hearing your feedback. Feel free to open a PR or an issue with a proof of concept and we'll do our best to include it in a future release.
### MCP Server Created by [Speakeasy](https://www.speakeasy.com/?utm_source=flagsmith&utm_campaign=mcp-typescript)
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues