Contex
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Contexconvert petstore.yaml to an MCP server"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Contex - OpenAPI to Model Context Protocol Server
A generic TypeScript library for converting OpenAPI specifications into MCP (Model Context Protocol) servers. Built with a purely functional architecture using Ramda.
Features
Generic OpenAPI Conversion: Convert any OpenAPI 3.x specification into a fully functional MCP server
OAuth 2.1 Support: Built-in authentication with PKCE support
Purely Functional: Composable pure functions using Ramda and
R.pipe()Type-Safe: Full TypeScript support with Result monad for error handling
Extensible: Easy to add custom tools and resources
Well-Tested: 100% unit test coverage target
Related MCP server: OpenAPI MCP Server Converter
Installation
npm install contex zodQuick Start
import { createMcpServer, isOk } from 'contex';
const result = await createMcpServer({
name: 'My API Server',
version: '1.0.0',
openApiSpec: './openapi.yaml',
baseUrl: 'https://api.example.com',
});
if (isOk(result)) {
await result.value.start();
console.log('MCP server running on port 3000');
}With OAuth Authentication
import { createMcpServer, isOk } from 'contex';
const result = await createMcpServer({
name: 'Secure API Server',
version: '1.0.0',
openApiSpec: './openapi.yaml',
baseUrl: 'https://api.example.com',
auth: {
type: 'oauth2',
clientId: process.env.CLIENT_ID,
clientSecret: process.env.CLIENT_SECRET,
authorizationUrl: 'https://auth.example.com/authorize',
tokenUrl: 'https://auth.example.com/token',
scopes: ['read', 'write'],
pkce: true, // Enabled by default
},
server: {
port: 3000,
transport: 'streamable-http',
},
});
if (isOk(result)) {
await result.value.start();
}API Overview
Main Functions
createMcpServer(config)- Create MCP server from OpenAPI speccreateCustomMcpServer(name, version, tools, resources)- Create server with custom tools
Result Type
The library uses a Result<T, E> monad for error handling:
import { isOk, isErr, fold, formatError } from 'contex';
const result = await createMcpServer(config);
// Pattern matching with type guards
if (isOk(result)) {
const server = result.value;
} else {
console.error(formatError(result.error));
}
// Or use fold
const server = fold(
(error) => { console.error(error); return null; },
(server) => server
)(result);Tool and Resource Generation
import {
parseOpenApiSpec,
extractOperations,
buildToolsPipeline,
buildResourcesPipeline,
} from 'contex';
// Parse OpenAPI spec
const specResult = await parseOpenApiSpec('./openapi.yaml');
if (isOk(specResult)) {
const spec = specResult.value;
// Extract operations
const operations = extractOperations(spec);
// Build tools
const tools = buildToolsPipeline('https://api.example.com')(operations);
// Build resources
const resources = buildResourcesPipeline(spec);
}Architecture
See docs/ARCHITECTURE.md for details.
Documentation
API Reference - Complete API documentation
Architecture Guide - Design principles and patterns
Examples - Usage examples and patterns
Examples
See the examples/ directory for complete examples:
basic-server.ts- Basic MCP server from OpenAPIwith-oauth.ts- Server with OAuth authenticationcustom-tools.ts- Server with custom tool definitions
Existing Alternatives
Several similar libraries exist in the ecosystem:
Library | Description |
Generates MCP server code from OpenAPI specs | |
TypeScript tool for OpenAPI → MCP conversion | |
Automatic OpenAPI to MCP Server conversion | |
Bridge between OpenAPI and MCP for Claude Desktop | |
Turn any API into MCP tools | |
Commercial platform for MCP server generation | |
Commercial tool for generating MCP servers |
How This Library Differs
Feature | Existing Tools | This Library |
Architecture | Mostly imperative/OOP | Purely functional |
Error Handling | Exceptions | Result monad |
OAuth Support | Limited/varies | Full OAuth 2.1 + PKCE |
Runtime | Code generation | Runtime conversion |
Composability | Low | High ( |
Development
# Install dependencies
npm install
# Run tests
npm test
# Type check
npm run typecheck
# Build
npm run buildLicense
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
- typeshipOAuthdev.typeship
Generate a typed SDK, CLI, and MCP server from any OpenAPI or GraphQL spec, and keep them current.
Create hosted MCP servers from any OpenAPI spec. Requires a free Kaiva Bridge account.
MCP server for AI access to Swagger by SmartBear.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceConverts any Swagger/OpenAPI specification into an MCP server, enabling AI assistants to intelligently query API endpoints, schemas, and generate code examples.18-
- AlicenseNot gradedqualityCmaintenanceAutomatically converts OpenAPI specifications into a Model Context Protocol (MCP) server instance.221 npm16MIT
- AlicenseNot gradedqualityBmaintenanceDynamically converts any OpenAPI v3 specification into a fully-functional Model Context Protocol (MCP) server.7Mozilla Public 2.0
- AlicenseNot gradedqualityCmaintenanceTurn any OpenAPI / Swagger spec into an agent-ready MCP server.25 npm1MIT