PraisonAI MCP

Exposes the PraisonAI agent framework's agents, memory, knowledge and model tools over MCP

Official · Mervin Praison Python Local · stdio AI and MLKnowledge and memory

79 popularity score ★ 9.3k ↓ 3.1k/mo

Connect your client

Local (PyPI)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs OPENAI_API_KEY. Replace each <NAME> with your value.

FirstTerminal
pip install "praisonai-mcp[all]"
Claude CodeTerminal
claude mcp add praisonai -e OPENAI_API_KEY=<OPENAI_API_KEY> -- praisonai-mcp serve --transport stdio
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "praisonai": {
      "command": "praisonai-mcp",
      "args": [
        "serve",
        "--transport",
        "stdio"
      ],
      "env": {
        "OPENAI_API_KEY": "<OPENAI_API_KEY>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "praisonai": {
      "command": "praisonai-mcp",
      "args": [
        "serve",
        "--transport",
        "stdio"
      ],
      "env": {
        "OPENAI_API_KEY": "<OPENAI_API_KEY>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "praisonai": {
      "type": "stdio",
      "command": "praisonai-mcp",
      "args": [
        "serve",
        "--transport",
        "stdio"
      ],
      "env": {
        "OPENAI_API_KEY": "<OPENAI_API_KEY>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.praisonai]
command = "praisonai-mcp"
args = ["serve", "--transport", "stdio"]

[mcp_servers.praisonai.env]
OPENAI_API_KEY = "<OPENAI_API_KEY>"
Gemini CLITerminal
gemini mcp add --scope user -e OPENAI_API_KEY=<OPENAI_API_KEY> praisonai praisonai-mcp -- serve --transport stdio

Settings 3

OPENAI_API_KEY secret Required: Key for the default OpenAI models used by the model-backed tools. `doctor` warns "No API keys configured" without any provider key.
ANTHROPIC_API_KEY secret Optional: Optional Anthropic key, for Claude models named in a tool's model argument.
GOOGLE_API_KEY secret Optional: Optional Google key, for Gemini models named in a tool's model argument.

What it does

PraisonAI MCP is the server package of the PraisonAI agent framework. You start it with `praisonai-mcp serve`, and it hands the framework's features to a client such as Claude Desktop or Cursor as MCP tools. From there the client can pass a task to a PraisonAI agent, run a workflow or a research job, make images, video or speech, transcribe audio, and keep memory and a knowledge base. It also manages rule files, todos and scheduled tasks, and can work with a provider's files, batches, vector stores and fine-tuning jobs. Alongside the tools come seven read-only resources and seven prompt templates.

Transport is stdio unless you pass `--transport http-stream`. In that mode it binds to 127.0.0.1 on port 8080 at `/mcp`, and `--host`, `--port` and `--endpoint` change that. With the full `praisonai` package installed the same commands also run as `praisonai mcp ...`.

The code registers 85 tools, all named `praisonai.<area>.<action>`, where the docs count 86. Most of them need more than this package. The model tools (chat completion, images, audio, embeddings, moderation, rerank, RAG, web search, guardrails), workflow runs and everything in the extended set (video, provider files, batches, vector stores, assistants, fine-tuning, OCR, containers, deploy) import their code from the separate `praisonai` package. Without it they come back with an error asking you to run `pip install praisonai` (capabilities.py, extended_capabilities.py, _wrapper_bridge.py). The agent, research, memory, knowledge, rules, todo and schedule tools run on this package alone.

The project README now talks up running offline on a local model. For this server, models are fixed per tool in code, and the defaults are OpenAI ones (gpt-4o-mini, dall-e-3, whisper-1 and so on). `agent.chat`, `agent.run` and `chat.completion` accept a `model` argument, so a client can name something like `ollama/llama3.2` there. `research.run` always calls gpt-4o, and no setting changes the default model server-wide.

What it needs

RuntimePython 3.10+
Runs onmacOS, Windows, Linux
OpenAIPaid planDefault provider for the model-backed tools. Anthropic or Google keys are optional, and agent and chat tools can take a local model name instead
Also
  • The praisonai package (pip install praisonai) for the model, workflow and extended tools

Install with `pip install "praisonai-mcp[all]"`, or `pip install "praisonai[mcp]"` for the whole framework. Add `pip install praisonai` if you installed the standalone package and want the model, workflow and extended tools. Set OPENAI_API_KEY for the default models. To use a local model with the agent and chat tools, have Ollama running and pass its model name in the tool's `model` argument. Provider calls are billed by the provider.

Limits

  • Limit Model, workflow, deploy and extended tools return an error unless the separate praisonai package is installed too
  • Not covered No server-wide model setting. Only agent.chat, agent.run and chat.completion take a model name, and research.run always uses gpt-4o
  • Limit Before PraisonAI PR #4311, knowledge, session, workflow, audio, OCR, a2a, containers, skills and realtime tools answered "not available". Upgrade older installs
  • Limit knowledge.clear returns an error naming the backend when that backend (for example Chroma) cannot reset
  • Limit The docs list an ocr.extract tool, but the registered name is praisonai.ocr
  • Cost Image, video, speech, batch and fine-tuning tools run on the provider account whose key is set and are billed there

Without the `praisonai` package co-installed, the extended tools (video, files, batches, vector stores, assistants, fine-tuning, OCR, containers, workflow.auto, deploy) return an error instead of working. Its docs note that knowledge, session, hooks, eval, workflow, audio, guardrails, OCR, a2a, containers, skills and realtime tools returned "not available" errors in releases before PR #4311; older installs should be upgraded. `knowledge.clear` reports an error when the configured backend (for example Chroma) cannot reset. The docs' tool list uses `ocr.extract`, but the registered tool is `praisonai.ocr`.

Who it suits

Suits developers already building with PraisonAI who want to drive its agents, workflows and memory from Claude Desktop, Cursor or another MCP client. In practice that means an OpenAI key and the full `praisonai` package, since most tools default to OpenAI models and import from it. Running fully on a local model only goes as far as the few tools that take a `model` argument. It puts 85 tools in front of the client at once, so someone who wants a single capability (only web search, only memory) will find a narrower server easier to reason about. Those who only need to serve a few custom Python tools can use PraisonAI's lighter `praisonai serve mcp` server, as the package page describes.

Tools 60 of 85

31 only read, 20 change things, 9 can delete or overwrite. A ? marks an optional parameter.

praisonai.agent.chat
Send a message to a general PraisonAI agent and get its reply; model is gpt-4o-mini unless givenmessage: stringmodel?: string
praisonai.agent.run
Have a general agent carry out a task, with gpt-4o-mini unless another model is giventask: stringmodel?: string
praisonai.research.run
Run a research agent on a topic, always on gpt-4otopic: stringdepth?: string
praisonai.workflow.run changes
Run a workflow passed in as YAML textyaml_content: string
praisonai.workflow.run_file changes
Run a workflow from a YAML file on diskfile_path: string
praisonai.workflow.auto changes
Generate a workflow for a topic in a chosen patterntopic: stringpattern?: string
praisonai.workflow.list
List workflow files found
praisonai.workflow.validate
Check a workflow YAML filefile_path: string
praisonai.workflow.show
Show a workflow file's configurationfile_path: string
praisonai.chat.completion
Get a single chat completion, with an optional system promptmessage: stringmodel?: stringsystem_prompt?: string
praisonai.images.generate changes
Create images from a prompt, dall-e-3 at 1024x1024 by defaultprompt: stringmodel?: stringsize?: stringn?: integer
praisonai.videos.generate changes
Create a short video from a prompt, openai/sora-2 for 4 seconds by defaultprompt: stringmodel?: stringduration?: integer
praisonai.audio.transcribe
Turn an audio file into text with whisper-1 by defaultfile_path: stringmodel?: stringlanguage?: string
praisonai.audio.speech changes
Turn text into spoken audio, tts-1 with the alloy voice by defaulttext: stringmodel?: stringvoice?: string
praisonai.embed.create
Compute embeddings for texttext: stringmodel?: string
praisonai.moderate.check
Run content moderation on texttext: string
praisonai.rerank
Reorder documents by relevance to a query, top 5 by defaultquery: stringdocuments: arraymodel?: stringtop_n?: integer
praisonai.search
Search the web for a queryquery: string
praisonai.ocr
Pull text out of an image with a vision model, gpt-4o by defaultimage_path: stringmodel?: string
praisonai.guardrails.check
Check text against a named guardrailtext: stringguardrail_name?: string
praisonai.memory.show
Show stored memory, optionally for one useruser_id?: string
praisonai.memory.add changes
Save an item to memory with optional metadatacontent: stringmetadata?: string
praisonai.memory.search
Search stored memory, 10 results by defaultquery: stringlimit?: integeruser_id?: string
praisonai.memory.clear deletes
Wipe stored memory
praisonai.knowledge.add changes
Add a file path, URL or raw text to the knowledge basesource: string
praisonai.knowledge.query
Ask the knowledge base a question, 5 results by defaultquery: stringlimit?: integer
praisonai.knowledge.list
List knowledge sources
praisonai.knowledge.clear deletes
Empty the knowledge base, or say which backend refused
praisonai.knowledge.stats
Report knowledge base statistics
praisonai.rag.query
Answer a question by retrieval over a stored collectionquery: stringcollection?: string
praisonai.rules.list
List rule files in ~/.praison/rules
praisonai.rules.show
Read one rule filerule_name: string
praisonai.rules.create deletes
Write a rule file, replacing one of the same namerule_name: stringcontent: string
praisonai.rules.delete deletes
Remove a rule filerule_name: string
praisonai.todo.list
List todo items
praisonai.todo.add changes
Add a todo item with a priority, medium by defaultcontent: stringpriority?: string
praisonai.todo.complete changes
Mark a todo donetodo_id: string
praisonai.todo.delete deletes
Remove a todo itemtodo_id: string
praisonai.schedule.list
List scheduled tasks
praisonai.schedule.add changes
Schedule a workflow file on a cron expressiontask_name: stringcron: stringworkflow_path: string
praisonai.schedule.remove deletes
Cancel a scheduled tasktask_name: string
praisonai.session.list
List agent sessions
praisonai.session.info
Show details of one sessionsession_id: string
praisonai.session.delete deletes
Delete a sessionsession_id: string
praisonai.files.create changes
Upload a local file to the model providerfile_path: stringpurpose?: string
praisonai.files.list
List files uploaded to the providerpurpose?: string
praisonai.files.delete deletes
Delete an uploaded file at the providerfile_id: string
praisonai.batches.create changes
Start a batch job from an uploaded fileinput_file_id: stringendpoint?: stringcompletion_window?: string
praisonai.batches.cancel changes
Cancel a running batch jobbatch_id: string
praisonai.vector_stores.create changes
Create a provider vector store from uploaded filesname: stringfile_ids?: array
praisonai.vector_stores.search
Search a vector store, 10 results by defaultvector_store_id: stringquery: stringmax_results?: integer
praisonai.assistants.create changes
Create an assistant at the providername: stringinstructions: stringmodel?: stringtools?: array
praisonai.fine_tuning.create changes
Start a fine-tuning job on a training filetraining_file: stringmodel?: stringsuffix?: string
praisonai.containers.create changes
Create a code container, python:3.11 by defaultname: stringimage?: string
praisonai.containers.file_write deletes
Write a file inside a containercontainer_id: stringfile_path: stringcontent: string
praisonai.a2a.send changes
Send a message to another agent's A2A addressagent_url: stringmessage: stringtask_id?: string
praisonai.skills.load
Load a skill from a pathskill_path: string
praisonai.tools.search
Search the framework's available toolsquery: string
praisonai.mcp_config.enable changes
Turn on a saved MCP server configurationconfig_name: string
praisonai.doctor.env
Report which provider keys and settings are present

Resources 7

praisonai://memory/sessions
Sessions in the session store
praisonai://workflows
Workflow files in the current directory
praisonai://tools
Tools available to agents
praisonai://agents
Agent configurations
praisonai://knowledge/sources
Sources in the knowledge base
praisonai://config
Current configuration
praisonai://mcp/status
Status of this MCP server

Prompts 7

deep-research
Builds a prompt for researching a topic in depth
code-review
Builds a prompt for reviewing code
workflow-auto
Builds a prompt for generating a workflow
guardrail-check
Builds a prompt for checking content safety
context-engineering
Builds a prompt that shapes context for a model
eval-criteria
Builds criteria for judging agent output
agent-instructions
Builds instructions for an agent in a given role

Similar servers