Agent skill
orchardcore-ai-mcp-server
Skill for configuring the CrestApps MCP Server feature in Orchard Core. Covers server authentication, exposing tools, adding MCP prompts and resources through the UI, and custom MCP resource types.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/orchardcore-ai-mcp-server
Metadata
Additional technical details for this skill
- author
- CrestApps Team
- version
- 1.0
SKILL.md
Orchard Core MCP Server - Prompt Templates
Configure an MCP Server
You are an Orchard Core expert. Generate configuration and admin guidance for exposing Orchard Core AI capabilities through the CrestApps MCP Server feature.
Guidelines
- Use feature ID
CrestApps.OrchardCore.AI.Mcp.Server. - The MCP server exposes Orchard AI tools, MCP prompts, MCP resources, and templated resources.
- The server uses SSE transport.
- Prefer authenticated access in production.
- Prompts and resources can be managed from the admin UI.
- Resource URIs are auto-constructed by the system from
{source}://{itemId}/{path}.
Feature Overview
| Feature | Feature ID | Description |
|---|---|---|
| MCP Server | CrestApps.OrchardCore.AI.Mcp.Server |
Expose Orchard Core as an MCP-compatible server |
Enable the MCP Server Feature
{
"steps": [
{
"name": "Feature",
"enable": [
"CrestApps.OrchardCore.AI",
"CrestApps.OrchardCore.AI.Mcp.Server"
],
"disable": []
}
]
}
Supported MCP Capabilities
| Capability | Description |
|---|---|
| Tools | Exposes registered Orchard AI tools as MCP tools |
| Prompts | Exposes MCP prompts through ListPrompts and GetPrompt |
| Resources | Exposes static resources through ListResources and ReadResource |
| Templated Resources | Exposes variable-based resource templates through ListResourceTemplates |
Authentication Modes
| Mode | Description | Recommended Use |
|---|---|---|
OpenId |
Uses OpenID Connect via the API scheme | Production |
ApiKey |
Uses a configured API key | Simple server-to-server integrations |
None |
No authentication | Local development only |
OpenId Configuration
{
"OrchardCore": {
"CrestApps_AI": {
"McpServer": {
"AuthenticationType": "OpenId",
"RequireAccessPermission": true
}
}
}
}
When RequireAccessPermission is true, callers must have the AccessMcpServer permission.
ApiKey Configuration
{
"OrchardCore": {
"CrestApps_AI": {
"McpServer": {
"AuthenticationType": "ApiKey",
"ApiKey": "{{McpServerApiKey}}"
}
}
}
}
Accepted Authorization header formats include:
Bearer <key>ApiKey <key>- raw key value
Development-Only Configuration
{
"OrchardCore": {
"CrestApps_AI": {
"McpServer": {
"AuthenticationType": "None"
}
}
}
}
Server Endpoint
| Endpoint | Method | Purpose |
|---|---|---|
/mcp/sse |
POST |
MCP SSE endpoint |
Add MCP Prompts via Admin UI
- Navigate to Artificial Intelligence → MCP Prompts.
- Click Add Prompt.
- Fill in:
- Name: The unique MCP prompt identifier.
- Display Text: Friendly admin name.
- Description: Optional description for clients.
- Add one or more Messages.
- Each message includes a Role such as
systemoruser. - Each message includes Content.
- Each message includes a Role such as
- Save the prompt.
Clients can discover prompts with ListPrompts and fetch their messages with GetPrompt.
Add MCP Resources via Admin UI
- Navigate to Artificial Intelligence → MCP Resources.
- Click Add Resource.
- Choose a Resource Type such as File, Media, Content Item, Content Type, Recipe Schema, or Recipe Step Schema.
- Fill in:
- Display Text
- Path
- Name
- Title (optional)
- Description (optional)
- MIME Type
- Save the resource.
Resource Path Rules
- You only enter the path portion in the UI.
- The full URI is generated automatically as
{source}://{itemId}/{path}. - Templated resources can use variables such as
{fileName},{contentType}, or{stepName}depending on the resource type.
Built-In Resource Types
| Type | Supported Variables | Description |
|---|---|---|
file |
{providerName}, {fileName} |
File provider access |
media |
{path} |
Orchard media library |
content-item |
{contentItemId}, {contentItemVersionId} |
Specific content item |
content-type |
{contentType} |
Published items by content type |
recipe-schema |
none | Full JSON schema for all recipe steps |
recipe-step-schema |
{stepName} |
JSON schema for one recipe step |
recipe |
{recipeName} |
Recipe content by name |
ftp |
{path} |
FTP or FTPS resource access |
sftp |
{path} |
SFTP resource access |
Recipe Example for MCP Resources
{
"steps": [
{
"name": "McpResource",
"Resources": [
{
"Source": "file",
"DisplayText": "Configuration File",
"Resource": {
"Uri": "file://configs/{providerName}/{fileName}",
"Name": "config-file",
"Description": "Application configuration",
"MimeType": "application/json"
}
}
]
}
]
}
Register a Custom Resource Type
services.AddMcpResourceType<DatabaseResourceTypeHandler>("database", entry =>
{
entry.DisplayName = S["Database"];
entry.Description = S["Query data from databases."];
entry.SupportedVariables =
[
new McpResourceVariable("table") { Description = S["The database table name."] },
new McpResourceVariable("id") { Description = S["The row ID to fetch."] },
];
});
public sealed class DatabaseResourceTypeHandler : McpResourceTypeHandlerBase
{
public DatabaseResourceTypeHandler() : base("database") { }
protected override Task<ReadResourceResult> GetResultAsync(
McpResource resource,
IReadOnlyDictionary<string, string> variables,
CancellationToken cancellationToken)
{
variables.TryGetValue("table", out var table);
variables.TryGetValue("id", out var id);
// Query your data source here.
}
}
External Client Connection Example
{
"mcpServers": {
"orchard-core": {
"transport": {
"type": "sse",
"url": "https://your-orchard-site.com/mcp/sse",
"headers": {
"Authorization": "Bearer <token-or-api-key>"
}
}
}
}
}
Security Best Practices
- Use
OpenIdin production whenever possible. - Store API keys in environment variables or secrets.
- Grant
AccessMcpServeronly to trusted identities. - Remember that exposed tools still respect Orchard Core permissions.
- Keep tenant isolation in mind; MCP operates in a tenant context.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?