Token导航 LogoToken导航

MCP Server · 数据服务

MCP Sqlite Server (Gmaron)

一个基于Python的MCP服务器,通过工具和资源将SQLite数据库暴露给任何MCP客户端使用,支持IDE集成和RAG功能。

stdio官方级别未说明来源级核验工具 3
SQLite数据库服务PythonRAG本地部署

快速开始

作者 / 组织
gmaron
提供方
gmaron
运行时
Python

工具数量

3

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

MCP Sqlite Server (Gmaron) 属于数据服务类 MCP Server,公开资料标注 3 个工具,通过stdio 本地进程接入,客户端适配情况以官方文档为准,有可以直接复制的安装命令;接入前先确认权限范围。

分类

数据服务

传输方式

stdio

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

安装命令

python -m venv .venv

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Python,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 3 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

🗄️ MCP Server SQLite

Servidor MCP (Model Context Protocol) escrito en Python que expone una base de datos SQLite a través de herramientas (*tools*) y recursos (*resources*) consumibles por cualquier cliente MCP — incluidos IDEs como Antigravity.


📖 Tabla de contenidos

  1. ¿Qué es MCP?
  2. Arquitectura del proyecto
  3. Paso a paso: cómo lo construí
  4. Requisitos previos
  5. Instalación
  6. Configuración
  7. Ejecución
  8. Tests
  9. Probarlo en Antigravity IDE
  10. Estructura de directorios
  11. Skills (estándares de código)
  12. Licencia

¿Qué es MCP?

El Model Context Protocol (MCP) es un estándar abierto que conecta sistemas de IA con fuentes de datos y herramientas externas. Un servidor MCP expone:

