chore: rename integrations/ directory to mcp/ (#64)

This commit is contained in:
Evan authored and GitHub committed 2026-04-17 23:38:44 +09:00
1 parent 7881d327a5
commit 38899238d7
43 files changed
+49 -45

No files matched your search

+2 -2
View File
@@ -4,7 +4,7 @@
- [ ] Agent (`agents/`) - [ ] Agent (`agents/`)
- [ ] Hand (`hands/`) - [ ] Hand (`hands/`)
- [ ] Integration (`integrations/`) - [ ] MCP Server (`mcp/`)
- [ ] Skill (`skills/`) - [ ] Skill (`skills/`)
- [ ] Plugin (`plugins/`) - [ ] Plugin (`plugins/`)
- [ ] Provider / Model (`providers/`) - [ ] Provider / Model (`providers/`)
@@ -42,7 +42,7 @@
- [ ] `[[requires]]` lists external dependencies - [ ] `[[requires]]` lists external dependencies
- [ ] `[[settings]]` provides user-configurable options - [ ] `[[settings]]` provides user-configurable options
### Integrations (if applicable) ### MCP Servers (if applicable)
- [ ] `[transport]` config tested locally - [ ] `[transport]` config tested locally
- [ ] `[[required_env]]` lists all needed variables - [ ] `[[required_env]]` lists all needed variables
- [ ] `setup_instructions` are clear for first-time users - [ ] `setup_instructions` are clear for first-time users
+4
View File
@@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
## [Unreleased] ## [Unreleased]
### Changed
- `chore: rename integrations/ directory to mcp/ (no content change; every entry is an MCP server template)`
## [1.0.0] - 2026-03-21 ## [1.0.0] - 2026-03-21
### Added ### Added
+1 -1
View File
@@ -4,7 +4,7 @@
providers/ @librefang/models providers/ @librefang/models
agents/ @librefang/agents agents/ @librefang/agents
hands/ @librefang/agents hands/ @librefang/agents
integrations/ @librefang/integrations mcp/ @librefang/integrations
skills/ @librefang/agents skills/ @librefang/agents
plugins/ @librefang/agents plugins/ @librefang/agents
scripts/ @librefang/core scripts/ @librefang/core
+4 -4
View File
@@ -77,14 +77,14 @@ default = "true"
- [ ] `[[requires]]` sections list any external dependencies (binaries, services) - [ ] `[[requires]]` sections list any external dependencies (binaries, services)
- [ ] `[[settings]]` sections provide user-configurable options where appropriate - [ ] `[[settings]]` sections provide user-configurable options where appropriate
## Adding an Integration ## Adding an MCP Server
Create a file `integrations/<name>.toml`: Create a file `mcp/<name>.toml`:
```toml ```toml
id = "my-service" id = "my-service"
name = "My Service" name = "My Service"
description = "What this integration provides" description = "What this MCP server provides"
category = "devtools" # devtools | communication | storage | monitoring | data category = "devtools" # devtools | communication | storage | monitoring | data
icon = "🔌" icon = "🔌"
tags = ["relevant", "tags"] tags = ["relevant", "tags"]
@@ -107,7 +107,7 @@ setup_instructions = """
""" """
``` ```
### Integration Checklist ### MCP Server Checklist
- [ ] `id` matches the filename (without `.toml`) - [ ] `id` matches the filename (without `.toml`)
- [ ] `[transport]` section is correct (test the MCP server command locally) - [ ] `[transport]` section is correct (test the MCP server command locally)
+1 -1
View File
@@ -7,7 +7,7 @@ SHELL := /bin/bash
TEMPLATES_DIR := templates TEMPLATES_DIR := templates
AGENTS_DIR := agents AGENTS_DIR := agents
HANDS_DIR := hands HANDS_DIR := hands
INTEGRATIONS_DIR := integrations INTEGRATIONS_DIR := mcp
SKILLS_DIR := skills SKILLS_DIR := skills
PLUGINS_DIR := plugins PLUGINS_DIR := plugins
PROVIDERS_DIR := providers PROVIDERS_DIR := providers
+10 -10
View File
@@ -2,7 +2,7 @@
Community-maintained content registry for [LibreFang](https://github.com/librefang/librefang) — the open-source Agent Operating System. Community-maintained content registry for [LibreFang](https://github.com/librefang/librefang) — the open-source Agent Operating System.
This repository is the **single source of truth** for all installable content definitions. Anyone can submit a PR to add new agents, hands, integrations, skills, or provider models — no changes to the LibreFang binary required. This repository is the **single source of truth** for all installable content definitions. Anyone can submit a PR to add new agents, hands, MCP servers, skills, or provider models — no changes to the LibreFang binary required.
## Overview ## Overview
@@ -10,7 +10,7 @@ This repository is the **single source of truth** for all installable content de
|------|------:|-------------| |------|------:|-------------|
| [Hands](#hands) | 14 | User-facing "apps" — agent + tools + settings + dashboard | | [Hands](#hands) | 14 | User-facing "apps" — agent + tools + settings + dashboard |
| [Agents](#agents) | 32 | Autonomous agent definitions with model config and tools | | [Agents](#agents) | 32 | Autonomous agent definitions with model config and tools |
| [Integrations](#integrations) | 25 | MCP server connections (GitHub, Slack, DBs, etc.) | | [MCP Servers](#mcp-servers) | 25 | MCP server connections (GitHub, Slack, DBs, etc.) |
| [Providers](#providers) | 49 | LLM provider & model metadata with pricing | | [Providers](#providers) | 49 | LLM provider & model metadata with pricing |
| [Models](#providers) | 339 | Individual model definitions across all providers | | [Models](#providers) | 339 | Individual model definitions across all providers |
| [Aliases](#aliases) | 70 | Short names mapped to canonical model IDs | | [Aliases](#aliases) | 70 | Short names mapped to canonical model IDs |
@@ -37,10 +37,10 @@ librefang-registry/
│ │ ├── HAND.toml │ │ ├── HAND.toml
│ │ └── SKILL.md │ │ └── SKILL.md
│ └── ... (14 hands) │ └── ... (14 hands)
├── integrations/ # MCP server integration templates ├── mcp/ # MCP server templates
│ ├── github.toml │ ├── github.toml
│ ├── slack.toml │ ├── slack.toml
│ └── ... (25 integrations) │ └── ... (25 MCP servers)
├── providers/ # LLM provider & model metadata ├── providers/ # LLM provider & model metadata
│ ├── anthropic.toml │ ├── anthropic.toml
│ ├── openai.toml │ ├── openai.toml
@@ -161,9 +161,9 @@ tools = ["web_search", "file_read"]
**32 built-in agents:** academic-researcher, analyst, architect, assistant, code-reviewer, coder, customer-support, data-scientist, debugger, devops-lead, doc-writer, email-assistant, health-tracker, hello-world, home-automation, legal-assistant, meeting-assistant, ops, orchestrator, personal-finance, planner, recipe-assistant, recruiter, researcher, sales-assistant, security-auditor, social-media, test-engineer, translator, travel-planner, tutor, writer **32 built-in agents:** academic-researcher, analyst, architect, assistant, code-reviewer, coder, customer-support, data-scientist, debugger, devops-lead, doc-writer, email-assistant, health-tracker, hello-world, home-automation, legal-assistant, meeting-assistant, ops, orchestrator, personal-finance, planner, recipe-assistant, recruiter, researcher, sales-assistant, security-auditor, social-media, test-engineer, translator, travel-planner, tutor, writer
### Integrations ### MCP Servers
Integration templates define [MCP](https://modelcontextprotocol.io/) server connections with transport configuration, required environment variables, and setup instructions. MCP server templates define [MCP](https://modelcontextprotocol.io/) server connections with transport configuration, required environment variables, and setup instructions.
```toml ```toml
id = "github" id = "github"
@@ -180,9 +180,9 @@ name = "GITHUB_PERSONAL_ACCESS_TOKEN"
is_secret = true is_secret = true
``` ```
**25 integrations across 6 categories:** **25 MCP servers across 6 categories:**
| Category | Integrations | | Category | MCP Servers |
|----------|-------------| |----------|-------------|
| DevTools | bitbucket, github, gitlab, jira, linear, sentry | | DevTools | bitbucket, github, gitlab, jira, linear, sentry |
| Data | elasticsearch, mongodb, postgresql, redis, sqlite | | Data | elasticsearch, mongodb, postgresql, redis, sqlite |
@@ -264,8 +264,8 @@ librefang catalog update
# Install a specific hand # Install a specific hand
librefang hand install browser librefang hand install browser
# Install a specific integration # Install a specific MCP server
librefang integration install github librefang mcp install github
``` ```
### Custom Local Content ### Custom Local Content
+3 -3
View File
@@ -2,11 +2,11 @@
## Scope ## Scope
This repository contains TOML content definitions (agents, hands, integrations, skills, plugins, providers). Security concerns include: This repository contains TOML content definitions (agents, hands, MCP servers, skills, plugins, providers). Security concerns include:
- Malicious content in system prompts or descriptions - Malicious content in system prompts or descriptions
- Command injection in integration transport commands - Command injection in MCP server transport commands
- Integration URLs pointing to phishing or malicious sites - MCP server URLs pointing to phishing or malicious sites
- Credential exposure in TOML files - Credential exposure in TOML files
## Reporting a Vulnerability ## Reporting a Vulnerability
+10 -10
View File
@@ -1,23 +1,23 @@
# Integrations # MCP Servers
MCP (Model Context Protocol) server integration templates for LibreFang. Each integration connects LibreFang to an external service (GitHub, Slack, databases, etc.). MCP (Model Context Protocol) server templates for LibreFang. Each entry connects LibreFang to an external service (GitHub, Slack, databases, etc.).
## Structure ## Structure
``` ```
integrations/ mcp/
├── github.toml ├── github.toml
├── slack.toml ├── slack.toml
├── postgresql.toml ├── postgresql.toml
└── ... └── ...
``` ```
## Integration TOML Format ## MCP Server TOML Format
```toml ```toml
id = "service-id" # Must match filename (without .toml) id = "service-id" # Must match filename (without .toml)
name = "Service Name" name = "Service Name"
description = "What this integration provides" description = "What this MCP server provides"
category = "devtools" # devtools | communication | storage | monitoring | data category = "devtools" # devtools | communication | storage | monitoring | data
icon = "🐙" icon = "🐙"
tags = ["relevant", "tags"] tags = ["relevant", "tags"]
@@ -49,19 +49,19 @@ Step-by-step setup guide for users.
""" """
``` ```
## Current Integrations (25) ## Current MCP Servers (25)
| Integration | Category | Service | | MCP Server | Category | Service |
|-------------|----------|---------| |------------|----------|---------|
| github | devtools | GitHub repos, issues, PRs | | github | devtools | GitHub repos, issues, PRs |
| slack | communication | Slack messaging | | slack | communication | Slack messaging |
| notion | productivity | Notion pages and databases | | notion | productivity | Notion pages and databases |
| postgresql | storage | PostgreSQL database | | postgresql | storage | PostgreSQL database |
| ... | | See each file for details | | ... | | See each file for details |
## Adding a New Integration ## Adding a New MCP Server
1. Create `integrations/<name>.toml` 1. Create `mcp/<name>.toml`
2. Ensure `id` matches the filename 2. Ensure `id` matches the filename
3. Test the MCP server command locally 3. Test the MCP server command locally
4. Run `python scripts/validate.py` 4. Run `python scripts/validate.py`
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+1 -1
View File
@@ -604,7 +604,7 @@ default = true
[integration] [integration]
description = "External service integration via MCP server" description = "External service integration via MCP server"
file_pattern = "integrations/<name>.toml" file_pattern = "mcp/<name>.toml"
[integration.fields.id] [integration.fields.id]
type = "string" type = "string"
+13 -13
View File
@@ -47,7 +47,7 @@ REQUIRED_MODEL_FIELDS = {
"input_cost_per_m", "output_cost_per_m", "input_cost_per_m", "output_cost_per_m",
} }
VALID_CONTENT_TYPES = {"providers", "agents", "hands", "integrations", "skills", "plugins", "aliases"} VALID_CONTENT_TYPES = {"providers", "agents", "hands", "mcp", "skills", "plugins", "aliases"}
def load_toml(filepath: Path) -> tuple[dict | None, str | None]: def load_toml(filepath: Path) -> tuple[dict | None, str | None]:
@@ -138,8 +138,8 @@ def validate_hand_file(filepath: Path, integration_ids: set[str]) -> list[str]:
Args: Args:
filepath: Path to the HAND.toml file. filepath: Path to the HAND.toml file.
integration_ids: Set of known integration IDs (filenames without .toml integration_ids: Set of known MCP server IDs (filenames without .toml
from the integrations/ directory) for cross-reference validation. from the mcp/ directory) for cross-reference validation.
""" """
data, err = load_toml(filepath) data, err = load_toml(filepath)
if err: if err:
@@ -175,7 +175,7 @@ def validate_hand_file(filepath: Path, integration_ids: set[str]) -> list[str]:
if req_key and req_key not in integration_ids: if req_key and req_key not in integration_ids:
errors.append( errors.append(
f"{rel}: [[requires]] references integration '{req_key}' " f"{rel}: [[requires]] references integration '{req_key}' "
f"but no integrations/{req_key}.toml exists" f"but no mcp/{req_key}.toml exists"
) )
return errors return errors
@@ -348,11 +348,11 @@ def main():
all_errors = [] all_errors = []
stats = {} stats = {}
# --- Collect integration IDs for cross-reference validation --- # --- Collect MCP server IDs for cross-reference validation ---
integrations_dir = root / "integrations" mcp_dir = root / "mcp"
integration_ids: set[str] = set() integration_ids: set[str] = set()
if integrations_dir.is_dir(): if mcp_dir.is_dir():
for fp in integrations_dir.glob("*.toml"): for fp in mcp_dir.glob("*.toml"):
integration_ids.add(fp.stem) integration_ids.add(fp.stem)
# --- Providers --- # --- Providers ---
@@ -410,12 +410,12 @@ def main():
all_errors.append(f"hands/{d.name}: Missing HAND.toml") all_errors.append(f"hands/{d.name}: Missing HAND.toml")
stats["hands"] = len(hand_dirs) stats["hands"] = len(hand_dirs)
# --- Integrations --- # --- MCP Servers ---
if integrations_dir.is_dir() and should_validate("integrations", args.content_type): if mcp_dir.is_dir() and should_validate("mcp", args.content_type):
int_files = sorted(integrations_dir.glob("*.toml")) int_files = sorted(mcp_dir.glob("*.toml"))
for fp in int_files: for fp in int_files:
all_errors.extend(validate_integration_file(fp)) all_errors.extend(validate_integration_file(fp))
stats["integrations"] = len(int_files) stats["mcp"] = len(int_files)
# --- Skills --- # --- Skills ---
skills_dir = root / "skills" skills_dir = root / "skills"
@@ -537,7 +537,7 @@ def main():
print() print()
print("Content summary:") print("Content summary:")
for key in ("providers", "models", "agents", "hands", "integrations", "skills", "plugins"): for key in ("providers", "models", "agents", "hands", "mcp", "skills", "plugins"):
if key in stats: if key in stats:
print(f" {key:20s} {stats[key]:>4}") print(f" {key:20s} {stats[key]:>4}")
print() print()