MCP / AI
Overview

MCP / AI Overview

The MCP (Model Context Protocol) server exposes lk-wiz functionality to AI assistants like Claude Code, Claude Desktop, and API-based connectors. It lets you list and create ideas, generate and iterate on posts, check the pipeline, and manage actions — all in natural language, without leaving your assistant.

How it fits together

The server follows the same pattern as copebit's wfm-datawarehouse MCP server: FastMCP + AgentCore Gateway + Cognito auth.

Claude Code / Desktop → AgentCore Gateway → Interceptor Lambda
                      → AgentCore Runtime (FastMCP container)
                      → DynamoDB / Bedrock / S3
  • Clients connect directly via streamable-HTTP transport — no mcp-remote proxy.
  • AgentCore Gateway implements RFC 9728 (Protected Resource Metadata) and standard MCP OAuth 2.1, so Claude handles authentication natively.
  • The Interceptor Lambda forwards the request body and Authorization header unchanged to the runtime.
  • The AgentCore Runtime runs the FastMCP server container (Python 3.13, uvicorn on port 8000), which resolves the caller from the JWT and applies workspace RBAC.

Access control

Only approved users (those with approved: true in DynamoDB) can use the MCP server. Beyond that, every workspace-scoped tool checks membership only — it does not read or branch on the caller's workspace role (owner/editor/viewer), so any member can call any workspace-scoped tool. Only the two admin_* tools add a role check, and it's the platform role (member/admin), not a workspace role. See Authentication and the "Authorization (RBAC)" section of specs/features/mcp.md in the repo for the full breakdown.

Relationship to the REST API

MCP tools do not call the backend's service layer. Each workspace-scoped tool module (tools/ideas.py, tools/posts.py, tools/genai.py, tools/actions.py, tools/prompts.py, tools/examples.py, tools/schedule.py, tools/workspaces.py) hand-rolls its own DynamoDB access with the raw low-level boto3 client, independently of the REST handlers' own *_service.py modules. The intent is that both surfaces implement the same business logic against the same table, but in practice the two have drifted apart in specific, documented ways — see the "Deviations from REST" section of each domain's page below, and the "Relationship to the REST API" section of specs/features/mcp.md for the full picture.

Browse the available tools per domain — Workspaces, Ideas, Posts, GenAI, Schedule, Actions, Prompts, Examples, Admin — or the combined Tool Catalog, then wire up your client in Client Setup.