SPIP SQL MCP Server
๐๏ธ SPIP System - SQL Server Model Context Protocol (MCP) Server
Part of the SPIP (Smart Procurement & Invoice Processing) Ecosystem.
A production-ready Model Context Protocol (MCP) Server for Microsoft SQL Server built with Node.js and TypeScript. This server exposes 5 read-only database tools to AI Agents (execute_select, list_tables, describe_table, get_relationships, get_database_info) while enforcing database kernel-level Row-Level Security (RLS) using atomic SQL batch execution.
โจ Key Features
Model Context Protocol (MCP) Compliance: Standard SSE transport and direct HTTP tool execution APIs using
@modelcontextprotocol/sdk.Atomic Session Context & Row-Level Security (RLS): Combines
sp_set_session_contextwithSELECTqueries in a single atomic SQL batch execution, guaranteeing same-connection RLS isolation for multi-tenant users.AST SQL Query Validation: Restricts query execution strictly to read-only
SELECTstatements, blockingINSERT,UPDATE,DELETE,DROP, or DDL operations.5 Built-In Tools:
execute_select: Runs validated SELECT queries with dynamic RLS user context (userId).list_tables: Returns all database table names and schemas.describe_table: Returns column names, data types, primary keys, and nullability for a table.get_relationships: Returns foreign key relationships between database tables.get_database_info: Returns database version and metadata overview.
๐ ๏ธ Tech Stack
Runtime: Node.js v20+ / v22+
Language: TypeScript
Framework: Express.js
SDK:
@modelcontextprotocol/sdkDatabase Driver:
node-mssql(Microsoft SQL Server 2019/2022)
๐ Quick Start (Without Docker)
1. Installation
git clone https://github.com/MahmoudNour2003/spip-sql-mcp-server.git
cd spip-sql-mcp-server
npm install2. Environment Setup (.env)
Create a .env file in the project root:
MCP_PORT=3001
DB_HOST=127.0.0.1
DB_PORT=1433
DB_NAME=SPIP_DB
DB_USER=AI_CHAT
DB_PASSWORD=AI@123
DB_ENCRYPT=false
DB_TRUST_SERVER_CERT=true3. Build & Run
# Build TypeScript to JavaScript
npm run build
# Start the MCP Server
node dist/server.js๐งช Testing & Verification
Run the built-in standalone test suite:
node dist/standalone-test.jsExpected Output:
โ
Successfully connected to SQL Server (SPIP_DB)!
Tables count: 41๐ Row-Level Security (RLS) Execution Details
When execute_select is called with a userId parameter (e.g. userId = 5), the MCP Server executes the following atomic batch query:
EXEC sp_set_session_context @key = N'UserId', @value = 5;
SELECT TOP 1000 Id, InvoiceNumber, TotalAmount, Status FROM dbo.Invoices ORDER BY InvoiceDate DESC;SQL Server Security Policies (Security.InvoiceSecurityPolicy) intercept the query and return only the rows belonging to User 5.
๐ License
MIT License
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MahmoudNour2003/spip-sql-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server