View on GitHub

Matimo - AI Tools Ecosystem

Define tools once in YAML, use them everywhere

Download this project as a .zip file Download this project as a tar.gz file

Provider Packages with Copilot — Quick Reference

One page for the contributor workflow in SETUP_GUIDE.md.

Start

cd python/examples/mcp && uv sync && uv run python src/server_http.py   # port 3101
curl -s http://localhost:3101/health

.vscode/mcp.json:

{ "servers": { "matimo-python-mcp-server": { "type": "http", "url": "http://localhost:3101/mcp" } } }

In Copilot Chat, choose Matimo Tool Creator and describe the provider and its API docs.

MCP Tools the Agent Uses

Tool Input Asks you first?
matimo_validate_tool yaml_content No
matimo_validate_skill name, skills_dir No
matimo_list_skills, matimo_get_skill name No
web URL No
search, read query, directory / filePath Yes
execute command Yes
edit filePath, operation, content Yes
matimo_create_skill name, content, target_dir Yes
matimo_reload_tools — Yes

matimo_create_tool and matimo_approve_tool are for agents creating their own runtime tools, not for provider packages.

Where Files Go

typescript/packages/<provider>/
├── package.json  README.md  definition.yaml (OAuth2 only)
├── tools/<tool>/definition.yaml           (+ <tool>.ts for function tools)
├── skills/<provider>/SKILL.md
└── test/unit/  test/integration/

python/packages/<provider>/
├── pyproject.toml  README.md
├── src/matimo_<provider>/tools/<tool>/definition.yaml   (+ <tool>.py for function tools)
└── tests/unit/  tests/integration/

typescript/examples/tools/<provider>/      factory, decorator, langchain, with-approval
python/examples/{native,langchain,crewai}/<provider>/

HTTP tool YAML is identical in both SDKs.

Tool YAML Essentials

name: provider_action              # snake_case, unique
description: From the API docs
version: '1.0.0'                   # leave status unset
parameters:
  item_id: { type: string, required: true, description: Item ID }
execution:
  type: http
  method: GET
  url: 'https://api.provider.com/v1/items/{item_id}'
  headers:
    Authorization: 'Bearer {PROVIDER_API_KEY}'   # MATIMO_PROVIDER_API_KEY or PROVIDER_API_KEY
  timeout: 15000
requires_approval: true            # required for DELETE / destructive calls

Checks

cd typescript && pnpm validate-tools && pnpm lint && pnpm test -- packages/<provider>
cd python && uv run ruff check packages/<provider> && uv run pytest packages/<provider>

Quick Fixes

Problem Fix
Port in use MATIMO_SERVER_PORT=3102
No tools in VS Code URL must end in /mcp; check /health
Agent can’t reach a tool Server name must be matimo-python-mcp-server
Approval error instead of a prompt Use a client with MCP elicitation support
New tool not visible Restart the server
Tool loads in Python only Remove status: stable