Skip to main content
Glama
KerryanOPMace

INSEE MCP Server

README.md
# INSEE MCP Server

MCP (Model Context Protocol) server for accessing INSEE data via the SIRENE API, BDM, and official nomenclatures.

## One-line Installation

### With uv (recommended)
```bash
# Install and launch directly
API_KEY="your_insee_api_key" uv run --with insee-mcp insee-mcp
```
or if you prefer to use uvx
```bash
# Install and launch directly
API_KEY="your_insee_api_key" uvx insee-mcp insee-mcp
```

### Standard MCP Configuration
Add this to your MCP configuration (e.g., Claude Desktop, or Copilot):

```json
{
  "mcpServers": {
    "insee": {
      "command": "uvx",
      "args": ["insee-mcp", "insee-mcp"],
      "env": {
        "API_KEY": "your_insee_api_key"
      }
    }
  }
}
```

### With pipx
```bash
API_KEY="your_insee_api_key" pipx run --spec git+https://github.com/KerryanOPMace/mcp-insee.git insee-mcp
```

## Quick Installation

### Direct Installation (recommended)

```bash
# Install directly from GitHub
pip install git+https://github.com/KerryanOPMace/mcp-insee.git

# Set your INSEE API key
export API_KEY="your_insee_api_key"

# Start the server
insee-mcp
```

### Installation with pipx (isolated)

```bash
# Install with pipx (isolated environment)
pipx install git+https://github.com/KerryanOPMace/mcp-insee.git

# Set the API key
export API_KEY="your_insee_api_key"

# Start the server
insee-mcp
```

### Developer Installation

```bash
# Clone the repository
git clone https://github.com/KerryanOPMace/mcp-insee.git
cd mcp-insee

# Install in development mode
pip install -e .
```

If you wish to contribute to the project, please create issues and branches. You can merge request and then a supervisor will review it before merging

## Configuration

### INSEE API Key

You must obtain an API key from the [INSEE API portal](https://api.insee.fr/) and configure it:

**Linux/Mac:**
```bash
export API_KEY="your_insee_api_key"
```

**Windows (PowerShell):**
```powershell
$env:API_KEY="your_insee_api_key"
```

**Windows (CMD):**
```cmd
set API_KEY=your_insee_api_key
```

## Available Tools

- `search_company`: Search for companies in the SIRENE database
  - By SIREN, SIRET, or company name
  - Fuzzy search available


## STREAMABLE-HTTP TRANSPORT

## Server Access

Once started, the MCP server is accessible at:
- **URL**: `http://127.0.0.1:8000/mcp`
- **Transport**: Streamable HTTP

### Client Test

```python
from fastmcp import Client
import asyncio

async def test():
    client = Client("http://127.0.0.1:8000/mcp")
    async with client:
        # List tools
        tools = await client.list_tools()
        print(tools)
        
        # Search for a company
        result = await client.call_tool("search_company", {
            "siret": "44302124100072"
        })
        print(result)

asyncio.run(test())
```

### Requirements

- Python 3.8+
- Valid INSEE API key
- Internet access for API requests



## STDIO TRANSPORT

## Server Access

Once started, the MCP server runs locally according to the standard io protocol

### Client Test

```python
from fastmcp import Client
import asyncio

async def test():
    client = Client("http://127.0.0.1:8000/mcp")
    async with client:
        # List tools
        tools = await client.list_tools()
        print(tools)
        
        # Search for a company
        result = await client.call_tool("search_company", {
            "siret": "44302124100072"
        })
        print(result)

asyncio.run(test())
```

### Requirements

- Python 3.8+
- Valid INSEE API key
- Internet access for API requests

## License

MIT License

TDQS

B3.2/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no ambiguity. The agent cannot confuse it with any other tool.

Naming Consistency5/5

Single tool name 'search_company' follows a clear verb_noun pattern, consistent within itself.

Tool Count2/5

A single search tool is too sparse for a domain like INSEE company data, which typically requires multiple operations (e.g., get details, list results, paginate).

Completeness1/5

The server covers only a basic search, missing essential operations like retrieving full company details, filtering, or pagination, making it severely incomplete for practical use.

Maintenance

ActivityInactive
ResponsivenessNo issues