# Integrating MCP

> **Please note:** This integration will be deprecated on April 30th, 2026. For new integrations with MCP, please refer to [Integrating MCP V2](https://docs.firefly.ai/integrations/integrating-mcp-v2).

The Firefly MCP (Model Context Protocol) server is a TypeScript-based server that enables seamless integration with the Firefly platform. It allows you to discover, manage, and codify resources across your Cloud and SaaS accounts connected to Firefly.

## Features

* **Resource Discovery:** Find any resource in your Cloud and SaaS accounts
* **Resource Codification:** Convert discovered resources into Infrastructure as Code
* **Secure Authentication:** Uses FIREFLY\_ACCESS\_KEY and FIREFLY\_SECRET\_KEY for secure communication
* **Easy Integration:** Works seamlessly with Claude and Cursor

## Generating MCP Configuration via Firefly UI (Hosted MCP Server)

You can easily generate the MCP configuration for Cursor, Claude, or any other MCP client directly from the Firefly UI. This method allows you to securely connect to the Firefly-hosted MCP server with authentication, without running a local MCP server.

### Steps

1. **Open the Firefly UI** and navigate to the MCP Server integration section (**Settings > Integrations > MCP Server**).
2. **Click on "Generate MCP configuration"**. The UI will generate a configuration block for you, including the required authentication.
3. **Copy the generated configuration** and use it in your MCP client (e.g., Cursor, Claude).

#### Example generated configuration

```jsonc
{
  // The 'mcpServers' object defines available MCP servers
  "mcpServers": {
    "firefly": {
      // URL to the Firefly-hosted MCP server with authentication token
      "url": "https://mcp.firefly.ai/sse?auth=YOUR_AUTH_TOKEN",
      "headers": {
        // Authorization header for secure access
        "Authorization": "Basic YOUR_AUTH_TOKEN"
      }
    }
  }
}
```

* `YOUR_AUTH_TOKEN` will be provided by the Firefly UI. It is a sensitive value and should be kept secret. This token contains your authentication credentials and should never be shared publicly or committed to version control systems.
* This configuration can be used directly in Cursor, Windsurf, or any compatible MCP client.

> **Note:** This method is an alternative to running your own local MCP server. It is recommended for users who want a quick and secure setup without managing server infrastructure.

### Setting Up in Claude Desktop

Claude Desktop offers a simplified way to connect to the Firefly Remote MCP Server directly through its user interface, without manually editing configuration files.

#### Steps

1. **Generate your MCP URL** from the Firefly UI (**Settings > Integrations > MCP Server**) as described above.
2. **Open Claude Desktop** and navigate to **Settings**.
3. **Go to the Connectors section** and click on **"Add Custom Connection"**.
4. **Fill in the connection details:**
   * **Name:** `Firefly` (or any name you prefer).
   * **URL:** Paste the complete URL from the Firefly UI (e.g., `https://mcp.firefly.ai/sse?auth=YOUR_AUTH_TOKEN`).
5. **Save the connection** and Claude Desktop will automatically connect to the Firefly MCP Server.

> **Note:** This method is the easiest way to set up the Remote MCP connection in Claude Desktop. The URL already contains your authentication token, so no additional headers or configuration is needed.

## Running the MCP Server Locally

### Prerequisites

* Node.js (v14 or higher)
* npm or yarn
* Firefly account with generated access keys

### Installation

You can run the Firefly MCP server directly using NPX:

```bash
npx @fireflyai/firefly-mcp
```

#### Environment Variables

You can provide your Firefly credentials in two ways:

1. Using environment variables:

```bash
FIREFLY_ACCESS_KEY=your_access_key FIREFLY_SECRET_KEY=your_secret_key npx @fireflyai/firefly-mcp
```

2. Using arguments:

```bash
npx @fireflyai/firefly-mcp --access-key your_access_key --secret-key your_secret_key
```

#### Stdio

Update the `mcp.json` file with the following:

```json
{
  "mcpServers": {
    "firefly": {
      "command": "npx",
      "args": ["-y", "@fireflyai/firefly-mcp"],
      "env": {
        "FIREFLY_ACCESS_KEY": "your_access_key",
        "FIREFLY_SECRET_KEY": "your_secret_key"
      }
    }
  }
}
```

#### SSE

Run the MCP server using one of the methods above with the following command:

```bash
npx @fireflyai/firefly-mcp --sse --port 6001
```

Update the `mcp.json` file with the following:

```json
{
  "mcpServers": {
    "firefly": {
      "url": "http://localhost:6001/sse"
    }
  }
}
```

## Usage

### Using with Cursor

1. Start the MCP server using one of the methods above
2. Use the Cursor extension to connect to the MCP server - see [Cursor Model Context Protocol documentation](https://docs.cursor.com/context/model-context-protocol)
3. Use natural language to query your resources

#### Example:

**Prompt**

```
Find all "ubuntu-prod" EC2 instance in 123456789012 AWS account and codify it into Terraform
```

**Response**

```hcl
resource "aws_instance" "ubuntu-prod" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t3.micro"
}
```

## Demo

[Video](https://github.com/user-attachments/assets/0986dff5-d433-4d82-9564-876b8215b61e)

## Contributing

1. Fork the [repository](https://github.com/gofireflyio/firefly-mcp)
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'feat: Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

## License

This project is licensed under the MIT License - see the [LICENSE](https://github.com/gofireflyio/firefly-mcp/blob/HEAD/LICENSE) file for details.
