MMSP skills

Two skills that teach an agent to write code with the MMSP SDK: one client for many model providers in Python and TypeScript.

  • 123 ★ on the repository
  • Last commit
  • Apache-2.0
Skill

Minimal access

Why this level

  • The skills supply instructions only and run nothing themselves, but code written from them calls model APIs with your keys.
All reasons and checks

prism-shadow/model-message-stream-protocol

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add skills/mmsp-skills

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Minimal accessThe tool runs nothing and makes no network calls.

  • The skills supply instructions only and run nothing themselves, but code written from them calls model APIs with your keys.

This is third-party code. Review the repository files before installing.

What it does

The repository's `skills/` folder holds two skills: `mmsp-python` and `mmsp-typescript`. They explain to an agent how to use the MMSP (Model Message Stream Protocol) SDK when writing code that talks to different LLMs. A skill triggers when the user mentions MMSP, asks for `mmsp` or `@prismshadow/mmsp`, or already imports the package. The SDK gives providers one message format and one streaming grammar. The `AutoLLMClient` client switches models with no code changes, handles interleaved thinking across tool-call chains and adds tracing through a `trace_id` parameter. The skills include a weather tool-call example, and model, key and address selection sits in the `reference/models.md` reference.

Who it is for. Agent developers calling models from several providers who want Claude Code or Codex to write calls following the SDK rules.

Good fit when

  • An agent must switch between Claude, GPT and Gemini without rewriting client code.
  • A tool-call chain with interleaved thinking breaks when the provider changes.
  • Model requests need to be audited by a single `trace_id` parameter without a database.
  • A Python or TypeScript project already imports `mmsp`, and the agent mixes up message formats.

Not a fit when

  • You work with one provider through its native SDK and need no shared layer.
  • The code is not in Python or TypeScript.
  • You want code-style guidance: the skills describe only the MMSP SDK.

Example request

Write a Python MMSP client that calls a get_weather tool and sends the result back to the model in streaming mode.

Limitations

The skills explain the SDK and do not replace provider keys: each client reads its own variable such as `OPENAI_API_KEY` or `ANTHROPIC_API_KEY`. The list of models and clients changes quickly; `list_supported_models()` returns the current one. Skill installation is manual: the README gives no command for them. The stateful interface is recommended. The SDK is installed separately, `uv add mmsp` or `pip install mmsp` for Python, `npm install @prismshadow/mmsp` for TypeScript.

How to disable. Delete the `mmsp-python` and `mmsp-typescript` folders from the client's skills directory and open a new session.

FAQ

Which skills are in the repository?

Two: `skills/mmsp-python/SKILL.md` and `skills/mmsp-typescript/SKILL.md`. The first covers the `mmsp` package, the second `@prismshadow/mmsp`.

How do I install the SDK itself?

For Python run `uv add mmsp` or `pip install mmsp`, for TypeScript `npm install @prismshadow/mmsp`. The skills do not install the SDK.

What does `AutoLLMClient` do?

It takes a model id and a client type, and for known families (`gpt-`, `claude-`, `gemini-` and others) deduces the client itself. Switching models needs no code changes.

How do I turn on tracing?

Pass a single `trace_id` parameter. According to the project description, no database is needed to audit calls.

Which models does the SDK support?

They include Claude, GPT, Gemini, Kimi, DeepSeek, GLM, MiniMax and Qwen through official APIs and gateways such as OpenRouter. `list_supported_models()` returns the current list.

Discussion

No questions or reviews yet.

Skills

Meta Skill (ms)

Meta Skill

Meta Skill (ms) keeps skills locally in SQLite and Git, searches them with a hybrid index and serves agents over MCP

CLIExtended access213Repository stars
Official

A skill registry for teams with security scanning and versioning; the MCP server finds and installs skills on request.

MCP serverExtended access78Repository stars

A meta-skill that splits a task into stages, picks a profile and runs multi-agent work in Codex and Claude Code.

SkillExtended access59Repository stars

Ten skills for LLM serving: SGLang and vLLM benchmarks, profiler triage, memory planning and PR history.

SkillMinimal access1.2KRepository stars

A CLI and MCP server for Agent Skills: spec validation, installs from GitHub and on-demand loading of the right skill

CLIExtended access421Repository stars

A skill that gives text-only models sight: an image by path or from a paste becomes structured JSON with transcribed text, layout and semantics

SkillExtended access4.9KRepository stars

README in short

The README presents the SDK, a table of supported models and client types, installation for Python and TypeScript, the `AutoLLMClient` methods and basic examples. The Agent Skills section points to the two skills.

README badge

Original SKILL.md

---
name: mmsp-python
description: Guidance for using the MMSP Python SDK (`mmsp`). Use when developing agents that call different LLM APIs, need a unified interface for LLM providers, mention MMSP, request `mmsp`, or already import it.
---

# MMSP Python

MMSP is a unified SDK for calling LLMs across providers with shared data models, tool calling, tracing, and playground support.

## Installation

```bash
uv add mmsp
# or
pip install mmsp
```

For model IDs, API keys, and base URLs, see [Model selection](reference/models.md).

## Basic Usage

This example asks GPT to call a weather tool, runs the tool, then sends the result back.

```python
import asyncio
from mmsp import AutoLLMClient


def get_weather(location: str) -> str:
    return f"Temperature in {location}: 22 C"


# Map tool names to their implementations so calls can be dispatched by name.
TOOLS = {"get_weather": get_weather}


async def main():
    weather_function = {
        "name": "get_weather",
        "description": "Gets the current weather for a given location.",
        "parameters": {
            "type": "object",
            "properties": {
                "location": {
                    "type": "string",
                    "description": "The city name"
                }
            },
            "required": ["location"]
        }

Report a problem