Friday MCP Server
# Friday MCP Server
Successor MCP server for [Friday](https://github.com/JeremyLakeyJr/friday), built on the same FastMCP pattern but organized as a standalone package with a self-extension workflow.
## What it provides
- **Core MCP server** with FastMCP entrypoints and reusable registration modules.
- **Research tools** for web search, URL fetch, and live world-news summaries.
- **Workspace tools** for reading, writing, listing, and executing commands inside a configured workspace root.
- **Self-extension tools** that let Friday validate, install, activate, deactivate, remove, and roll back skills.
- **Prompt and resource surfaces** so clients can inspect the active skill catalog and get templates for researching or authoring new skills.
## Skill model
Skills are markdown documents with YAML front matter stored under `skills/installed/`.
- They are **data-driven prompt assets**, not arbitrary Python plugins.
- New skills can be created from generated markdown or downloaded from a URL.
- Successful installs are **activated automatically** by default.
- Reinstalling an existing skill creates a timestamped backup for rollback.
- Each installed skill records provenance, compatibility, checksum, and activation state.
Example:
```md
---
id: web-research
name: Web Research
version: 1.0.0
description: Gather and compare information from multiple current sources.
capabilities:
- search
- citation
min_server_version: 0.1.0
---
Use web search to gather multiple sources before drawing conclusions.
Prefer primary or official sources when possible.
```
## Quick start
```bash
uv sync --extra dev
cp .env.example .env
uv run friday-mcp-server
```
By default the server runs over `stdio`. To run over SSE instead:
```bash
FRIDAY_MCP_TRANSPORT=sse uv run friday-mcp-server
```
## Friday integration
Point a Friday MCP client at this server's transport:
- **stdio clients**: invoke `uv run friday-mcp-server`
- **SSE clients**: run with `FRIDAY_MCP_TRANSPORT=sse` and connect to `/sse`
The server exposes:
- `fetch_url`, `search_web`, `get_world_news`
- `list_workspace`, `read_file`, `write_file`, `run_bash`
- `list_skills`, `get_skill`, `validate_skill_markdown`
- `install_skill_from_markdown`, `install_skill_from_url`
- `activate_skill`, `deactivate_skill`, `remove_skill`, `rollback_skill`
- `get_current_time`, `get_system_info`, `format_json`, `word_count`
## Repository layout
```text
src/friday_mcp_server/
config.py
server.py
skill_store.py
prompts/
resources/
tools/
skills/
installed/
tests/
```
## Development
```bash
uv run pytest
```
TDQS
Scored across 21 tools
Tools are grouped into clear categories (skill management, workspace, utilities) with distinct purposes. Only minor potential overlap between search_web and get_world_news (both fetch external info) but descriptions differentiate them.
All tools follow a consistent verb_noun pattern with underscores, e.g., activate_skill, fetch_url, get_current_time. Verbs are descriptive and noun targets are clear, making the set predictable.
21 tools is slightly above typical range (3-15) but each tool serves a well-defined purpose and covers a broad domain (skills, workspace, utilities) without redundancy. Could be trimmed slightly but still reasonable.
The tool set covers essential skill lifecycle (install, activate, deactivate, remove, rollback) and workspace operations (read/write/list). Minor gaps like direct skill content update are missing, but rollback and reinstall compensate. Utility tools add breadth.