fix(providers): remove ~anthropic, skip ~ prefixes in sync script (#69)
* fix(providers): remove ~anthropic, skip ~ prefixes in sync script
OpenRouter uses ~ prefixes for internal auto-routing aliases (e.g. ~anthropic).
These are not real providers — they already route through openrouter.toml.
The generated ~anthropic.toml was confusing (looked like a stale backup)
and redundant with the existing openrouter provider.
- Delete providers/~anthropic.toml
- Skip provider IDs starting with ~ in sync-pricing.py --create-missing
* fix(providers): remove morph, aider, kwaipilot
- morph: specialized code-editing/patching tool, not a general LLM provider
- aider: CLI meta-tool wrapper (base_url empty), redundant with claude-code/codex-cli/gemini-cli/qwen-code
- kwaipilot: Kwai internal coding assistant routed via OpenRouter, niche
* fix(sync): add morph/aider/kwaipilot to SKIP_PROVIDERS to prevent re-creation
* feat(sync): merge OpenRouter-only providers into openrouter.toml
Instead of generating standalone .toml files that just wrap the OpenRouter
endpoint, merge their models directly into openrouter.toml with the
standard 'openrouter/{provider}/{model}' ID convention.
- Add _build_model_fields() and _model_lines() helpers to deduplicate
model rendering between standalone and merged paths
- Add merge_into_openrouter() that appends new models idempotently
- generate_provider_toml() now only runs for providers in PROVIDER_API
- --create-missing routes OpenRouter-only providers to merge_into_openrouter
* fix(providers): remove 14 OpenRouter-only standalone files
These providers have no direct public API and all route through
openrouter.ai/api/v1. Per the new sync-pricing.py policy, their models
will be merged into openrouter.toml on the next CI run instead of
living in separate files that just wrap the OpenRouter endpoint.
Removed: allenai, deepcogito, essentialai, inclusionai, inflection,
liquid, meituan, nex-agi, nousresearch, prime-intellect, relace,
switchpoint, tngtech, writer
* fix(providers): remove 7 niche providers with no driver support
No dedicated LLM driver code exists for these providers — they rely
purely on OpenAI-compatible passthrough with no special handling.
Removing them reduces registry noise; users can still reach them via
openrouter.toml if needed.
Removed: microsoft, ibm-granite, xiaomi, upstage, inception, aion-labs, arcee-ai
* fix(providers): remove ai21, chutes, venice
All three use ApiFormat::OpenAI with no special handling — pure passthrough.
No registry entry needed; users can reach them via openrouter.toml or by
adding a custom provider.
* docs(providers): rewrite README with full provider catalog and inclusion criteria
- List all 46 providers grouped by category with descriptions
- Document why each provider exists (direct API, unique endpoint, dedicated driver, local, CLI)
- Add inclusion criteria section explaining when to create standalone files vs merging into openrouter.toml
- Document sync script routing logic
- Update model counts: 49→46 providers, 339→232 models
* docs: add comprehensive READMEs for all registry sections + deepinfra provider
- agents/README.md: 32 agents across 7 categories with capability field reference
- channels/README.md: 44 channels across 5 categories with protocol reference table
- hands/README.md: 18 hands across 5 categories with HAND.toml format guide
- mcp/README.md: 33 MCP servers across 5 categories with transport/auth format
- plugins/README.md: 12 plugins with hook protocol documentation
- skills/README.md: 60 skills across 9 categories with SKILL.md format guide
- providers/deepinfra.toml: add DeepInfra serverless inference (5 models)
This commit is contained in:
38 files changed
+1146
-1215
No files matched your search
+121
-43
@@ -1,70 +1,148 @@
|
||||
# MCP Servers
|
||||
# MCP Servers Registry
|
||||
|
||||
MCP (Model Context Protocol) server templates for LibreFang. Each entry connects LibreFang to an external service (GitHub, Slack, databases, etc.).
|
||||
MCP (Model Context Protocol) servers connect LibreFang agents to external services. Each entry in this directory is a single `.toml` file describing an MCP server: how to launch it, what credentials it requires, and which category of functionality it provides.
|
||||
|
||||
## Structure
|
||||
When an agent has an MCP server attached, the server's tools appear automatically in the agent's tool list alongside built-in tools like `file_read` and `web_search`.
|
||||
|
||||
```
|
||||
mcp/
|
||||
├── github.toml
|
||||
├── slack.toml
|
||||
├── postgresql.toml
|
||||
└── ...
|
||||
```
|
||||
## File Format
|
||||
|
||||
## MCP Server TOML Format
|
||||
Each MCP server is a flat `.toml` file. The filename (without `.toml`) must match the `id` field.
|
||||
|
||||
```toml
|
||||
id = "service-id" # Must match filename (without .toml)
|
||||
name = "Service Name"
|
||||
description = "What this MCP server provides"
|
||||
category = "devtools" # devtools | communication | storage | monitoring | data
|
||||
icon = "🐙"
|
||||
tags = ["relevant", "tags"]
|
||||
id = "github" # must match filename
|
||||
name = "GitHub"
|
||||
description = "Access GitHub repos, issues, PRs, and organizations"
|
||||
category = "devtools" # devtools | data | cloud | communication | productivity | ai
|
||||
icon = "lucide:github"
|
||||
tags = ["git", "vcs", "code"]
|
||||
|
||||
[transport] # MCP server transport config
|
||||
type = "stdio" # "stdio" or "sse"
|
||||
[transport]
|
||||
type = "stdio" # stdio | sse
|
||||
command = "npx"
|
||||
args = ["-y", "@pkg/mcp-server"]
|
||||
args = ["-y", "@modelcontextprotocol/server-github@2025.4.8"]
|
||||
|
||||
[[required_env]] # Required environment variables
|
||||
name = "SERVICE_API_KEY"
|
||||
label = "API Key"
|
||||
help = "How to obtain this key"
|
||||
[[required_env]] # repeat block for each required credential
|
||||
name = "GITHUB_PERSONAL_ACCESS_TOKEN"
|
||||
label = "GitHub Personal Access Token"
|
||||
help = "A fine-grained or classic PAT with repo and read:org scopes"
|
||||
is_secret = true
|
||||
get_url = "https://..."
|
||||
get_url = "https://github.com/settings/tokens"
|
||||
|
||||
[oauth] # Optional: OAuth config
|
||||
[oauth] # optional: OAuth flow config
|
||||
provider = "github"
|
||||
scopes = ["repo"]
|
||||
auth_url = "https://..."
|
||||
token_url = "https://..."
|
||||
scopes = ["repo", "read:org"]
|
||||
auth_url = "https://github.com/login/oauth/authorize"
|
||||
token_url = "https://github.com/login/oauth/access_token"
|
||||
|
||||
[health_check]
|
||||
interval_secs = 60
|
||||
unhealthy_threshold = 3
|
||||
|
||||
setup_instructions = """
|
||||
Step-by-step setup guide for users.
|
||||
1. Go to https://github.com/settings/tokens and create a Personal Access Token.
|
||||
2. Paste the token into the GITHUB_PERSONAL_ACCESS_TOKEN field.
|
||||
3. Alternatively, use the OAuth flow to authorize LibreFang directly.
|
||||
"""
|
||||
|
||||
[i18n.zh]
|
||||
name = "GitHub"
|
||||
description = "通过官方 MCP 服务器访问 GitHub 仓库、Issue、Pull Request 与组织。"
|
||||
```
|
||||
|
||||
## Current MCP Servers (25)
|
||||
## Installing an MCP Server
|
||||
|
||||
| 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 |
|
||||
```bash
|
||||
# List all available MCP servers
|
||||
librefang catalog mcp
|
||||
|
||||
# Install an MCP server and attach it to an agent
|
||||
librefang mcp install github
|
||||
librefang mcp attach github --agent coder
|
||||
|
||||
# Or specify the agent when installing
|
||||
librefang mcp install github --agent coder
|
||||
|
||||
# Set required credentials
|
||||
librefang config set-env GITHUB_PERSONAL_ACCESS_TOKEN ghp_xxx
|
||||
|
||||
# List attached MCP servers for an agent
|
||||
librefang mcp list --agent coder
|
||||
|
||||
# Remove an MCP server from an agent
|
||||
librefang mcp detach github --agent coder
|
||||
```
|
||||
|
||||
## All MCP Servers (33 total)
|
||||
|
||||
### Development Tools (devtools)
|
||||
|
||||
| ID | Name | Transport | Credentials Required | Description |
|
||||
|----|------|-----------|---------------------|-------------|
|
||||
| bitbucket | Bitbucket | stdio (npx) | `BITBUCKET_*` | Access Bitbucket repositories, pull requests, and pipelines |
|
||||
| fetch | Fetch | stdio (npx) | none | Fetch any web URL and receive its content as clean Markdown |
|
||||
| filesystem | Filesystem | stdio (npx) | none | Read, write, search, and manage local files |
|
||||
| git | Git | stdio (npx) | none | Inspect local Git repos — commits, diffs, branches, blame |
|
||||
| github | GitHub | stdio (npx) | `GITHUB_PERSONAL_ACCESS_TOKEN` | Access GitHub repos, issues, PRs, and organizations |
|
||||
| gitlab | GitLab | stdio (npx) | `GITLAB_*` | Access GitLab projects, MRs, issues, and CI/CD pipelines |
|
||||
| jira | Jira | stdio (npx) | `JIRA_*` | Access Jira issues, projects, boards, and sprints |
|
||||
| linear | Linear | stdio (npx) | `LINEAR_API_KEY` | Manage Linear issues, projects, cycles, and teams |
|
||||
| puppeteer | Puppeteer | stdio (npx) | none | Control headless Chrome — navigate, screenshot, scrape |
|
||||
| sentry | Sentry | stdio (npx) | `SENTRY_AUTH_TOKEN` | Monitor Sentry error tracking, issues, and releases |
|
||||
|
||||
### Data
|
||||
|
||||
| ID | Name | Transport | Credentials Required | Description |
|
||||
|----|------|-----------|---------------------|-------------|
|
||||
| elasticsearch | Elasticsearch | stdio (npx) | `ELASTICSEARCH_*` | Search and manage Elasticsearch indices and documents |
|
||||
| google-maps | Google Maps | stdio (npx) | `GOOGLE_MAPS_API_KEY` | Geocoding, directions, distance matrix, and place search |
|
||||
| mongodb | MongoDB | stdio (npx) | `MONGODB_CONNECTION_STRING` | Query and manage MongoDB databases and collections |
|
||||
| postgresql | PostgreSQL | stdio (npx) | `POSTGRES_CONNECTION_STRING` | Query and manage PostgreSQL databases |
|
||||
| redis | Redis | stdio (npx) | `REDIS_URL` | Access and manage Redis key-value stores |
|
||||
| sqlite-mcp | SQLite | stdio (npx) | none | Query and manage local SQLite databases |
|
||||
|
||||
### Cloud
|
||||
|
||||
| ID | Name | Transport | Credentials Required | Description |
|
||||
|----|------|-----------|---------------------|-------------|
|
||||
| aws | AWS | stdio (npx) | `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` | Manage S3, EC2, Lambda, and other AWS resources |
|
||||
| azure-mcp | Azure | stdio (npx) | `AZURE_*` | Manage Azure VMs, Storage, and App Services |
|
||||
| gcp-mcp | GCP | stdio (npx) | `GOOGLE_APPLICATION_CREDENTIALS` | Manage GCP Compute, Cloud Storage, and BigQuery |
|
||||
|
||||
### Communication
|
||||
|
||||
| ID | Name | Transport | Credentials Required | Description |
|
||||
|----|------|-----------|---------------------|-------------|
|
||||
| discord-mcp | Discord | stdio (npx) | `DISCORD_TOKEN` | Access Discord servers, channels, and messages |
|
||||
| slack | Slack | stdio (npx) | `SLACK_BOT_TOKEN` | Access Slack channels, messages, and users |
|
||||
| teams-mcp | Microsoft Teams | stdio (npx) | `TEAMS_*` | Access Teams channels, chats, and messages |
|
||||
|
||||
### Productivity
|
||||
|
||||
| ID | Name | Transport | Credentials Required | Description |
|
||||
|----|------|-----------|---------------------|-------------|
|
||||
| dropbox | Dropbox | stdio (npx) | `DROPBOX_ACCESS_TOKEN` | Access and manage Dropbox files and folders |
|
||||
| gmail | Gmail | stdio (npx) | `GMAIL_*` | Read, send, and manage Gmail messages and drafts |
|
||||
| google-calendar | Google Calendar | stdio (npx) | `GOOGLE_*` | Manage Google Calendar events and availability |
|
||||
| google-drive | Google Drive | stdio (npx) | `GOOGLE_*` | Browse, search, and read files from Google Drive |
|
||||
| notion | Notion | stdio (npx) | `NOTION_API_KEY` | Access and manage Notion pages, databases, and blocks |
|
||||
| time | Time | stdio (npx) | none | Get current time, convert timezones, calculate differences |
|
||||
| todoist | Todoist | stdio (npx) | `TODOIST_API_TOKEN` | Manage Todoist tasks, projects, and labels |
|
||||
|
||||
### AI
|
||||
|
||||
| ID | Name | Transport | Credentials Required | Description |
|
||||
|----|------|-----------|---------------------|-------------|
|
||||
| brave-search | Brave Search | stdio (npx) | `BRAVE_API_KEY` | Perform web searches using the Brave Search API |
|
||||
| exa-search | Exa Search | stdio (npx) | `EXA_API_KEY` | AI-powered neural search and web content retrieval |
|
||||
| memory | Memory | stdio (npx) | none | Persistent knowledge graph for facts and relationships across sessions |
|
||||
| sequential-thinking | Sequential Thinking | stdio (npx) | none | Structured multi-step reasoning with revisable thought chains |
|
||||
|
||||
## Adding a New MCP Server
|
||||
|
||||
1. Create `mcp/<name>.toml`
|
||||
2. Ensure `id` matches the filename
|
||||
3. Test the MCP server command locally
|
||||
4. Run `python scripts/validate.py`
|
||||
5. Submit a PR
|
||||
1. Create `mcp/<name>.toml` — the filename must match the `id` field.
|
||||
2. Test the transport command locally: run `npx -y <package>` and verify it starts without errors.
|
||||
3. List all `[[required_env]]` entries so the UI can prompt users for credentials.
|
||||
4. Run `python scripts/validate.py`.
|
||||
5. Submit a PR.
|
||||
|
||||
See [CONTRIBUTING.md](../CONTRIBUTING.md) for the full guide.
|
||||
Reference in new issue
Block a user