Medhā MCP

Medhā MCP

Operator-tuned MCP server for Venice AI, providing 31 tools for chat, image, video, audio, and music generation with curated presets and workflow prompts.

Category
访问服务器

README

Medhā MCP

Operator-tuned fork of @veniceai/mcp-server. Same 31 Venice primitives; curated presets for chat/image/video/audio/music baked in via env defaults and surfaced in tool descriptions; one discoverable medha://favorites resource so any agent can fetch the operator's preferences before making a call. Use from any MCP host — Claude Desktop, Claude Code, Cursor, Codex CLI, Hermes, Jiva, Rati, LM Studio, Continue, LibreChat, Open WebUI, AnythingLLM, Jan, Le Chat.


What you get

Surface Count Notes
Tools 31 Identical to upstream; descriptions augmented with Operator preferences — default: … also try: … overlays keyed off src/presets.ts
Resources 4 venice://models, venice://styles, venice://voices (upstream) + medha://favorites (canonical JSON dump of presets)
Prompts 7 3 upstream (uncensored-research, nsfw-creative-writing, image-style-explorer) + 4 Medhā workflow briefs (medha_music_video_brief, medha_podcast_pipeline, medha_dashboard_poster, medha_character_dossier)
Transports stdio and Streamable HTTP (/mcp) HTTP is the Railway-deployed mode; stdio stays for npx-style install

The Medhā MCP server is thin by design: it forwards agent tool calls to api.venice.ai. The agent (Claude Code / Hermes / Codex / Jiva / Rati / Cursor / etc.) is the orchestrator — it plans the steps, picks models, calls tools in order, handles async polling, and stitches art + audio together.


Quickstart (5 min deploy on Railway)

1. Get a Venice API key

venice.ai → Settings → API Keys. Save it locally on the operator's Mac:

echo "export VENICE_API_KEY=*** ~/.config/railway/venice-rati-key.env
chmod 600 ~/.config/railway/venice-rati-key.env

2. Clone + push

gh repo clone veniceai/venice-mcp-server ~/tmp/medha-deploy
cd ~/tmp/medha-deploy
# (already customized to Medhā on master if you cloned vivmuk/medha-mcp;
# upstream clone just needs the Phase 1 patches to branding files.)

3. Railway project + service

# Create `medha` project in vivmuk's workspace
railway init --name "medha" --workspace "vivmuk's Projects"
gh repo create vivmuk/medha-mcp \
    --public \
    --description "Medhā — operator-tuned Venice AI MCP bridge." \
    --default-branch master
cd ~/tmp/medha-deploy
git remote rename origin upstream
git remote add origin https://github.com/vivmuk/medha-mcp.git
git fetch upstream --unshallow
git push -u origin master
# Create Railway service that pulls from GitHub
railway add --service medha --repo vivmuk/medha-mcp --branch master

4. Set env vars

Generate a strong bearer token for the MCP HTTP layer:

BEARER=$(python3 -c "import secrets; print(secrets.token_hex(32))")
echo "$BEARER" > ~/.config/railway/medha-bearer.token
chmod 600 ~/.config/railway/medha-bearer.token

Push secrets via --stdin (chat-safe; never argv):

unset RAILWAY_TOKEN RAILWAY_API_TOKEN

python3 - <<'PY'
import subprocess
from pathlib import Path
KEY = Path("/Users/vivgatesai/.config/railway/venice-rati-key.env").read_text()
KV = {l.split("=",1)[0].lstrip("export ").strip(): l.split("=",1)[1].strip().strip('"').strip("'") for l in KEY.splitlines() if l.startswith("export ")}
BEARER = Path("/Users/vivgatesai/.config/railway/medha-bearer.token").read_text().strip()
base = ["railway","variable","set","--service","medha","--skip-deploys"]
for label, value in [("VENICE_API_KEY", KV["VENICE_API_KEY"]), ("VENICE_MCP_AUTH_TOKEN", BEARER)]:
    subprocess.run(base + [label, "--stdin"], input=value, capture_output=True, text=True, timeout=60)
PY

Plain env (no secrets — argv-safe):

for K in \
  "VENICE_MCP_HTTP=1" \
  "VENICE_MCP_HOST=0.0.0.0" \
  "VENICE_DISABLE_NSFW=0" \
  "VENICE_DEFAULT_CHAT_MODEL=minimax-m3-preview" \
  "VENICE_DEFAULT_IMAGE_MODEL=flux-2-pro" \
  "VENICE_DEFAULT_TTS_MODEL=tts-kokoro" \
  "VENICE_DEFAULT_ASR_MODEL=openai/whisper-large-v3" \
  "VENICE_DEFAULT_VIDEO_MODEL=ltx-2" \
  "VENICE_DEFAULT_MUSIC_MODEL=ace-step-15" \
  "VENICE_HTTP_TIMEOUT_MS=120000" \
  "VENICE_MCP_MAX_SESSIONS=100" \
  "VENICE_MCP_SESSION_TTL_MS=1800000" \
  "PORT=3333" \
  "MEDHA_SERVER_NAME=@medha/mcp-server" \
  "MEDHA_SERVER_VERSION=0.4.0-medha"
