MCP Server with OpenAI Integration
Provides connectivity to OpenAI's API for making LLM calls, with support for custom base URLs (Azure/OpenAI proxies), configurable timeouts, and token usage metrics.
Click on "Install 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., "@MCP Server with OpenAI Integrationsearch for recent developments in quantum computing"
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.
MCP Server with OpenAI Integration
A production-ready Model Context Protocol server implemented in TypeScript. The server provides:
OpenAI connectivity demo – prove the API key works end-to-end via
npm run demo:openai.MCP tool demo – spawn the server and call tools through an MCP client using
npm run demo:tool.Extensibility demo – hot-load third-party tools from disk via
npm run demo:extorMCP_TOOL_MODULES.Browser UI demo – launch an interactive web page that exercises the OpenAI call and knowledge-search tool with
npm run demo:ui.
The codebase focuses on clean abstractions, schema validation, and commercial readiness (logging, config safety, tests).
Requirements
Node.js 18+ (Node 20 recommended to avoid optional engine warnings).
npm 9+.
A valid
OPENAI_API_KEYwith access to the desired models.
Related MCP server: PMCP - Perfect Model Context Protocol Server
Quick start
npm install
cp .env.example .env # fill in OPENAI_API_KEY
npm run build
npm start # runs the compiled MCP server on stdioTo run the TypeScript entry directly during development:
npm run devEnvironment variables
Variable | Description |
| Required. API key for OpenAI. |
| Override base URL for Azure/OpenAI proxies. |
| Timeout (ms) applied to OpenAI API calls. Defaults to |
| Name advertised to MCP clients. |
|
|
| Comma-separated absolute paths to extra tool modules (see extensibility demo). |
| Reserved for future transports; defaults to |
| Optional port for the browser UI demo. Defaults to |
Demo workflows
1. OpenAI connectivity
Verifies credentials and model access:
npm run demo:openaiOutputs the model reply plus token usage metrics via Pino logs.
2. MCP tool invocation
Spawns the compiled MCP server (node dist/index.js) and connects with the official MCP client SDK:
npm run build
npm run demo:toolSet MCP_DEMO_SERVER_COMMAND / MCP_DEMO_SERVER_ARGS if you want the client to launch a different command (for example npx tsx src/index.ts). The script lists tools and invokes knowledge_search end-to-end.
3. Extensibility via plugins
Ships with src/examples/plugins/stockQuoteTool.ts. After npm run build the compiled module lives at dist/examples/plugins/stockQuoteTool.js.
Load it either through the demo script:
npm run build
npm run demo:extor by setting an environment variable before starting the server:
export MCP_TOOL_MODULES=$(pwd)/dist/examples/plugins/stockQuoteTool.js
npm startThe server automatically registers every tool exported from the referenced module(s).
4. Browser UI walkthrough
Launch a lightweight HTTP server that serves public/ui-demo.html:
npm run demo:uiVisit http://localhost:4399 (or UI_DEMO_PORT) to:
Send prompts directly to OpenAI using the configured API key.
Call the built-in
knowledge_searchtool through a REST façade.
Responses render inline so you can validate both flows without leaving the browser.
Tooling
TypeScript strict mode with
tscfor builds.Vitest for unit testing (
npm test).ESLint + Prettier for linting/formatting (
npm run lint,npm run format).Pino structured logging with pretty printing in development.
Test & quality gates
npm run lint
npm testCoverage reports are emitted under coverage/ via V8 instrumentation.
Project structure
src/config/env.ts– centralized, validated environment loading.src/clients/openaiClient.ts– resilient OpenAI wrapper implementing theLLMProvidercontract.src/mcp/registry.ts– tool lifecycle management + dynamic module loading.src/mcp/server.ts– MCP server wiring, tool adapters, and plugin APIs.src/demos/*– runnable scripts covering the three required scenarios.src/examples/plugins/*– sample plugin(s) for extensibility demos.tests/*– Vitest coverage for critical units.
For a deeper architectural overview, read docs/architecture.md.
Available Tools
2 toolsknowledge_searchC
Searches curated knowledge base snippets stored as markdown files.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool searches a knowledge base, implying a read-only operation, but doesn't disclose any behavioral traits like what happens with no results, whether it supports pagination or sorting, or any rate limits or authentication needs. This leaves significant gaps for an AI agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It is appropriately sized and front-loaded, making it easy to understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (a search tool with no annotations, no output schema, and low schema coverage), the description is incomplete. It lacks information on behavioral traits, usage guidelines, and parameter details, making it insufficient for an AI agent to fully understand how to invoke and interpret results from this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must compensate for the lack of parameter documentation. It mentions 'query' implicitly by describing the search action, but doesn't add specific meaning beyond what the schema provides (e.g., no details on query syntax, expected formats, or examples). With one parameter and low coverage, this is a minimal baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Searches') and the resource ('curated knowledge base snippets stored as markdown files'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from its sibling 'text_summarizer', which is a different function but could be related in some contexts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as the sibling 'text_summarizer'. It lacks any context about when this search tool is appropriate or when other tools might be better suited, offering only a basic functional statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text_summarizerC
Summarizes long text into concise bullet points using the configured LLM.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| model | No | gpt-4o-mini |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions the tool uses 'the configured LLM,' it doesn't disclose important behavioral traits like rate limits, authentication requirements, cost implications, or what happens with very long inputs. The description is minimal and lacks operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise - a single sentence that efficiently communicates the core functionality. Every word earns its place, and it's front-loaded with the essential information. No wasted words or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no annotations, no output schema, and 0% schema description coverage, the description is inadequate. It doesn't explain what the tool returns, how the summarization works, quality expectations, or error conditions. For a tool that processes text with an LLM, this leaves significant gaps in understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions 'configured LLM' which relates to the 'model' parameter, but doesn't explain the 'text' parameter's requirements or constraints. The description adds minimal value beyond what the bare schema provides, failing to adequately compensate for the 0% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Summarizes long text into concise bullet points using the configured LLM.' It specifies the verb ('summarizes'), resource ('long text'), and output format ('concise bullet points'). However, it doesn't explicitly differentiate from the sibling tool 'knowledge_search' (which likely searches rather than summarizes).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention the sibling tool 'knowledge_search' or any other summarization methods. There's no context about when this tool is appropriate versus other approaches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The two tools have clearly distinct purposes: knowledge_search retrieves information from a knowledge base, while text_summarizer condenses provided text. There is no overlap in functionality, and an agent would easily differentiate between them.
Both tools use snake_case naming, which is consistent. However, knowledge_search follows a noun_verb pattern (knowledge_search), while text_summarizer uses a noun_verb pattern with a suffix (text_summarizer), showing a minor deviation in naming style.
With only 2 tools, the server feels thin for an 'OpenAI Integration' purpose, which typically implies broader capabilities like text generation, translation, or analysis. This limited set may not adequately cover the expected scope.
Given the server's name suggests OpenAI integration, there are significant gaps: no tools for text generation, translation, sentiment analysis, or other common LLM tasks. The surface is incomplete, likely causing agent failures for broader use cases.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceA production-ready MCP server built with FastAPI, providing an enhanced tool registry for creating, managing, and documenting AI tools for Large Language Models (LLMs).34
- -licenseNot gradedqualityNot gradedmaintenanceA comprehensive production-ready MCP server with AI integration, plugin management, and web-based administration. Features multi-database support, RAG capabilities, SSH/SFTP access, and a built-in plugin hub for managing the MCP ecosystem.
- AlicenseNot gradedqualityAmaintenanceProduction-ready MCP server providing RAG, hierarchical memory, and 8+ tools for AI agents via the Model Context Protocol.41Apache 2.0
- FlicenseAqualityBmaintenanceA production-grade MCP server that provides a centralized microservice toolkit for LLM agents, enabling web search and extensible tool integration.1
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/code-wgl/McpServer'
If you have feedback or need assistance with the MCP directory API, please join our Discord server