exasol-mcp-server


Nameexasol-mcp-server JSON
Version 0.6.0 PyPI version JSON
download
home_pageNone
SummaryExasol MCP Server
upload_time2025-08-28 10:44:10
maintainerNone
docs_urlNone
authorMikhail Beck
requires_python<3.14,>=3.10
licenseMIT
keywords exasol mcp server
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Exasol MCP Server

<p align="center">

<a href="https://opensource.org/licenses/MIT">
    <img src="https://img.shields.io/pypi/l/exasol_mcp_server" alt="License">
</a>
<a href="https://pypi.org/project/exasol_mcp_server/">
    <img src="https://img.shields.io/pypi/dm/exasol_mcp_server" alt="Downloads">
</a>
<a href="https://pypi.org/project/exasol_mcp_server/">
    <img src="https://img.shields.io/pypi/pyversions/exasol_mcp_server" alt="Supported Python Versions">
</a>
<a href="https://pypi.org/project/exasol_mcp_server/">
    <img src="https://img.shields.io/pypi/v/exasol_mcp_server" alt="PyPi Package">
</a>
</p>

Provides an LLM access to the Exasol database via MCP tools. Includes the
tools for reading the database metadata and executing data reading queries.

## Features

- Collects the metadata.
  * Enumerates the existing database objects, including schemas, tables, views, functions and UDF scripts.
  * Provides a filtering mechanisms to use with object enumeration.
  * Describes the database objects: for tables returns the list of columns and constraints; for functions and scripts - the list of input and output parameters.
- Executes provided data reading SQL query. Disallows any other type of query.

## Prerequisites

