chore: rename integrations/ directory to mcp/ (#64)
This commit is contained in:
43 files changed
+49
-45
No files matched your search
@@ -4,7 +4,7 @@
|
||||
|
||||
- [ ] Agent (`agents/`)
|
||||
- [ ] Hand (`hands/`)
|
||||
- [ ] Integration (`integrations/`)
|
||||
- [ ] MCP Server (`mcp/`)
|
||||
- [ ] Skill (`skills/`)
|
||||
- [ ] Plugin (`plugins/`)
|
||||
- [ ] Provider / Model (`providers/`)
|
||||
@@ -42,7 +42,7 @@
|
||||
- [ ] `[[requires]]` lists external dependencies
|
||||
- [ ] `[[settings]]` provides user-configurable options
|
||||
|
||||
### Integrations (if applicable)
|
||||
### MCP Servers (if applicable)
|
||||
- [ ] `[transport]` config tested locally
|
||||
- [ ] `[[required_env]]` lists all needed variables
|
||||
- [ ] `setup_instructions` are clear for first-time users
|
||||
|
||||
@@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Changed
|
||||
|
||||
- `chore: rename integrations/ directory to mcp/ (no content change; every entry is an MCP server template)`
|
||||
|
||||
## [1.0.0] - 2026-03-21
|
||||
|
||||
### Added
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
providers/ @librefang/models
|
||||
agents/ @librefang/agents
|
||||
hands/ @librefang/agents
|
||||
integrations/ @librefang/integrations
|
||||
mcp/ @librefang/integrations
|
||||
skills/ @librefang/agents
|
||||
plugins/ @librefang/agents
|
||||
scripts/ @librefang/core
|
||||
|
||||
+4
-4
@@ -77,14 +77,14 @@ default = "true"
|
||||
- [ ] `[[requires]]` sections list any external dependencies (binaries, services)
|
||||
- [ ] `[[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
|
||||
id = "my-service"
|
||||
name = "My Service"
|
||||
description = "What this integration provides"
|
||||
description = "What this MCP server provides"
|
||||
category = "devtools" # devtools | communication | storage | monitoring | data
|
||||
icon = "🔌"
|
||||
tags = ["relevant", "tags"]
|
||||
@@ -107,7 +107,7 @@ setup_instructions = """
|
||||
"""
|
||||
```
|
||||
|
||||
### Integration Checklist
|
||||
### MCP Server Checklist
|
||||
|
||||
- [ ] `id` matches the filename (without `.toml`)
|
||||
- [ ] `[transport]` section is correct (test the MCP server command locally)
|
||||
|
||||
@@ -7,7 +7,7 @@ SHELL := /bin/bash
|
||||
TEMPLATES_DIR := templates
|
||||
AGENTS_DIR := agents
|
||||
HANDS_DIR := hands
|
||||
INTEGRATIONS_DIR := integrations
|
||||
INTEGRATIONS_DIR := mcp
|
||||
SKILLS_DIR := skills
|
||||
PLUGINS_DIR := plugins
|
||||
PROVIDERS_DIR := providers
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
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
|
||||
|
||||
@@ -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 |
|
||||
| [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 |
|
||||
| [Models](#providers) | 339 | Individual model definitions across all providers |
|
||||
| [Aliases](#aliases) | 70 | Short names mapped to canonical model IDs |
|
||||
@@ -37,10 +37,10 @@ librefang-registry/
|
||||
│ │ ├── HAND.toml
|
||||
│ │ └── SKILL.md
|
||||
│ └── ... (14 hands)
|
||||
├── integrations/ # MCP server integration templates
|
||||
├── mcp/ # MCP server templates
|
||||
│ ├── github.toml
|
||||
│ ├── slack.toml
|
||||
│ └── ... (25 integrations)
|
||||
│ └── ... (25 MCP servers)
|
||||
├── providers/ # LLM provider & model metadata
|
||||
│ ├── anthropic.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
|
||||
|
||||
### 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
|
||||
id = "github"
|
||||
@@ -180,9 +180,9 @@ name = "GITHUB_PERSONAL_ACCESS_TOKEN"
|
||||
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 |
|
||||
| Data | elasticsearch, mongodb, postgresql, redis, sqlite |
|
||||
@@ -264,8 +264,8 @@ librefang catalog update
|
||||
# Install a specific hand
|
||||
librefang hand install browser
|
||||
|
||||
# Install a specific integration
|
||||
librefang integration install github
|
||||
# Install a specific MCP server
|
||||
librefang mcp install github
|
||||
```
|
||||
|
||||
### Custom Local Content
|
||||
|
||||
+3
-3
@@ -2,11 +2,11 @@
|
||||
|
||||
## 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
|
||||
- Command injection in integration transport commands
|
||||
- Integration URLs pointing to phishing or malicious sites
|
||||
- Command injection in MCP server transport commands
|
||||
- MCP server URLs pointing to phishing or malicious sites
|
||||
- Credential exposure in TOML files
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
@@ -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
|
||||
|
||||
```
|
||||
integrations/
|
||||
mcp/
|
||||
├── github.toml
|
||||
├── slack.toml
|
||||
├── postgresql.toml
|
||||
└── ...
|
||||
```
|
||||
|
||||
## Integration TOML Format
|
||||
## MCP Server TOML Format
|
||||
|
||||
```toml
|
||||
id = "service-id" # Must match filename (without .toml)
|
||||
name = "Service Name"
|
||||
description = "What this integration provides"
|
||||
description = "What this MCP server provides"
|
||||
category = "devtools" # devtools | communication | storage | monitoring | data
|
||||
icon = "🐙"
|
||||
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 |
|
||||
| slack | communication | Slack messaging |
|
||||
| notion | productivity | Notion pages and databases |
|
||||
| postgresql | storage | PostgreSQL database |
|
||||
| ... | | 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
|
||||
3. Test the MCP server command locally
|
||||
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
@@ -604,7 +604,7 @@ default = true
|
||||
|
||||
[integration]
|
||||
description = "External service integration via MCP server"
|
||||
file_pattern = "integrations/<name>.toml"
|
||||
file_pattern = "mcp/<name>.toml"
|
||||
|
||||
[integration.fields.id]
|
||||
type = "string"
|
||||
|
||||
+13
-13
@@ -47,7 +47,7 @@ REQUIRED_MODEL_FIELDS = {
|
||||
"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]:
|
||||
@@ -138,8 +138,8 @@ def validate_hand_file(filepath: Path, integration_ids: set[str]) -> list[str]:
|
||||
|
||||
Args:
|
||||
filepath: Path to the HAND.toml file.
|
||||
integration_ids: Set of known integration IDs (filenames without .toml
|
||||
from the integrations/ directory) for cross-reference validation.
|
||||
integration_ids: Set of known MCP server IDs (filenames without .toml
|
||||
from the mcp/ directory) for cross-reference validation.
|
||||
"""
|
||||
data, err = load_toml(filepath)
|
||||
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:
|
||||
errors.append(
|
||||
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
|
||||
@@ -348,11 +348,11 @@ def main():
|
||||
all_errors = []
|
||||
stats = {}
|
||||
|
||||
# --- Collect integration IDs for cross-reference validation ---
|
||||
integrations_dir = root / "integrations"
|
||||
# --- Collect MCP server IDs for cross-reference validation ---
|
||||
mcp_dir = root / "mcp"
|
||||
integration_ids: set[str] = set()
|
||||
if integrations_dir.is_dir():
|
||||
for fp in integrations_dir.glob("*.toml"):
|
||||
if mcp_dir.is_dir():
|
||||
for fp in mcp_dir.glob("*.toml"):
|
||||
integration_ids.add(fp.stem)
|
||||
|
||||
# --- Providers ---
|
||||
@@ -410,12 +410,12 @@ def main():
|
||||
all_errors.append(f"hands/{d.name}: Missing HAND.toml")
|
||||
stats["hands"] = len(hand_dirs)
|
||||
|
||||
# --- Integrations ---
|
||||
if integrations_dir.is_dir() and should_validate("integrations", args.content_type):
|
||||
int_files = sorted(integrations_dir.glob("*.toml"))
|
||||
# --- MCP Servers ---
|
||||
if mcp_dir.is_dir() and should_validate("mcp", args.content_type):
|
||||
int_files = sorted(mcp_dir.glob("*.toml"))
|
||||
for fp in int_files:
|
||||
all_errors.extend(validate_integration_file(fp))
|
||||
stats["integrations"] = len(int_files)
|
||||
stats["mcp"] = len(int_files)
|
||||
|
||||
# --- Skills ---
|
||||
skills_dir = root / "skills"
|
||||
@@ -537,7 +537,7 @@ def main():
|
||||
print()
|
||||
|
||||
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:
|
||||
print(f" {key:20s} {stats[key]:>4}")
|
||||
print()
|
||||
|
||||
Reference in new issue
Block a user