Felt MCP Server

Connect AI tools to Felt to turn natural language into maps, apps, and analysis.

Felt MCP Server uses the Module Context Protocol (MCP)arrow-up-right to connect to AI agents and unlock the full power of Felt. Create maps, query your data warehouse, run spatial analysis, and style your data – all from natural language prompts, using your existing Felt workspace permissions.

circle-check

What can do you with Felt MCP?

  • Make maps. Create, update, and organize maps and projects.

  • Bring in data. ArcGIS services, WMS, GeoJSON, Shapefiles, your workspace library, Felt's curated public library, or your cloud data sources.

  • Write SQL. Query Snowflake, BigQuery, Databricks, Postgres, or Redshift. Dialect-aware guidance is built in, so the agent doesn't have to guess.

  • Run spatial analysis. Query layers already on the map, join them, filter them, and generate new layers from the results.

  • Style automatically. Categorical, numeric, heatmap, H3. All in Felt Style Language (FSL), with no hand-authored JSON.

  • Collaborate. Pins, routes, polygons, and notes via GeoJSON. Permissions are inherited from your workspace, so anything the agent produces is immediately shareable under the access controls you already have.

Connecting to Felt MCP

The Felt MCP Server uses Streamable HTTP transport with OAuth authentication.

Server URL: https://felt.com/mcp

When you first connect, your browser will open and prompt you to log in to Felt and authorize access. There are no API keys to manage.

Claude Code

Run this command in your terminal:

--scope user makes Felt available across all projects. Omit it to scope to the current project, or use --scope project to commit it to a shared .mcp.json.

Verify in Claude Code with /mcp or:

Claude Desktop

  1. Open Claude Desktop and go to Settings → Connectors.

  2. Scroll to the bottom and click Add custom connector.

  3. Enter:

    • Name: Felt

    • Remote MCP server URL: https://felt.com/mcp

  4. Click Add, then click Connect and complete the OAuth login in your browser.

circle-exclamation

ChatGPT

  1. Open ChatGPT and go to Settings → Apps & Connectors → Advanced settings.

  2. Toggle Developer Mode on.

  3. Return to Apps & Connectors and click Add new connector.

  4. Fill in:

    • Name: Felt

    • MCP Server URL: https://felt.com/mcp

    • Authentication: OAuth

    • Check I trust this application

  5. Click Create and complete the Felt OAuth login.

circle-exclamation

Codex

Edit ~/.codex/config.toml (or run codex mcp add) and add:

Then authenticate:

Verify in Codex with /mcp or:

Gemini CLI

Edit ~/.gemini/settings.json (user-level) or .gemini/settings.json (project-level) and add:

Restart Gemini CLI. Inside the CLI:

This launches the Felt OAuth flow. Once authorized, run /mcp to confirm Felt is connected.

You can also use the equivalent CLI command: gemini mcp add -t http felt https://felt.com/mcp

VS Code (GitHub Copilot)

  1. Open the Command Palette (Cmd/Ctrl+Shift+P) and run MCP: Open User Configuration (for global) or create .vscode/mcp.json in your project (for workspace-scoped).

  2. Add:

  1. Save the file. A Start CodeLens appears above the server entry — click it to connect and complete OAuth in your browser.

  2. Open Copilot Chat, switch to Agent mode, and click the tools icon to confirm Felt's tools are listed.

Cursor

  1. Open Cursor Settings → Tools & MCP and click + New MCP Server, or create ~/.cursor/mcp.json (global) or .cursor/mcp.json (project) directly.

  2. Add:

  1. Save the file. Return to Settings → Tools & MCP — Cursor will start the connection and prompt you for OAuth in a browser window.

  2. A green dot next to felt confirms it's connected. Felt's tools are then available in Agent mode (Cmd/Ctrl+I).

Tool Reference

A reference of every tool exposed by the Felt MCP server, grouped by purpose.

Account & workspace

Tool
Description