- [Python](https://www.python.org/) >= 3.10.
- MCP Client application, e.g. [Claude Desktop](https://claude.ai/download).

## Installation

Ensure the `uv` package is installed. If uncertain call
```bash
uv --version
```
To install `uv` on macOS please use `brew`, i.e.
```bash
brew install uv
```
For other operating systems, please follow [the instructions](https://docs.astral.sh/uv/getting-started/installation/)
in the `uv` official documentation.

## Using the server with the Claude Desktop.

To enable the Claude Desktop using the Exasol MCP server, the latter must be listed
in the configuration file `claude_desktop_config.json`. A similar configuration file
would exist for most other MCP Client applications.

To find the Claude Desktop configuration file, click on the Settings and navigate to the
“Developer” tab. This section contains options for configuring MCP servers and other
developer features. Click the “Edit Config” button to open the configuration file in
the editor of your choice.

Add the Exasol MCP server to the list of MCP servers as shown in this configuration
example.
```json
{
  "mcpServers": {
    "exasol_db": {
      "command": "uvx",
      "args": ["exasol-mcp-server@latest"],
      "env": {
        "EXA_DSN": "my-dsn, e.g. demodb.exasol.com:8563",
        "EXA_USER": "my-user-name",
        "EXA_PASSWORD": "my-password"
      }
    },
    "other_server": {}
  }
}
```

With these settings, `uv` will execute the latest version of the `exasol-mcp-server`
in an ephemeral environment, without installing it.

Alternatively, the `exasol-mcp-server` can be installed using the command:
```bash
uv tool install exasol-mcp-server@latest
```
For further details on installing and upgrading the server using `uv` see the
[uv Tools](https://docs.astral.sh/uv/concepts/tools/) documentation.

If the server is installed, the Claude configuration file should look like this:
```json
{
  "mcpServers": {
    "exasol_db": {
      "command": "exasol-mcp-server",
      "env": "same as above"
    }
  }
}
```

Please note that any changes to the Claude configuration file will only take effect
after restarting Claude Desktop.

## Configuration settings:

In the above example the server is configured to run using default settings.
The way the server runs can be fine-tuned by providing customised settings in
json format.

### Enable SQL queries

Most importantly, the server configuration specifies if reading the data using SQL
queries is enabled. Note that reading is disabled by default. To enable the data
reading, set the `enable_read_query` property to true:
```json
{
  "enable_read_query": true
}
```

### Set DB object listing filters

The server configuration settings can also be used to enable/disable or filter the
listing of a particular type of database objects. Similar settings are defined for
the following object types:
```
schemas,
tables,
views,
functions,
scripts
```
The settings include the following properties:
- `enable`: a boolean flag that enables or disables the listing.
- `like_pattern`: filters the output by applying the specified SQL LIKE condition to
the object name.
- `regexp_pattern`: filters the output by matching the object name with the specified
regular expression.

In the following example, the listing of schemas is limited to only one schema,
the listings of functions and scripts are disabled and the visibility of tables is
limited to tables with certain name pattern.

```json
{
  "schemas": {
    "like_pattern": "MY_SCHEMA"
  },
  "tables": {
    "like_pattern": "MY_TABLE%"
  },
  "functions": {
    "enable": false
  },
  "scripts": {
    "enable": false
  }
}
```

### Set language model

A language model can help the tools execute more precise search of requested database
object. The installed model should support the language of communication with LLM
and the language used for naming and documenting the database objects. The server uses
[spaCy](https://spacy.io/) NLP. To choose the right model, please check the list
of [supported languages and models](https://spacy.io/usage/models).
Below is an example of configuration settings that enables an English model.

```json
{
  "language_model": "en_core_web_sm"
}
```

### Add the server configuration to the MCP Client configuration

The customised settings can be specified directly in the MCP Client configuration file
using another environment variable - `EXA_MCP_SETTINGS`:
```json
{
  "env": {
    "EXA_DSN": "my-dsn",
    "EXA_USER": "my-user-name",
    "EXA_PASSWORD": "my-password",
    "EXA_MCP_SETTINGS": "{\"schemas\": {\"like_pattern\": \"MY_SCHEMA\"}"
  }
}
```
Note that double quotes in the json text must be escaped, otherwise the environment
variable value will be interpreted, not as a text, but as a part of the outer json.

Alternatively, the settings can be written in a json file. In this case, the
`EXA_MCP_SETTINGS` should contain the path to this file, e.g.
```json
{
  "env": {
    "EXA_DSN": "my-dsn",
    "EXA_USER": "my-user-name",
    "EXA_PASSWORD": "my-password",
    "EXA_MCP_SETTINGS": "path_to_settings.json"
  }
}
```

### Default server settings

The following json shows the default settings.
```json
{
  "schemas": {
    "enable": true,
    "like_pattern": "",
    "regexp_pattern": ""
  },
  "tables": {
    "enable": true,
    "like_pattern": "",
    "regexp_pattern": ""
  },
  "views": {
    "enable": false,
    "like_pattern": "",
    "regexp_pattern": ""
  },
  "functions": {
    "enable": true,
    "like_pattern": "",
    "regexp_pattern": ""
  },
  "scripts": {
    "enable": true,
    "like_pattern": "",
    "regexp_pattern": ""
  },
  "enable_read_query": false,
  "language_model": ""
}
```
The default values do not need to be repeated in the customised settings.

## License

This project is licensed under the MIT License - see the LICENSE file for details.

### Safe Harbor Statement: Exasol MCP Server & AI Solutions

Exasol’s AI solutions (including MCP Server) are designed to enable intelligent,
autonomous, and highly performant access to data through AI and LLM-powered agents.
While these technologies unlock powerful new capabilities, they also introduce
potentially significant risks.

By granting AI agents access to your database, you acknowledge that the behavior of
large language models (LLMs) and autonomous agents cannot be fully predicted or
controlled. These systems may exhibit unintended or unsafe behavior—including but not
limited to hallucinations, susceptibility to adversarial prompts, and the execution of
unforeseen actions. Such behavior may result in data leakage, unauthorized data
generation, or even data modification or deletion.

Exasol provides the tools to build AI-native workflows; however, you, as the implementer
and system owner, assume full responsibility for managing these solutions within your
environment. This includes establishing appropriate governance, authorization controls,
sandboxing mechanisms, and operational guardrails to mitigate risks to your organization,
your customers, and their data.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "exasol-mcp-server",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<3.14,>=3.10",
    "maintainer_email": null,
    "keywords": "exasol, MCP server",
    "author": "Mikhail Beck",
    "author_email": "mikhail.beck@exasol.com",
    "download_url": "https://files.pythonhosted.org/packages/21/a0/1f7f70bbf0bd6619dc71d1539c11b1ea77888c87cb865feae0d4ba34a817/exasol_mcp_server-0.6.0.tar.gz",
    "platform": null,
    "description": "# Exasol MCP Server\n\n<p align=\"center\">\n\n<a href=\"https://opensource.org/licenses/MIT\">\n    <img src=\"https://img.shields.io/pypi/l/exasol_mcp_server\" alt=\"License\">\n</a>\n<a href=\"https://pypi.org/project/exasol_mcp_server/\">\n    <img src=\"https://img.shields.io/pypi/dm/exasol_mcp_server\" alt=\"Downloads\">\n</a>\n<a href=\"https://pypi.org/project/exasol_mcp_server/\">\n    <img src=\"https://img.shields.io/pypi/pyversions/exasol_mcp_server\" alt=\"Supported Python Versions\">\n</a>\n<a href=\"https://pypi.org/project/exasol_mcp_server/\">\n    <img src=\"https://img.shields.io/pypi/v/exasol_mcp_server\" alt=\"PyPi Package\">\n</a>\n</p>\n\nProvides an LLM access to the Exasol database via MCP tools. Includes the\ntools for reading the database metadata and executing data reading queries.\n\n## Features\n\n- Collects the metadata.\n  * Enumerates the existing database objects, including schemas, tables, views, functions and UDF scripts.\n  * Provides a filtering mechanisms to use with object enumeration.\n  * Describes the database objects: for tables returns the list of columns and constraints; for functions and scripts - the list of input and output parameters.\n- Executes provided data reading SQL query. Disallows any other type of query.\n\n## Prerequisites\n\n- [Python](https://www.python.org/) >= 3.10.\n- MCP Client application, e.g. [Claude Desktop](https://claude.ai/download).\n\n## Installation\n\nEnsure the `uv` package is installed. If uncertain call\n```bash\nuv --version\n```\nTo install `uv` on macOS please use `brew`, i.e.\n```bash\nbrew install uv\n```\nFor other operating systems, please follow [the instructions](https://docs.astral.sh/uv/getting-started/installation/)\nin the `uv` official documentation.\n\n## Using the server with the Claude Desktop.\n\nTo enable the Claude Desktop using the Exasol MCP server, the latter must be listed\nin the configuration file `claude_desktop_config.json`. A similar configuration file\nwould exist for most other MCP Client applications.\n\nTo find the Claude Desktop configuration file, click on the Settings and navigate to the\n\u201cDeveloper\u201d tab. This section contains options for configuring MCP servers and other\ndeveloper features. Click the \u201cEdit Config\u201d button to open the configuration file in\nthe editor of your choice.\n\nAdd the Exasol MCP server to the list of MCP servers as shown in this configuration\nexample.\n```json\n{\n  \"mcpServers\": {\n    \"exasol_db\": {\n      \"command\": \"uvx\",\n      \"args\": [\"exasol-mcp-server@latest\"],\n      \"env\": {\n        \"EXA_DSN\": \"my-dsn, e.g. demodb.exasol.com:8563\",\n        \"EXA_USER\": \"my-user-name\",\n        \"EXA_PASSWORD\": \"my-password\"\n      }\n    },\n    \"other_server\": {}\n  }\n}\n```\n\nWith these settings, `uv` will execute the latest version of the `exasol-mcp-server`\nin an ephemeral environment, without installing it.\n\nAlternatively, the `exasol-mcp-server` can be installed using the command:\n```bash\nuv tool install exasol-mcp-server@latest\n```\nFor further details on installing and upgrading the server using `uv` see the\n[uv Tools](https://docs.astral.sh/uv/concepts/tools/) documentation.\n\nIf the server is installed, the Claude configuration file should look like this:\n```json\n{\n  \"mcpServers\": {\n    \"exasol_db\": {\n      \"command\": \"exasol-mcp-server\",\n      \"env\": \"same as above\"\n    }\n  }\n}\n```\n\nPlease note that any changes to the Claude configuration file will only take effect\nafter restarting Claude Desktop.\n\n## Configuration settings:\n\nIn the above example the server is configured to run using default settings.\nThe way the server runs can be fine-tuned by providing customised settings in\njson format.\n\n### Enable SQL queries\n\nMost importantly, the server configuration specifies if reading the data using SQL\nqueries is enabled. Note that reading is disabled by default. To enable the data\nreading, set the `enable_read_query` property to true:\n```json\n{\n  \"enable_read_query\": true\n}\n```\n\n### Set DB object listing filters\n\nThe server configuration settings can also be used to enable/disable or filter the\nlisting of a particular type of database objects. Similar settings are defined for\nthe following object types:\n```\nschemas,\ntables,\nviews,\nfunctions,\nscripts\n```\nThe settings include the following properties:\n- `enable`: a boolean flag that enables or disables the listing.\n- `like_pattern`: filters the output by applying the specified SQL LIKE condition to\nthe object name.\n- `regexp_pattern`: filters the output by matching the object name with the specified\nregular expression.\n\nIn the following example, the listing of schemas is limited to only one schema,\nthe listings of functions and scripts are disabled and the visibility of tables is\nlimited to tables with certain name pattern.\n\n```json\n{\n  \"schemas\": {\n    \"like_pattern\": \"MY_SCHEMA\"\n  },\n  \"tables\": {\n    \"like_pattern\": \"MY_TABLE%\"\n  },\n  \"functions\": {\n    \"enable\": false\n  },\n  \"scripts\": {\n    \"enable\": false\n  }\n}\n```\n\n### Set language model\n\nA language model can help the tools execute more precise search of requested database\nobject. The installed model should support the language of communication with LLM\nand the language used for naming and documenting the database objects. The server uses\n[spaCy](https://spacy.io/) NLP. To choose the right model, please check the list\nof [supported languages and models](https://spacy.io/usage/models).\nBelow is an example of configuration settings that enables an English model.\n\n```json\n{\n  \"language_model\": \"en_core_web_sm\"\n}\n```\n\n### Add the server configuration to the MCP Client configuration\n\nThe customised settings can be specified directly in the MCP Client configuration file\nusing another environment variable - `EXA_MCP_SETTINGS`:\n```json\n{\n  \"env\": {\n    \"EXA_DSN\": \"my-dsn\",\n    \"EXA_USER\": \"my-user-name\",\n    \"EXA_PASSWORD\": \"my-password\",\n    \"EXA_MCP_SETTINGS\": \"{\\\"schemas\\\": {\\\"like_pattern\\\": \\\"MY_SCHEMA\\\"}\"\n  }\n}\n```\nNote that double quotes in the json text must be escaped, otherwise the environment\nvariable value will be interpreted, not as a text, but as a part of the outer json.\n\nAlternatively, the settings can be written in a json file. In this case, the\n`EXA_MCP_SETTINGS` should contain the path to this file, e.g.\n```json\n{\n  \"env\": {\n    \"EXA_DSN\": \"my-dsn\",\n    \"EXA_USER\": \"my-user-name\",\n    \"EXA_PASSWORD\": \"my-password\",\n    \"EXA_MCP_SETTINGS\": \"path_to_settings.json\"\n  }\n}\n```\n\n### Default server settings\n\nThe following json shows the default settings.\n```json\n{\n  \"schemas\": {\n    \"enable\": true,\n    \"like_pattern\": \"\",\n    \"regexp_pattern\": \"\"\n  },\n  \"tables\": {\n    \"enable\": true,\n    \"like_pattern\": \"\",\n    \"regexp_pattern\": \"\"\n  },\n  \"views\": {\n    \"enable\": false,\n    \"like_pattern\": \"\",\n    \"regexp_pattern\": \"\"\n  },\n  \"functions\": {\n    \"enable\": true,\n    \"like_pattern\": \"\",\n    \"regexp_pattern\": \"\"\n  },\n  \"scripts\": {\n    \"enable\": true,\n    \"like_pattern\": \"\",\n    \"regexp_pattern\": \"\"\n  },\n  \"enable_read_query\": false,\n  \"language_model\": \"\"\n}\n```\nThe default values do not need to be repeated in the customised settings.\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n### Safe Harbor Statement: Exasol MCP Server & AI Solutions\n\nExasol\u2019s AI solutions (including MCP Server) are designed to enable intelligent,\nautonomous, and highly performant access to data through AI and LLM-powered agents.\nWhile these technologies unlock powerful new capabilities, they also introduce\npotentially significant risks.\n\nBy granting AI agents access to your database, you acknowledge that the behavior of\nlarge language models (LLMs) and autonomous agents cannot be fully predicted or\ncontrolled. These systems may exhibit unintended or unsafe behavior\u2014including but not\nlimited to hallucinations, susceptibility to adversarial prompts, and the execution of\nunforeseen actions. Such behavior may result in data leakage, unauthorized data\ngeneration, or even data modification or deletion.\n\nExasol provides the tools to build AI-native workflows; however, you, as the implementer\nand system owner, assume full responsibility for managing these solutions within your\nenvironment. This includes establishing appropriate governance, authorization controls,\nsandboxing mechanisms, and operational guardrails to mitigate risks to your organization,\nyour customers, and their data.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Exasol MCP Server",
    "version": "0.6.0",
    "project_urls": null,
    "split_keywords": [
        "exasol",
        " mcp server"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aec10eb7e6dedf6684ceb2434e693bdae7d2318c9af8f0a18de167758fa7c352",
                "md5": "fc98c3984743ca06a1e0444f2039c54b",
                "sha256": "6a2a75aeae6538d8984df23f4eb9f49a7afd0bc0ee34e107075a3e87a1daf5ce"
            },
            "downloads": -1,
            "filename": "exasol_mcp_server-0.6.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "fc98c3984743ca06a1e0444f2039c54b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<3.14,>=3.10",
            "size": 24454,
            "upload_time": "2025-08-28T10:44:09",
            "upload_time_iso_8601": "2025-08-28T10:44:09.187187Z",
            "url": "https://files.pythonhosted.org/packages/ae/c1/0eb7e6dedf6684ceb2434e693bdae7d2318c9af8f0a18de167758fa7c352/exasol_mcp_server-0.6.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "21a01f7f70bbf0bd6619dc71d1539c11b1ea77888c87cb865feae0d4ba34a817",
                "md5": "a109a0f4592ccbe1d10933725a8fa403",
                "sha256": "228217516e562be173f7ca01f47cdaaab3e34fc3c5bd1da70155f482e15f66d7"
            },
            "downloads": -1,
            "filename": "exasol_mcp_server-0.6.0.tar.gz",
            "has_sig": false,
            "md5_digest": "a109a0f4592ccbe1d10933725a8fa403",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<3.14,>=3.10",
            "size": 23191,
            "upload_time": "2025-08-28T10:44:10",
            "upload_time_iso_8601": "2025-08-28T10:44:10.106979Z",
            "url": "https://files.pythonhosted.org/packages/21/a0/1f7f70bbf0bd6619dc71d1539c11b1ea77888c87cb865feae0d4ba34a817/exasol_mcp_server-0.6.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-28 10:44:10",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "exasol-mcp-server"
}
        
Elapsed time: 2.75876s