Company Skills Gateway
This MCP server reads team SKILL.md files from a local folder and returns relevant ones to Cursor, while recording usage in a local SQLite database.
README
Company Skills Gateway
This is a deliberately small MCP server for a small engineering team. It does two things:
- Reads team
SKILL.mdfiles from a folder and returns the relevant ones to Cursor. - Records who requested guidance and which skill versions were returned in a local SQLite file.
There is no PostgreSQL, Alembic, ORM, Docker requirement, OIDC provider, webhook, polling loop, scheduled updater, metrics stack, admin framework, or signed client release pipeline.
How it works
- Put each skill at
sample-skill-catalog/<skill-name>/SKILL.md. - Cursor calls
company-skills.prepare_contextover Streamable HTTP. - The server reads the files on that request, so saved edits are live immediately.
- A deterministic matcher uses repository, path, language, framework, task kind, and keywords.
- One row is written to
company-skills.dbwith the developer, repository, result, and exact skill names, versions, and hashes.
The server does not store task summaries, source code, branches, paths, secrets, or environment values. A delivery log proves that guidance was returned, not that Cursor followed it.
Requirements
- uv
- Python 3.11, installed automatically by uv if necessary
- On developer PCs: built-in Windows PowerShell 5.1 or newer
Start the shared server
uv sync --frozen
cp .env.example .env.dev
ln -sf .env.dev .env
uv run --env-file .env company-skills-gateway
The defaults listen only on 127.0.0.1:8000. Set SKILLS_HOST=0.0.0.0 on the one machine that
will serve the six developers, then use that machine's internal DNS name in the installer.
Check it:
curl http://127.0.0.1:8000/healthz
curl http://127.0.0.1:8000/usage
If SKILLS_API_KEY is set, /mcp and /usage require it:
curl -H "X-Skills-Key: your-shared-key" http://127.0.0.1:8000/usage
Treat this as a simple internal shared key, not a replacement for network access controls. Put the server on the company LAN/VPN and use HTTPS through the reverse proxy you already have if traffic leaves a trusted network.
Install on Windows
From a clone or shared copy of this repository:
powershell -ExecutionPolicy Bypass -File .\installer\Install-CompanySkills.ps1 `
-McpUrl 'http://skills-box:8000/mcp' `
-ApiKey 'your-shared-key'
Omit -ApiKey if the server does not set SKILLS_API_KEY. The installer uses $env:USERNAME for
usage attribution; override it with -Developer. It only:
- merges a
company-skillsentry into~/.cursor/mcp.json, including the developer header; and - copies the small bootstrap skill to
~/.agents/skills/company-skills-bootstrap/SKILL.md.
It does not require administrator rights, PowerShell modules, code-signing certificates, scheduled tasks, workspace scanning, or a separate update process. Server-side skill changes need no client update. Restart Cursor once after installation.
To remove those two entries:
powershell -ExecutionPolicy Bypass -File .\installer\Uninstall-CompanySkills.ps1
Add or change a skill
Copy one of the existing folders and edit its SKILL.md. The useful matching fields are:
---
name: example-skill
description: When this team guidance is useful.
paths: ["**/*.py"]
metadata:
version: "1.0.0"
status: active
languages: [python]
frameworks: [fastapi]
repo_patterns: ["engineering/*"]
task_kinds: [implementation, review]
trigger_keywords: [api, endpoint]
priority: 50
always_include: false
---
Then validate the whole directory:
uv run company-skills-catalog sample-skill-catalog
Unknown metadata is ignored on purpose, which makes experiments cheap. A malformed skill name,
frontmatter block, or body makes /healthz fail visibly instead of silently serving stale content.
Running
| Command | What it does |
|---|---|
uv run --env-file .env company-skills-gateway |
Runs the MCP service and usage endpoint. |
uv run company-skills-catalog sample-skill-catalog |
Validates and lists the current skills. |
uv run pytest --cov |
Runs all tests and the coverage ratchet. |
uv run ruff check . |
Runs lint checks. |
uv run basedpyright |
Runs type checks. |
Code map
config.py— seven environment-backed settings.catalog.py— skill parsing and deterministic matching.usage.py— one SQLite table and one report.main.py— the MCP tool, three HTTP routes, and optional shared-key check.installer/— one install script and one uninstall script.
SQLite is intentionally the operational interface too. If you want an ad hoc report, use the
/usage JSON or open company-skills.db with any SQLite browser. If the team eventually outgrows
one process and one disk, that is the point to reconsider a shared database—not before.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.