ConceptoDescripción
ToolsFunciones que un modelo puede invocar (ej. collect_user_info, obtener_usuarios).
ResourcesDatos de solo lectura accesibles mediante URIs (ej. db://usuarios/todos).
MiddlewareCapas intermedias para logging, rate-limiting, manejo de errores, etc.

Arquitectura del proyecto

El proyecto sigue los principios de Clean Architecture para mantener las responsabilidades separadas:

┌─────────────────────────────────────────────────────────────┐
│                        main.py                              │
│               (FastMCP + Middleware chain)                  │
└──────────┬──────────────────────────┬───────────────────┬───┘
           │ monta                    │ monta             │ monta
┌──────────▼──────────┐  ┌────────────▼───────────┐ ┌─────▼──────────────┐
│  queries (namespace)│  │transactions (namespace)│ │knowledge           │
│   obtener_usuarios  │  │  collect_user_info     │ │consultar_base_     │
│   resource_usuarios │  │  process_transaction   │ │conocimiento_autor  │
└──────────┬──────────┘  └────────────────────────┘ └─────┬──────────────┘
           │ usa                                          │ usa
┌──────────▼──────────────────────────────────────┬───────▼──────────────┐
│             application / use_cases             │   rag_langchain_adapter
│  get_users.py         query_knowledge.py        │         .py          │
└──────────┬────────────────────┬─────────────────┴───────┬──────────────┘
           │ depende de         │ depende de              │
┌──────────▼────────────────────▼─────────────────────────▼──────────────┐
│                   domain (entities & interfaces)                       │
│   usuario.py          user_repo.py          knowledge_repository.py    │
└────────────────────────────────────────────────────────────────────────┘

Capas:

  • Domain — Entidades (Usuario) e interfaces abstractas (UserRepository).
  • Application — Casos de uso que orquestan la lógica de negocio (GetUsersUseCase).
  • Infrastructure — Implementaciones concretas: repositorio SQLite, servidor MCP, middlewares de logging y rate-limiting con MongoDB.

Paso a paso: cómo lo construí

1. Definir el dominio

Creé la entidad Usuario con Pydantic y una interfaz abstracta UserRepository (patrón *Repository*) para desacoplar la capa de datos del negocio.

2. Implementar el caso de uso

GetUsersUseCase recibe un repositorio por inyección de dependencias y ejecuta la consulta, opcionalmente filtrando por nacionalidad.

3. Crear el repositorio SQLite

SqliteUserRepository implementa UserRepository usando sqlite3 de la stdlib. Conecta a un archivo .db y mapea filas a entidades Usuario.

4. Armar el servidor MCP con FastMCP

En main.py inicialicé una instancia de FastMCP y monté dos sub-servidores como namespaces independientes:

  • queries — operaciones de lectura sobre la base de datos.
  • transactions — tools de prueba (collect_user_info, process_transaction).

5. Crear el sub-servidor de queries

queries.py es otro FastMCP que expone el tool obtener_usuarios y el resource db://usuarios/todos. Se monta con mcp.mount(queries, namespace="queries").

6. Crear el sub-servidor de transactions

transactions.py expone collect_user_info (saludo de prueba) y process_transaction (demuestra logging contextual). Se monta con mcp.mount(transactions, namespace="transactions").

7. Agregar middlewares

Se encadenaron middlewares para:

  • Error handling (ErrorHandlingMiddleware) — captura excepciones no manejadas.
  • Rate limit event (RateLimitEventMiddleware) — registra en MongoDB cuando se excede el rate-limit.
  • Rate limiting (SlidingWindowRateLimitingMiddleware) — ventana deslizante de 25 req/min.
  • Logging stdout (LoggingMiddleware) — log estándar por consola.
  • Tool call logging (ToolCallLoggingMiddleware) — persiste cada llamada a tool en MongoDB.

8. Poblar la base de datos de ejemplo

setup_db.py genera 10 usuarios aleatorios con datos representativos.


Funcionalidad RAG (Knowledge Base)

El servidor incluye una tool montada en el namespace knowledge orientada a consultar una base de conocimiento usando Generative AI (Gemini) y una base de datos vectorial local (ChromaDB).

Esta funcionalidad fue construida respetando la Clean Architecture del proyecto:

  • Dominio: Se define la interfaz KnowledgeRepository como contrato para las consultas, protegiendo al núcleo del uso de librerías externas.
  • Caso de Uso: query_knowledge.py orquesta la consulta de información sin acoplarse a LangChain o a FastMCP.
  • Adaptador: rag_langchain_adapter.py provee la implementación concreta del repositorio utilizando LangChain para integrarse con ChromaDB y Gemini.

Requisitos previos

RequisitoVersión mínima
Python3.10+
Docker y Docker Compose(para MongoDB de logging)
Nota: MongoDB es opcional. Si no está corriendo, el servidor funciona pero los middlewares de logging a Mongo fallarán silenciosamente en la primera llamada.

Instalación

# 1. Clonar el repositorio
git clone https://github.com//mcp-server-sqlite.git
cd mcp-server-sqlite

# 2. Crear entorno virtual
python -m venv .venv
source .venv/bin/activate   # macOS / Linux

# 3. Instalar dependencias (o usar uv sync)
pip install -e .

# 4. Copiar variables de entorno
cp .env.example .env
# Editá .env si necesitás cambiar DB_PATH, MONGO_URI, etc.

# 5. (Opcional) Levantar MongoDB para logging
docker compose up -d

# 6. Crear la base de datos de ejemplo
python setup_db.py

Configuración

Toda la configuración se gestiona mediante variables de entorno en el archivo .env. El servidor usa python-dotenv para cargarlas automáticamente al iniciar.

# ─── App ───
PYTHONPATH=.
DB_PATH=./users.db

# ─── Conocimiento (RAG) ───
GEMINI_API_KEY=tu_api_key_aqui
CHROMA_DB_PATH=./etl/chroma_db

# ─── MongoDB (debe coincidir con docker-compose.yml) ───
MONGO_URI=mongodb://localhost:27017/
MONGO_DATABASE=mcp_logs

Las variables MONGO_URI y MONGO_DATABASE están sincronizadas con docker-compose.yml — el compose las lee del mismo .env usando ${MONGO_URI:-fallback}. Esto significa que si cambiás el nombre de la base de datos o la URI, solo necesitás modificar .env y ambos (app y Docker) se actualizan.


Ejecución

Modo HTTP (Streamable HTTP)

fastmcp run main.py:mcp --transport http --port 8000

El servidor arranca en http://127.0.0.1:8000/mcp.

Modo desarrollo con hot-reload

fastmcp run main.py:mcp --transport http --port 8000 --reload

Modo desarrollo con MCP Inspector

fastmcp dev main.py

Esto abre el MCP Inspector en el navegador para probar tools y resources de forma interactiva.


Tests

El proyecto incluye tests unitarios y de integración con pytest.

Tests unitarios (no requieren servidor)

pytest tests/unit/ -v

Estos tests usan una base de datos SQLite temporal que se crea y destruye automáticamente en cada ejecución. Cubren:

ArchivoQué testeaTests
test_usuario.pyEntidad Pydantic: validación, serialización6
test_repository.pyRepositorio SQLite: consultas, filtros8
test_use_cases.pyCaso de uso con DB real y con mocks6

Tests de integración (requieren servidor corriendo)

# Terminal 1: levantar servicios
docker compose up -d
fastmcp run main.py:mcp --transport http --port 8000

# Terminal 2: correr tests
pytest tests/integration/ -v

Si el servidor no está corriendo, estos tests se skipean automáticamente.

Todos los tests juntos

pytest -v

Test de rate-limiting (lento)

pytest -v -m slow

Este test hace 30 llamadas rápidas y verifica que el rate-limiter bloquee a partir de la 26.


Probarlo en Antigravity IDE

1. Configurar el servidor MCP en Antigravity

Agregá la siguiente entrada en tu archivo de configuración MCP del IDE (mcp_config.json o equivalente):

{
  "mcpServers": {
    "sqlite-server": {
      "command": "/ruta/a/tu/.venv/bin/python",
      "args": ["/ruta/a/tu/mcp-server-sqlite/main.py"],
      "env": {
        "PYTHONPATH": "/ruta/a/tu/mcp-server-sqlite",
        "DB_PATH": "/ruta/a/tu/mcp-server-sqlite/users.db",
        "MONGO_URI": "mongodb://localhost:27017/",
        "MONGO_DATABASE": "mcp_logs",
        "GEMINI_API_KEY": "tu_api_key_aqui"
      }
    }
  }
}
Reemplazá /ruta/a/tu/ con las rutas reales de tu sistema.

2. Reiniciar Antigravity

Una vez guardada la configuración, reiniciá el IDE para que detecte el nuevo servidor MCP.

3. Usar los tools desde el chat

En el chat de Antigravity podés invocar directamente las herramientas:

  • transactions_collect_user_info — *"Registrá un usuario llamado Juan de 30 años"*
  • queries_obtener_usuarios — *"Obtené todos los usuarios"* o *"Listá los usuarios de Argentina"*
  • transactions_process_transaction — *"Procesá la transacción TX-001 por 150.50"*

4. Ver resultados

Los resultados se mostrarán en línea en el chat. Si tenés MongoDB corriendo, podés inspeccionar los logs en http://localhost:8081 (Mongo Express).


Estructura de directorios

mcp-server-sqlite/
├── main.py                              # Punto de entrada principal
├── setup_db.py                          # Script para crear la DB de ejemplo
├── pyproject.toml                       # Configuración del proyecto Python
├── requirements.txt                     # Dependencias pip
├── docker-compose.yml                   # MongoDB + Mongo Express
├── .env.example                         # Template de variables de entorno
├── .gitignore
├── .agents/
│   └── workflows/
│       ├── skill-clean-programming-python.md
│       └── skill-architecture-python.md
├── app/
│   ├── domain/
│   │   ├── entities/
│   │   │   └── usuario.py               # Entidad Usuario (Pydantic)
│   │   └── interfaces/
│   │       ├── user_repository.py        # Interfaz abstracta de usuarios
│   │       └── knowledge_repository.py   # Interfaz abstracta RAG
│   ├── application/
│   │   └── use_cases/
│   │       ├── get_users.py              # Caso de uso usuarios
│   │       └── query_knowledge.py        # Caso de uso RAG
│   └── infrastructure/
│       ├── adapters/
│       │   └── rag_langchain_adapter.py  # Adaptador de Langchain/Chroma
│       ├── database/
│       │   └── sqlite_repository.py      # Repositorio SQLite
│       ├── entrypoints/
│       │   └── mcp/resources/
│       │       ├── queries.py            # Sub-servidor de queries
│       │       ├── transactions.py       # Sub-servidor de transactions
│       │       └── knowledge.py          # Sub-servidor RAG
│       └── middleware/
│           ├── mongo_config.py                  # Config centralizada de MongoDB PMI
│           ├── tool_call_logging_middleware.py   # Logging de cada tool call
│           └── rate_limit_event_middleware.py    # Logging de rate-limit events
├── tests/
│   ├── conftest.py                      # Fixtures compartidos
│   ├── unit/
│   │   ├── test_usuario.py              # Tests entidad Usuario
│   │   ├── test_repository.py           # Tests repositorio SQLite
│   │   └── test_use_cases.py            # Tests caso de uso
│   └── integration/
│       └── test_mcp_server.py           # Tests contra servidor MCP
└── README.md

Skills (estándares de código)

El proyecto incluye skills en .agents/workflows/ que documentan los estándares de calidad aplicados:

SkillQué define
skill-clean-programming-python.mdTyping estricto (PEP 585), naming conventions, funciones clean, testing TDD
skill-architecture-python.mdClean Architecture, SOLID, inyección de dependencias, manejo de errores

Estas guías son utilizadas tanto por desarrolladores como por agentes de IA para mantener la consistencia del código. Ver .agents/workflows/README.md para más detalles.


Licencia

MIT © 2025

工具与能力

工具数量

3

资源数量

0

提示词数量

0

能力标签

SQLitePython本地部署数据库服务MCP协议RAG

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

用自然语言查库

不用手写 SQL,直接问数据,让模型组织查询语句。

数据巡检

定期拉指标、做对比,把异常项整理成一段说明。

打通业务数据

把数据库、数仓和接口接进同一个上下文,减少导出再上传。

选择建议

值得选的地方

  • 只提供 3 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • stdio 方式要求本地装好 Python,换机器要重新装一遍。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在数据服务场景里让模型直接调用外部能力的人。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
MCP Sqlite Server (Gmaron)

MCP World · 本页

3stdio有1 个2026-05-17
Memory 9d25f64e

MCP World

9未说明未标注1 个2026-05-17
Prisma MCP Server

MCP World

0stdio有3 个2026-05-17
Astr Bot

MCP World

0stdio有1 个2026-05-17
Getzep MCP

MCP World

9stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

MCP Sqlite Server (Gmaron) 怎么安装?

公开资料给出的安装命令是 python -m venv .venv,运行环境为 Python。装完后按客户端要求写进 MCP 配置,重启客户端生效。

MCP Sqlite Server (Gmaron) 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Python;保存后完全退出客户端再打开,配置才会生效。

MCP Sqlite Server (Gmaron) 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

MCP Sqlite Server (Gmaron) 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

MCP Sqlite Server (Gmaron) 支持哪些客户端?

公开资料没有标注具体客户端;能配置本地 MCP 命令的客户端都能接,配置方式参照官方文档。

来源信息

继续浏览同类 MCP