who_am_i

Get information about the currently logged-in user and their Felt workspace.

Projects

Tool
Description

list_projects

List all projects in the current workspace.

get_project

Get details about a specific project, including the maps it contains.

Maps

Tool
Description

create_map

Create a new map in the user's Felt workspace. Optionally sets a title, basemap style, center coordinates, and zoom level.

list_maps

List the maps the current user can access, ordered by most recently visited. Supports a fuzzy title filter.

get_map

Get a map's metadata, including its title, location, basemap, and layer count.

update_map

Update a map's title, basemap style, viewport (center and zoom), or sharing/visibility setting.

delete_map

Delete a map.

Layers – discovery & inspection

Tool
Description

get_map_layers

Get the list of layers on a map, organized by layer group. Includes layer names, IDs, visibility, and geometry types.

get_layer_properties

Get a layer's name, description, geometry type, and style. Useful before modifying styling.

inspect_layer_columns

Get the full column schema for a layer: column names, types, sample values, and summary stats. Returns a queryable table name when applicable.

browse_felt_library

List Felt's curated library data — boundaries, demographics, infrastructure, and more — that can be added to maps.

browse_workspace_library

List layers published to the workspace library, available for use on multiple maps.

Layers – creating & adding

Tool
Description

duplicate_layer_to_map

Copy a layer onto a map. The source can be a Felt library dataset, a workspace library layer, or a layer from another map.

import_layer_from_url

Add a new layer to a map by fetching from a URL. Supports ArcGIS services, WMS, GeoJSON, Shapefiles, and other formats.

prepare_file_upload

Get a presigned S3 upload slot for adding a local file to a map as a new layer.

upload_contents_to_map

Add inline text content (CSV, TSV, GeoJSON, KML, GPX) to a map as a new layer without performing a separate file upload. Best for small data already available as a string.

add_data_source_table_to_map

Add an entire table from a connected data source to a map as a new layer.

create_layer_from_data_source

Create a new map layer from a SQL query against a connected data source. The query must include a geometry column.

Layers – updating & deleting

Tool
Description

update_layer_properties

Update a layer's name, description, or FSL style. Only the fields you supply are changed.

refresh_url_layer

Re-fetch a URL-backed layer's source to pick up the latest data. Processing is asynchronous.

refresh_data_source_layer

Re-run a data-source-backed layer's query (or re-read its table) to pick up the latest data. Processing is asynchronous.

poll_layer_processing_status

Wait for a layer to finish processing. Returns in_progress, completed, or failed. Configurable maximum wait of 1, 5, 10, or 30 seconds.

delete_layer

Delete a layer from a map.

Data sources

Tool
Description

browse_data_sources

List external databases connected to the workspace (Postgres, Snowflake, BigQuery, etc.), including their type and the SQL dialect to use.

browse_data_source_tables

List the tables and saved queries available inside a connected database. Does not include column schemas.

inspect_data_source_table_columns

Get the column names and types for a specific table inside a connected database.

get_sql_guidance

Load the SQL dialect reference and syntax rules for a data source or set of layers before writing queries. The correct dialect is resolved automatically.

get_tabular_data_from_data_source

Run a read-only SELECT query against a connected data source and return tabular results to the user. Does not render anything on the map.

Styling

Tool
Description

generate_fsl

Generate FSL (Felt Style Language) JSON for any layer type (points, lines, polygons, rasters, heatmaps, H3 hexbins). Supports colors, classification, labels, popups, filters, and icons. When given a layer ID, inspects the layer's data to make informed styling choices.

Annotations

Tool
Description

list_annotations

Return the editable annotations on a map (Place, Rectangle, Circle, Text, Note, Link, Line). Other annotation types drawn in the UI are not included.

upsert_annotations

Create or update annotations on a map. Omit id to create; include id to update an existing annotation in place.

delete_annotation

Delete a single annotation from a map.

Last updated

Was this helpful?