Skip to content

Polymcp provides a simple and efficient way to interact with MCP servers using custom agents

License

Notifications You must be signed in to change notification settings

poly-mcp/PolyMCP

Repository files navigation

PolymCP Logo

PyPI version Python Versions License GitHub stars PyPI downloads Website

Universal MCP toolkit and agent framework for Python and TypeScript.

Overview

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

What You Can Build

  • 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

Project Map

  • polymcp/ Python package (tools, agents, auth, sandbox, CLI)
  • polymcp-ts/ TypeScript implementation
  • polymcp-ts/use_cases/ TypeScript runnable B2B/B2C use cases
  • polymcp-inspector/ standalone Inspector app
  • polymcp_website/ marketing/docs website
  • use_cases/ Python runnable B2B/B2C use cases
  • polymcp_sdk_mcp_apps/ MCP Apps SDK
  • polymcp/cli/ CLI documentation
  • examples/ runnable examples
  • tests/ Python tests
  • registry/ sample registry files
  • my-project/ scaffold output from polymcp init

Quick Start (Python)

Requirements: Python 3.8+

pip install polymcp

Create 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 8000

Quick Start (TypeScript)

Requirements: Node.js 18+

cd polymcp-ts
npm install
npm run build

Skills (skills.sh)

PolyMCP 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 -g

Python 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

Skills.sh Agent Example (Python)

python examples/simple_example.py
polymcp skills add vercel-labs/agent-skills
python examples/skills_sh_agent_example.py

Minimal 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);

Inspector

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-browser

Open:

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

MCP Apps SDK

Use polymcp_sdk_mcp_apps/ to build UI-first MCP Apps quickly.

cd polymcp_sdk_mcp_apps
npm install
npm run example:quickstart

Connect Inspector to your app server and open the app://... resource in Resources.

Agent Orchestration Examples

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);

CLI

polymcp init my-project --type http-server
polymcp server add http://localhost:8000/mcp
polymcp agent run
polymcp inspector

See polymcp/cli/README.md for full commands.

Development

Python:

pip install -e .[dev]
python -m pytest

TypeScript:

cd polymcp-ts
npm run build
npm test
npm run lint

License

MIT