Skip to content
Back to skills

Dev Ext Providers

ASecurity

LlmProvider, ToolProvider trait implementations and MCP server integration

  • 29 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 3, 2026
ai-agentsrustapi

Works with

  • api
  • mcp

Security analysis

A100/100

Scanned September 3, 2026

npx -y skills add systempromptio/systemprompt-template --skill dev-ext-providers --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Dev Ext Providers?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Dev Ext Providers
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/systempromptio-dev-ext-providers/badge)](https://www.skillsdirectory.com/skills/systempromptio-dev-ext-providers)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: "Extension: AI & Tool Providers"
description: "LlmProvider, ToolProvider trait implementations and MCP server integration"
---

# Extension: AI & Tool Providers

Provider traits enable custom LLM integrations, tool implementations, and MCP server management. Traits live in `crates/shared/provider-contracts/src/`.

---

## 1. LlmProvider

Custom LLM provider integration for AI generation.

### Trait

```rust
#[async_trait]
pub trait LlmProvider: Send + Sync {
    fn provider_id(&self) -> &'static str;
    async fn generate(&self, request: ChatRequest) -> Result<ChatResponse>;
    async fn stream(
        &self,
        request: ChatRequest,
    ) -> Result<Pin<Box<dyn Stream<Item = Result<StreamChunk>> + Send>>>;
}
```

### Registration

```rust
impl Extension for MyExtension {
    fn llm_providers(&self) -> Vec<Arc<dyn LlmProvider>> {
        vec![Arc::new(CustomLlmProvider::new())]
    }
}
```

### AI Configuration Hierarchy

Priority: Tool > Agent > Global.

| Level | Source | Scope |
|-------|--------|-------|
| Global | `services/ai/config.yaml` | All requests |
| Agent | `services/agents/*.yaml` metadata | Per-agent |
| Tool | `tool_model_overrides` | Per-tool-call |

---

## 2. ToolProvider

Custom tool implementations for agent use.

### Trait

```rust
#[async_trait]
pub trait ToolProvider: Send + Sync {
    fn provider_id(&self) -> &'static str;
    fn available_tools(&self) -> Vec<ToolDefinition>;
    async fn execute_tool(&self, request: ToolCallRequest) -> Result<ToolCallResult>;
}
```

### Registration

```rust
impl Extension for MyExtension {
    fn tool_providers(&self) -> Vec<Arc<dyn ToolProvider>> {
        vec![Arc::new(WebSearchToolProvider)]
    }
}
```

---

## 3. MCP Server Integration

Model Context Protocol servers provide tools to agents via JSON-RPC.

### MCP Server Config

```yaml
mcp_servers:
  my-server:
    type: internal
    binary: my-mcp-server
    package: my-mcp-server
    port: 5020
    endpoint: http://localhost:8080/api/v1/mcp/my-server/mcp
    enabled: true
    description: "My custom MCP server"
    oauth:
      required: true
      scopes:
        - admin
```

### MCP Extension Manifest

```yaml
type: mcp
name: my-mcp-server
binary: my-mcp-server
description: "My custom MCP server"
port: 5020
build_type: workspace
enabled: true
```

### Agent-to-MCP Wiring

```yaml
metadata:
  mcpServers:
    - my-server
```

---

## 4. Rules

| Rule | Rationale |
|------|-----------|
| Provider IDs must be unique | Registry keyed by provider_id |
| All providers are `Send + Sync` | Multi-threaded async context |
| MCP ports in 5000-5999 range | Configured in `services/config/config.yaml` |
| Agent ports in 9000-9999 range | Separate range from MCP |
| Tool definitions use JSON Schema | Standard parameter validation |
| LLM providers must support streaming | Required for real-time agent responses |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.