Skip to content
GitHubDiscord

AI MCP (lexigram-ai-mcp)

MCP Server for Lexigram Framework - Model Context Protocol server for AI agents


Model Context Protocol (MCP) server and client implementation for the Lexigram Framework. Exposes tools, resources, and prompts to any MCP-compatible client — including Claude Desktop, Cursor, and custom AI agents — over SSE or stdio transports. Also provides MCP client connectivity for consuming external MCP servers. Zero-config usage starts with sensible defaults.

Terminal window
uv add lexigram-ai-mcp
from lexigram import Application
from lexigram.di.module import Module, module
from lexigram.ai.mcp import MCPModule
from lexigram.ai.mcp.config import MCPConfig
@module(imports=[
MCPModule.configure(
config=MCPConfig(
server_name="my-app",
server_version="1.0.0",
enable_sse=True,
stdio_mode=False,
)
)
])
class AppModule(Module):
pass
app = Application(modules=[AppModule])
if __name__ == "__main__":
app.run()

Zero-config usage: Call MCPModule.configure() with no arguments to use defaults.

application.yaml
ai_mcp:
host: "0.0.0.0"
port: 8080
path: "/mcp"
enable_sse: true
server_name: "lexigram-mcp"
server_version: "1.0.0"
Section titled “Option 2 — Profiles + Environment Variables (recommended)”
Terminal window
export LEX_AI_MCP__ENABLED=true
export LEX_AI_MCP__HOST=0.0.0.0
# Environment variables for each field
from lexigram.ai.mcp.config import MCPConfig
from lexigram.ai.mcp import MCPModule
config = MCPConfig(
enabled=True,
host="0.0.0.0",
port=8080,
enable_sse=True,
server_name="my-app",
)
MCPModule.configure(config)
FieldDefaultEnv varDescription
enabledTrueLEX_AI_MCP__ENABLEDEnable the MCP server subsystem
host"0.0.0.0"LEX_AI_MCP__HOSTHost to bind (HTTP transport)
port8080LEX_AI_MCP__PORTPort to bind (HTTP transport)
path"/mcp"LEX_AI_MCP__PATHURL path for MCP endpoint
enable_sseTrueLEX_AI_MCP__ENABLE_SSEEnable Server-Sent Events transport
stdio_modeFalseLEX_AI_MCP__STDIO_MODEUse stdio transport instead of HTTP
server_name"lexigram-mcp"LEX_AI_MCP__SERVER_NAMEMCP server name
server_version"1.0.0"LEX_AI_MCP__SERVER_VERSIONMCP server version
cors_origins[]LEX_AI_MCP__CORS_ORIGINSCORS allowed origins
max_request_size1048576LEX_AI_MCP__MAX_REQUEST_SIZEMax request size (bytes)
request_timeout30.0LEX_AI_MCP__REQUEST_TIMEOUTRequest timeout (seconds)
MethodDescription
MCPModule.configure(config, controllers, services)Configure with explicit config
MCPModule.from_services(services, include_methods)Auto-expose service methods as MCP tools
MCPModule.stub()Minimal config for testing
MCPClientModule.configure(connections)Configure MCP client connections
  • Server: Define tools using decorators (@tool, @resource, @prompt)
  • Controllers: Group related tools via MCPController
  • Auto-expose: Wire service methods as MCP tools
  • Transports: SSE and stdio transport support
  • Built-in connectors: Filesystem, GitHub, WebFetch, WebSearch, Slack, GoogleDrive, SQL
  • Client: Connect to external MCP servers
  • Adapters: Bridge to lexigram-ai-agents and lexigram-ai-skills
async with Application.boot(modules=[MCPModule.stub()]) as app:
# your test code
...
FileWhat it contains
src/lexigram/ai/mcp/module.pyMCPModule.configure(), from_services(), stub()
src/lexigram/ai/mcp/config.pyMCPConfig and connector config classes
src/lexigram/ai/mcp/server/core.pyMCPServer — protocol implementation
src/lexigram/ai/mcp/client/module.pyMCPClientModule.configure()
src/lexigram/ai/mcp/transport/sse.pySSE transport (HTTP-based)
src/lexigram/ai/mcp/transport/stdio.pyStdio transport (subprocess-based)
src/lexigram/ai/mcp/controllers/base.pyMCPController base class
src/lexigram/ai/mcp/di/provider.pyMCPProvider — registers MCP into DI