Unichat MCP Server
This server lets you chat with AI models from OpenAI, Anthropic, and OpenAI-compatible providers through MCP, using a single tool and predefined code-assistance prompts.
Send chat requests with one system message and one user message via the
unichattool.Configure the model, API key, and optional custom base URL for OpenAI-compatible providers.
Review code for best practices, issues, and improvements using the
code_reviewprompt.Generate documentation, docstrings, and comments using the
document_codeprompt.Get detailed explanations of how code works using the
explain_codeprompt.Apply requested changes to code using the
code_reworkprompt.
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., "@Unichat MCP Serverexplain how this Python function works: def factorial(n): return 1 if n <= 1 else n * factorial(n-1)"
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.
Unichat MCP Server in Python
Also available in TypeScript
Send requests to OpenAI, Anthropic, and OpenAI-compatible providers using MCP protocol via tool or predefined prompts. For OpenAI-compatible providers such as MistralAI, xAI, Google AI, DeepSeek, Alibaba, or Inception, set UNICHAT_BASE_URL to the provider's compatible API endpoint.
Vendor API key required
Tools
The server implements one tool:
unichat: Send a request to unichatTakes "messages" as required string arguments
Returns a response
Prompts
code_reviewReview code for best practices, potential issues, and improvements
Arguments:
code(string, required): The code to review"
document_codeGenerate documentation for code including docstrings and comments
Arguments:
code(string, required): The code to comment"
explain_codeExplain how a piece of code works in detail
Arguments:
code(string, required): The code to explain"
code_reworkApply requested changes to the provided code
Arguments:
changes(string, optional): The changes to apply"code(string, required): The code to rework"
Related MCP server: MCP AI Gateway
Quickstart
Install
Claude Desktop
On MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%/Claude/claude_desktop_config.json
Supported Models:
A list of currently supported models to be used as
"SELECTED_UNICHAT_MODEL"may be found here. Please make sure to add the relevant vendor API key as"YOUR_UNICHAT_API_KEY"
Example:
"env": {
"UNICHAT_MODEL": "gpt-5.4-mini",
"UNICHAT_API_KEY": "YOUR_OPENAI_API_KEY"
}For OpenAI-compatible providers with custom endpoints:
"env": {
"UNICHAT_MODEL": "PROVIDER_MODEL",
"UNICHAT_API_KEY": "YOUR_PROVIDER_API_KEY",
"UNICHAT_BASE_URL": "https://provider.example.com/v1"
}When UNICHAT_BASE_URL is set, the server accepts the configured UNICHAT_MODEL without checking it against Unichat's built-in model list.
Development/Unpublished Servers Configuration
"mcpServers": {
"unichat-mcp-server": {
"command": "uv",
"args": [
"--directory",
"{{your source code local directory}}/unichat-mcp-server",
"run",
"--locked",
"unichat-mcp-server"
],
"env": {
"UNICHAT_MODEL": "SELECTED_UNICHAT_MODEL",
"UNICHAT_API_KEY": "YOUR_UNICHAT_API_KEY"
}
}
}Published Servers Configuration
"mcpServers": {
"unichat-mcp-server": {
"command": "uvx",
"args": [
"unichat-mcp-server"
],
"env": {
"UNICHAT_MODEL": "SELECTED_UNICHAT_MODEL",
"UNICHAT_API_KEY": "YOUR_UNICHAT_API_KEY"
}
}
}Installing via Smithery
To install Unichat for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install unichat-mcp-server --client claudeDevelopment
Clean installation from source
Prerequisites: Git, Python 3.11 or newer (as declared in pyproject.toml), and uv available on your PATH. Node.js/npm is only needed for the optional MCP Inspector below. The shell examples use Bash/Zsh syntax.
Clone the repository and restore its locked dependencies:
git clone https://github.com/amidabuddha/unichat-mcp-server.git
cd unichat-mcp-server
uv sync --lockeduv sync --locked creates the project-local .venv/, installs the project in editable mode and restores dependencies from uv.lock. It fails if the lockfile needs updating instead of silently changing it. No virtual-environment activation or global Python dependency installation is required when using uv run.
Set the same environment variables used in the Claude Desktop examples, replacing the placeholders with your provider's values:
export UNICHAT_MODEL="SELECTED_UNICHAT_MODEL"
export UNICHAT_API_KEY="YOUR_UNICHAT_API_KEY"
# Optional, for an OpenAI-compatible provider with a custom endpoint:
# export UNICHAT_BASE_URL="https://provider.example.com/v1"The server reads environment variables; it does not load .env files itself. For Claude Desktop, keep these values in the server's env configuration shown above.
Run the local server:
uv run --locked unichat-mcp-serverThis is a stdio MCP server: connect through Claude Desktop or the Inspector below to interact with it. It does not start a web page or an interactive chat prompt. The editable installation is sufficient to run it; to also create source and wheel distributions using the configured Hatchling backend:
uv buildPackages are written to dist/. uv build supplies the build backend in an isolated environment; a globally installed build frontend is unnecessary. Runtime dependencies are locked by uv.lock, but the hatchling build requirement is not version-pinned in pyproject.toml.
Normal development
After editing files under src/, restart the server or reconnect it in your MCP client:
uv run --locked unichat-mcp-serverThe editable installation uses the current source. Ordinary source changes do not require deleting .venv/, reinstalling dependencies or rebuilding distribution packages. Run uv build again only when you need updated package artifacts. After pulling changes to the dependency manifest and lockfile, run uv sync --locked to update the environment to match them.
This repository has no configured automated test suite or watch command. Use the Inspector below to manually exercise tools and prompts, restarting the server after changes.
Clean rebuild of an existing checkout
Stop the running server and run these commands from the repository root (the directory containing pyproject.toml and uv.lock). These paths assume uv's default project-local environment: .venv/ contains installed dependencies and the editable project, and dist/ contains generated source/wheel archives.
rm -rf .venv dist
uv sync --locked
uv buildThis recreates the environment and distribution packages. Keep uv.lock, source, configuration, .env files and user data. Other ignored names such as build/ and wheels/ are not established outputs of this project's build workflow and are not cleanup targets. Global uv caches and Python installations can be reused. To run again, retain or reapply the environment variables above and use uv run --locked unichat-mcp-server.
Intentional dependency updates
Dependency updates are separate from restoration. When deliberately changing requirements in pyproject.toml, run uv lock and review the resulting uv.lock changes, then run uv sync --locked. To deliberately upgrade an existing dependency within its declared constraints, for example:
uv lock --upgrade-package unichat
uv sync --lockedReview the lockfile changes and check server behavior before accepting the update. Routine installation and rebuilding should use the existing lockfile.
Publishing
Publishing is a separate maintainer action and is not part of local installation or rebuilding. Prepare fresh distributions with the clean-rebuild workflow above and verify that dist/ contains only the intended release before uploading to PyPI:
uv publish --token "YOUR_PYPI_API_TOKEN"The repository also has a publishing workflow in .github/workflows/publish.yml, triggered by changes to pyproject.toml on main or manual dispatch.
Debugging
Since MCP servers run over stdio, debugging can be challenging. For the best debugging experience, we strongly recommend using the MCP Inspector.
You can launch the MCP Inspector via npm with this command:
npx @modelcontextprotocol/inspector uv --directory "/path/to/unichat-mcp-server" run --locked unichat-mcp-serverUpon launching, the Inspector will display a URL that you can access in your browser to begin debugging.
Hosted deployment
A hosted deployment is available on Fronteir AI.
Available Tools
1 toolunichatC
Chat with an assistant. Example tool use message: Ask the unichat to review and evaluate your proposal.
| Name | Required | Description | Default |
|---|---|---|---|
| messages | Yes | Array of exactly two messages: first a system message defining the task, then a user message with the specific query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions nothing about behavioral traits like whether this is a read-only operation, if it requires authentication, rate limits, or what kind of responses to expect. The example hints at evaluation tasks but doesn't disclose operational characteristics.
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 brief but includes an example that adds some value. However, the formatting with extra whitespace is awkward, and the example could be integrated more cleanly. It's not excessively verbose, but the structure could be improved for better front-loading of information.
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?
For a chat tool with no annotations and no output schema, the description is insufficient. It doesn't explain what the assistant does, what domains it covers, what format responses take, or any limitations. The example provides minimal context but doesn't compensate for the lack of structured information about this interactive 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?
Schema description coverage is 100%, so the schema fully documents the single parameter (messages array with exactly two messages). The description adds no parameter information beyond what's in the schema, not even mentioning the two-message requirement. Baseline 3 is appropriate when schema does all the work.
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 states 'Chat with an assistant' which indicates the basic function, but it's vague about what this assistant does or what domain it operates in. The example tool use message adds some context about reviewing proposals, but doesn't make the purpose specific or distinguish it from other chat tools. It's not tautological but lacks clear differentiation.
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?
No explicit guidance on when to use this tool versus alternatives is provided. The example suggests it can be used for reviewing proposals, but there's no mention of prerequisites, limitations, or when not to use it. With no sibling tools, the bar is lower, but still lacks basic usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- First observed
unichat
TDQS
Scored across 1 tool
With only one tool, there is no possibility of ambiguity or overlap between tools. The single tool 'unichat' has a clear and distinct purpose of chatting with an assistant.
A single tool inherently has perfect naming consistency, as there are no other tools to compare it against. The name 'unichat' follows a simple, readable pattern without any conflicting conventions.
A single tool is too few for most server purposes, as it severely limits functionality and scope. While it might be appropriate for a minimal chat interface, it feels thin and lacks the depth expected for a typical MCP server, which usually requires multiple tools to handle different operations or resources.
For a chat assistant domain, the single tool 'unichat' covers the core action of chatting, but there are notable gaps. It lacks operations for managing chat history, configuring settings, or handling multiple sessions, which are common in chat systems. However, the basic functionality is present, allowing agents to perform the primary task.
Maintenance
Related MCP Connectors
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.
One MCP endpoint for Claude, GPT & Gemini: 100+ tools + no-code connectors + agent workers.
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceSend requests to OpenAI, MistralAI, Anthropic, xAI, or Google AI using MCP protocol via tool or predefined prompts. Vendor API key required. Both STDIO and SSE transport mechanisms are supported via arguments.11 npm11MIT
- AlicenseBqualityFmaintenanceEnables AI assistants to intelligently select and switch between different AI models (OpenAI, Anthropic, etc.) within the same conversation based on task requirements. Provides a unified interface for accessing multiple AI providers through a single MCP tool.116 npmMIT
- FlicenseNot gradedqualityNot gradedmaintenanceEnables Claude and other MCP-compatible tools to communicate with OpenAI's GPT models (GPT-5, GPT-5-mini, o3) with conversation history and session management. Features advanced controls like reasoning effort settings, token tracking, and parallel conversation sessions for efficient AI workflows.4 npm-
- FlicenseBqualityDmaintenanceEnables interaction with OpenAI's Chat Completion and Assistants APIs, supporting assistant management, file operations, and direct queries to GPT models through standardized MCP tools.92-
Appeared in Searches
- A platform for hosting and joining online video meetings
- Analysis of Key Points in China's 2025 No. 1 Central Document and Its Relation to New Energy and Rural Revitalization
- Services for Ordering Groceries via Amazon Prime or Instacart
- Creating a server to order medicine from Apollo Clinic using prescription uploads
- An MCP that can programmatically interact with any online API