Universal MCP toolkit and agent framework for Python and TypeScript.
PolyMCP gives teams one consistent way to expose tools, connect MCP servers, and run agents that orchestrate those tools. It ships in Python and TypeScript, plus a standalone Inspector and an MCP Apps SDK.
Version: 1.3.6
- MCP servers from normal functions
- MCP clients over HTTP, stdio, or in-process transports
- Agents that orchestrate one or more MCP servers
- Skills via skills.sh for tool selection and capability packaging
- UI-based MCP Apps with HTML resources and tool bridges
polymcp/Python package (tools, agents, auth, sandbox, CLI)polymcp-ts/TypeScript implementationpolymcp-ts/use_cases/TypeScript runnable B2B/B2C use casespolymcp-inspector/standalone Inspector apppolymcp_website/marketing/docs websiteuse_cases/Python runnable B2B/B2C use casespolymcp_sdk_mcp_apps/MCP Apps SDKpolymcp/cli/CLI documentationexamples/runnable examplestests/Python testsregistry/sample registry filesmy-project/scaffold output frompolymcp init
Requirements: Python 3.8+
pip install polymcpCreate an MCP HTTP server from plain functions:
from polymcp import expose_tools_http
def add(a: int, b: int) -> int:
return a + b
app = expose_tools_http(
tools=[add],
title="Math Server",
description="MCP tools over HTTP",
)Run:
uvicorn server:app --host 0.0.0.0 --port 8000Requirements: Node.js 18+
cd polymcp-ts
npm install
npm run buildPolyMCP delegates skills management to the skills.sh CLI. PolyAgent and UnifiedPolyAgent automatically inject relevant skills into prompts to improve tool selection and planning.
npx skills --help
# Install in current project (./.agents/skills)
npx skills add vercel-labs/agent-skills
# Install globally (~/.agents/skills)
npx skills add vercel-labs/agent-skills -g
npx skills list
npx skills list -gPython helper:
from polymcp import run_skills_cli
run_skills_cli(["add", "vercel-labs/agent-skills"])Agents load skills from:
./.agents/skills./.skills~/.agents/skills
If Python agents find no project skills, they print:
[WARN] No project skills found in .agents/skills or .skills.
Use global skills: polymcp skills add vercel-labs/agent-skills -g
Or local skills: polymcp skills add vercel-labs/agent-skills
python examples/simple_example.py
polymcp skills add vercel-labs/agent-skills
python examples/skills_sh_agent_example.pyMinimal server:
import { tool, exposeToolsHttp } from 'polymcp-ts';
import { z } from 'zod';
const add = tool({
name: 'add',
description: 'Add two numbers',
parameters: z.object({ a: z.number(), b: z.number() }),
execute: async ({ a, b }) => a + b,
});
const app = await exposeToolsHttp([add], {
title: 'Math Server',
description: 'MCP tools over HTTP',
version: '1.0.0',
});
app.listen(3000);The Inspector is the fastest way to test MCP servers, tools, prompts, and UI resources.
Run standalone Inspector:
cd polymcp-inspector
python -m polymcp_inspector --host 127.0.0.1 --port 6274 --no-browserOpen:
http://127.0.0.1:6274/
Features:
- chat playground with independent multi-tab sessions (per-tab provider, model, servers, and history)
- tool, resource, and prompt explorers
- MCP Apps UI preview with tool-call bridge
- LLM orchestration (Ollama, OpenAI, Anthropic)
- settings page for Inspector/OpenAI/Claude API keys
- auto-tools routing (LLM decides if tools are needed)
- secure mode with API key and rate limits
Use polymcp_sdk_mcp_apps/ to build UI-first MCP Apps quickly.
cd polymcp_sdk_mcp_apps
npm install
npm run example:quickstartConnect Inspector to your app server and open the app://... resource in Resources.
Python, multiple MCP servers:
from polymcp.polyagent import UnifiedPolyAgent, OpenAIProvider
agent = UnifiedPolyAgent(
llm_provider=OpenAIProvider(model="gpt-4o-mini"),
mcp_servers=[
"http://localhost:8000/mcp",
"http://localhost:8001/mcp",
],
verbose=True,
)
answer = agent.run("Read sales data, compute totals, then summarize.")
print(answer)TypeScript, HTTP + stdio:
import { UnifiedPolyAgent, OpenAIProvider } from 'polymcp-ts';
const agent = new UnifiedPolyAgent({
llmProvider: new OpenAIProvider({
apiKey: process.env.OPENAI_API_KEY!,
model: 'gpt-4o-mini',
}),
mcpServers: ['http://localhost:3000/mcp'],
stdioServers: [{ command: 'npx', args: ['@playwright/mcp@latest'] }],
verbose: true,
});
await agent.start();
const answer = await agent.run('Collect data and summarize.');
console.log(answer);polymcp init my-project --type http-server
polymcp server add http://localhost:8000/mcp
polymcp agent run
polymcp inspectorSee polymcp/cli/README.md for full commands.
Python:
pip install -e .[dev]
python -m pytestTypeScript:
cd polymcp-ts
npm run build
npm test
npm run lintMIT
