openai-mcpkit: OpenAI's MCP kit starts where most demos end: authentication

A blueprint for bringing proprietary data into ChatGPT without flattening the enterprise security model.

10 min read • View on GitHub • More from openai

A locked vault door sits on one side of a narrow bridge that leads to a laptop terminal. The image frames access control as the core design problem, which is the point of this repository: private data should move through a checkpoint, not straight into the model.
The repo treats authentication as the bridge, not the garnish.
Key Takeaways

Most connector demos are easy to admire and hard to trust. They prove that a model can call tools, then quietly skip the part enterprises care about most: who is allowed to see what.

MCPKit is a blueprint for building authenticated Model Context Protocol (MCP) servers that let you bring proprietary data, content, and systems into ChatGPT, via ChatGPT Dev Mode.

OpenAI, Organization · openai/openai-mcpkit README

Why the repo feels different

openai/openai-mcpkit is not trying to be another generic MCP sample. It is trying to show the secure shape of a connector that can live inside an enterprise policy boundary. That makes it less of a toy server and more of a reference architecture.

The project is split into two implementation stacks and one sandbox. Python gives you a FastMCP-based path with FastAPI and Pydantic. TypeScript gives you an Express-based path built on the official MCP SDK and Zod. The synthetic data folder supplies mock reports, transcripts, and trend files so teams can rehearse the workflow before touching real systems.

How the auth gate works

The server validates identity before a tool ever touches private data.

This is where the kit earns its name. The Python scaffold uses a JWT verifier that fetches public keys from JWKS, checks issuer and audience, and enforces scopes such as openid, profile, and email. The TypeScript scaffold follows the same logic with jose and Express. In both versions, the message is blunt: a token is not enough unless it is the right token for the right server.

That separation matters because MCP is meant to connect models to real systems, not just to demo data. The repo follows the resource indicator pattern from RFC 8707, which means a token issued for one resource should not become a free pass to another. For enterprise teams, that is the difference between a neat prototype and something they can actually put behind a policy review.

The tools are simple on purpose

The tool surface is deliberately small. Search reaches into an OpenAI vector store. Fetch returns a full document by ID. The trend tools parse local data and turn messy alternative data into something the model can consume. That is enough to show the pattern without burying it under framework noise.

The interesting part is not that these tools exist. It is that they are registered in a way that lets the MCP layer advertise them cleanly to the model while the server keeps control of authentication and data handling. That is a good split for teams that want to ship connectors without teaching every tool to become its own security boundary.

ProjectWhat it optimizesAuth postureMain tradeoff
openai/openai-mcpkitEnterprise connector blueprintsOIDC, JWKS, scopes, and resource indicators are built inOpinionated and intentionally narrow
@modelcontextprotocol/sdkRaw protocol primitivesYou assemble the auth story yourselfMore plumbing, but maximum control
vchecha/mcpkitDeveloper ergonomicsAuth is external to the DX layerGreat boilerplate reduction, less enterprise guidance
@vercel/ai-sdk/mcpApp integration and multi-agent workflowsFramework-level, not a security blueprintStrong TypeScript fit, weaker as a governed connector pattern

Today, MCP has exploded from a local-only experiment into the de facto protocol for agentic systems, adopted by OpenAI, Microsoft, Google, Block, and hundreds of enterprises building internal agents at scale.

Latent Space, Publication · One Year of MCP

Why the synthetic data sandbox matters

The synthetic financial dataset is the most underrated part of the repo. It turns the project from a security exercise into a usable rehearsal space for real workflows. You can test how analysts might query expert call transcripts, reports, and trend data without exposing live feeds or waiting on upstream integrations.

The data helpers also show a practical ETL habit that matters in agent systems. They normalize different file formats and header names into a consistent shape, so the model sees a stable query structure instead of a brittle pile of CSV quirks. That is the sort of detail that keeps an MCP server useful after the demo is over.

The bigger lesson is that enterprise AI rarely fails because the model cannot talk to tools. It fails because the tool layer does not respect the organization that already exists. This repo is useful because it starts from that reality, then builds the connector around it.