English | 中文
The Flashduty MCP Server is a Model Context Protocol (MCP) server that provides seamless integration with Flashduty APIs, enabling advanced incident management and automation capabilities for developers and tools.
- Automating Flashduty workflows and processes.
- Extracting and analyzing data from Flashduty.
- Building AI-powered tools and applications that interact with Flashduty.
The remote Flashduty MCP Server provides the easiest method for getting up and running with Flashduty integration. If your MCP host does not support remote MCP servers, you can use the local version of the Flashduty MCP Server instead.
- An MCP host that supports the latest MCP specification and remote servers, such as Cursor.
- A Flashduty APP key from your Flashduty account.
For Cursors that support Remote MCP, use the following configuration:
{
"mcpServers": {
"flashduty": {
"url": "https://mcp.flashcat.cloud/flashduty",
"authorization_token": "Bearer <your_flashduty_app_key>"
}
}
}Note: Refer to your MCP host's documentation for the correct syntax and location for remote MCP server setup.
- To run the server in a container, you will need to have Docker installed and running.
- You will need a Flashduty APP key from your Flashduty account.
Add the following JSON block to your Cursor MCP configuration.
{
"mcpServers": {
"flashduty": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"FLASHDUTY_APP_KEY",
"registry.flashcat.cloud/public/flashduty-mcp-server"
],
"env": {
"FLASHDUTY_APP_KEY": "your_flashduty_app_key"
}
}
}
}Besides building from source, you can also download a pre-compiled version for your operating system directly from the project's GitHub Releases, which is a faster and more convenient option.
If you prefer to build from source, you can use go build to build the binary in the cmd/flashduty-mcp-server directory. You can provide the APP key either via environment variable or command-line argument.
You should configure your MCP host to use the built executable as its command. For example:
Via Environment Variable:
{
"mcpServers": {
"flashduty": {
"command": "/path/to/flashduty-mcp-server",
"args": ["stdio"],
"env": {
"FLASHDUTY_APP_KEY": "your_app_key_here"
}
}
}
}Via Command-line Argument:
{
"mcpServers": {
"flashduty": {
"command": "/path/to/flashduty-mcp-server",
"args": ["stdio", "--app-key", "your_app_key_here"]
}
}
}The Flashduty MCP Server supports several configuration options for different use cases. The main options include:
- Toolsets: Allows you to enable or disable specific groups of functionalities. Enabling only the toolsets you need can help the LLM with tool choice and reduce the context size.
- Read-Only Mode: Restricts the server to read-only operations, preventing any modifications and enhancing security.
- i18n: Supports customizing tool descriptions to suit different languages or team preferences.
Configuration methods are divided into Remote Service Configuration and Local Service Configuration.
When using the public remote service (https://mcp.flashcat.cloud/flashduty), you can dynamically configure it by appending query parameters to the URL.
Here is an example of configuring the remote service, specifying toolsets and read-only mode:
{
"mcpServers": {
"flashduty": {
"url": "https://mcp.flashcat.cloud/flashduty?toolsets=incidents,users&read_only=true",
"authorization_token": "Bearer <your_flashduty_app_key>"
}
}
}toolsets=...: Use a comma-separated list to specify the toolsets to enable (e.g.,incidents,users,channels).read_only=true: Enables read-only mode.
When running the service locally via Docker or from source, you have full configuration control.
This is the most common method for local configuration, especially in a Docker environment.
| Variable | Description | Required | Default |
|---|---|---|---|
FLASHDUTY_APP_KEY |
Flashduty APP key | ✅ | - |
FLASHDUTY_TOOLSETS |
Toolsets to enable (comma-separated) | ❌ | All toolsets |
FLASHDUTY_READ_ONLY |
Restrict to read-only operations (1 or true) |
❌ | false |
FLASHDUTY_OUTPUT_FORMAT |
Output format for tool results (json or toon) |
❌ | json |
FLASHDUTY_BASE_URL |
Flashduty API base URL | ❌ | https://api.flashcat.cloud |
FLASHDUTY_LOG_FILE |
Log file path | ❌ | stderr |
FLASHDUTY_ENABLE_COMMAND_LOGGING |
Enable command logging | ❌ | false |
Docker Example:
docker run -i --rm \
-e FLASHDUTY_APP_KEY=<your-app-key> \
-e FLASHDUTY_TOOLSETS="incidents,users,channels" \
-e FLASHDUTY_READ_ONLY=1 \
registry.flashcat.cloud/public/flashduty-mcp-serverIf you build and run the binary directly from the source, you can use command-line arguments.
./flashduty-mcp-server stdio \
--app-key your_app_key_here \
--toolsets incidents,users,channels \
--read-onlyAvailable command-line arguments:
--app-key: Flashduty APP key (alternative toFLASHDUTY_APP_KEYenvironment variable)--toolsets: Comma-separated list of toolsets to enable--read-only: Enable read-only mode--output-format: Output format for tool results (jsonortoon)--base-url: Flashduty API base URL--log-file: Path to log file--enable-command-logging: Enable command logging--export-translations: Save translations to a JSON file
Note: Command-line arguments take precedence over environment variables. For toolsets configuration, if both
FLASHDUTY_TOOLSETSenvironment variable and--toolsetsargument are set, the command-line argument takes priority.
The server supports TOON (Token-Oriented Object Notation) format for tool results, which can significantly reduce token usage (30-50%) when working with LLMs.
JSON output (default):
{"members":[{"person_id":1,"person_name":"Alice"},{"person_id":2,"person_name":"Bob"}],"total":2}TOON output (compact):
members[2]{person_id,person_name}:
1,Alice
2,Bob
total: 2
To enable TOON format:
Via Environment Variable:
export FLASHDUTY_OUTPUT_FORMAT=toonVia Command-line:
./flashduty-mcp-server stdio --output-format toonNote: TOON format is particularly effective for arrays of objects with uniform fields (e.g., member lists, incident lists). Most modern LLMs can parse TOON format naturally.
The feature to override tool descriptions is only available for local deployments. You can achieve this by creating a flashduty-mcp-server-config.json file or by setting environment variables.
Via JSON File:
Create flashduty-mcp-server-config.json in the same directory as the binary:
{
"TOOL_CREATE_INCIDENT_DESCRIPTION": "an alternative description",
"TOOL_LIST_TEAMS_DESCRIPTION": "List all teams in Flashduty account"
}Via Environment Variables:
export FLASHDUTY_MCP_TOOL_CREATE_INCIDENT_DESCRIPTION="an alternative description"The following toolsets are available (all are on by default). You can also use all to enable all toolsets.
| Toolset | Description | Tools |
|---|---|---|
incidents |
Incident lifecycle management | 6 |
changes |
Change record query | 1 |
status_page |
Status page management | 4 |
users |
Member and team query | 2 |
channels |
Collaboration space and escalation rules | 2 |
fields |
Custom field definitions | 1 |
Total: 16 tools
query_incidents- Query incidents with enriched data (timeline, alerts, responders)create_incident- Create a new incidentupdate_incident- Update incident (title, description, severity, custom_fields)ack_incident- Acknowledge incidentsclose_incident- Close (resolve) incidentslist_similar_incidents- Find similar historical incidents
query_changes- Query change records with filters
query_status_pages- Query status pages with full configurationlist_status_changes- List change events on status pagecreate_status_incident- Create incident on status pagecreate_change_timeline- Add timeline update to status change
query_members- Query members with optional filtersquery_teams- Query teams with member details
query_channels- Query collaboration spacesquery_escalation_rules- Query escalation rules for a channel
query_fields- Query custom field definitions
The exported Go API of this module should currently be considered unstable, and subject to breaking changes. In the future, we may offer stability; please file an issue if there is a use case where this would be valuable.
This project is licensed under the MIT License - see the LICENSE file for details.