do
  railway variable set --service medha --skip-deploys "$K"
done

5. Deploy + attach domain

cd ~/tmp/medha-deploy
railway up --service medha --detach
railway domain --service medha
# → https://medha-production.up.railway.app/mcp

6. Smoke

BEARER=$(cat ~/.config/railway/medha-bearer.token)
URL=https://medha-production.up.railway.app/mcp

curl -sS -i -X POST "$URL" \
  -H "Authorization: Bearer *** \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"smoke","version":"0.0.1"}}}' \
  | head

HTTP 200 with a mcp-session-id UUID header → you're live.

7. Connect an agent

See presets.md for the canonical defaults table. For Claude Desktop / Claude Code CLI / Cursor / Codex CLI / Hermes / Jiva connector recipes, see CONNECTORS.md.


Configuration reference

Env Default Purpose
VENICE_API_KEY (required) (none) Operator's Venice API key. Forwarded as Authorization: Bearer to all upstream calls.
VENICE_SIWX_TOKEN (none) Optional SIWE-signed wallet token (x402 mode). Used only when VENICE_API_KEY is unset.
VENICE_MCP_HTTP (unset) Set to 1 to enable HTTP mode (binds :3333/mcp).
VENICE_MCP_HOST 127.0.0.1 Bind address. 0.0.0.0 for LAN/Railway.
VENICE_MCP_AUTH_TOKEN (none) Bearer required for /mcp when host ≠ loopback. Generate with python3 -c "import secrets; print(secrets.token_hex(32))".
VENICE_MCP_MAX_SESSIONS 100 Cap on concurrent Streamable HTTP sessions.
VENICE_MCP_SESSION_TTL_MS 1800000 Idle session TTL (30 min).
VENICE_HTTP_TIMEOUT_MS 60000 Per-call upstream timeout. Default 120s for video/music latencies.
VENICE_DISABLE_NSFW 0 Set to 1 to remove NSFW capability notes from tool descriptions.
VENICE_DEFAULT_CHAT_MODEL venice-uncensored Medhā default: minimax-m3-preview.
VENICE_DEFAULT_IMAGE_MODEL flux-2-pro (same as upstream)
VENICE_DEFAULT_TTS_MODEL tts-kokoro (same as upstream)
VENICE_DEFAULT_ASR_MODEL openai/whisper-large-v3 (same as upstream)
MEDHA_SERVER_NAME @medha/mcp-server Override the MCP serverInfo.name.
MEDHA_SERVER_VERSION 0.4.0-medha Override the MCP serverInfo.version.
PORT 3333 Railway-respected; controls the listener.

Operator preferences

The operator-curated defaults are baked into the tool descriptions so agents read them on every tools/list call. They are also a single canonical JSON document available via the medha://favorites resource:

# After defining BEARER + SID as in the smoke test:
curl -sS -X POST https://medha-production.up.railway.app/mcp \
  -H "Authorization: Bearer *** \
  -H "Content-Type: application/json" \
  -H "mcp-session-id: $SID" \
  -d '{"jsonrpc":"2.0","id":2,"method":"resources/read","params":{"uri":"medha://favorites"}}'

See presets.md for the full table with rationale per domain (reasoning / coding / roleplay / vision / longctx / image / music / video / etc.).

The operator prefs are HINTS, not hard rules. Agents you connect can pass model="<any-venice-id>" on any call and the server will forward it. The presets exist to save the agent from re-discovering the operator's taste on every prompt.


Workflow prompts (Medhā-only)

Beyond the upstream 3 (uncensored-research, nsfw-creative-writing, image-style-explorer), Medhā ships 4 workflow prompts that guide the agent into known-good multi-tool sequences:

Prompt Workflow Default models
medha_music_video_brief Quote → music gen → 4-12 image frames → video interpolation per frame → optional TTS. ace-step-15 (music) · flux-2-pro (image) · ltx-2 (video) · tts-kokoro (TTS)
medha_podcast_pipeline Web search → scrape top URLs → script via chat → TTS. qwen-3-7-max (chat) · tts-kokoro (TTS)
medha_dashboard_poster Chat-compose prompt → flux-2-pro → optional bg-remove → optional 2× upscale. qwen-3-7-max (chat) · flux-2-pro (image)
medha_character_dossier Dossier + system prompt via roleplay chat → TTS sample → optional avatar image. venice-uncensored-role-play (chat) · tts-kokoro (TTS) · flux-2-pro (image)

When the agent invokes one of these prompts, MCP returns a single user-role message that lays out the recommended tool-call sequence with the operator's preferred models. The agent then orchestrates from there.


Provenance + license

Upstream: github.com/veniceai/venice-mcp-server @ v0.2.0 — MIT-licensed by Venice AI. Medhā is a fork: same code, operator-tuned UX. No warranty or SLA from Venice AI. Use at your own risk.

Maintainer: Vivek M (@vivmuk). Brand: Medhā — Sanskrit medhā (मेधा) = wisdom / intelligence / mental power.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选