Skip to main content
Glama
JeremyLakeyJr

Friday MCP Server

README.md
# 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

B3.1/5.0

Scored across 21 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness4/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues