Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ temp/
# Scripts
scripts/
.ragcode/
.agent/skills/
.agent/
.trello.json
build-binaries.sh

# Debug logs
Expand Down
6 changes: 6 additions & 0 deletions internal/daemon/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
"github.com/doITmagic/rag-code-mcp/internal/healthcheck"
"github.com/doITmagic/rag-code-mcp/internal/logger"
"github.com/doITmagic/rag-code-mcp/internal/service/engine"
"github.com/doITmagic/rag-code-mcp/internal/service/prompts"
"github.com/doITmagic/rag-code-mcp/internal/service/resources"

Check failure on line 21 in internal/daemon/run.go

View workflow job for this annotation

GitHub Actions / Lint

could not import github.com/doITmagic/rag-code-mcp/internal/service/resources (-: # github.com/doITmagic/rag-code-mcp/internal/service/resources
"github.com/doITmagic/rag-code-mcp/internal/service/search"
"github.com/doITmagic/rag-code-mcp/internal/service/tools"
"github.com/doITmagic/rag-code-mcp/internal/transport"
Expand Down Expand Up @@ -173,6 +175,10 @@
logger.Instance.Info("Update tools registered (auto_update=false)")
}

// Register MCP Resources & Prompts (MVP)
resources.Register(mcpServer, eng)
prompts.Register(mcpServer, eng)
Comment thread
doITmagic marked this conversation as resolved.

logger.Instance.Info("MCP RagCode Daemon initialized (version=%s)", rcfg.Version)

if cfg.AutoUpdate {
Expand Down
41 changes: 41 additions & 0 deletions internal/service/prompts/prompts.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package prompts

import (
"context"
"fmt"

"github.com/doITmagic/rag-code-mcp/internal/service/engine"
"github.com/modelcontextprotocol/go-sdk/mcp"
)

// Register registers all MCP prompts provided by this package on the given mcp.Server.
func Register(mcpServer *mcp.Server, eng *engine.Engine) {
mcpServer.AddPrompt(&mcp.Prompt{
Name: "System Diagnostics",
Description: "Analyze the current indexing status and troubleshoot common issues based on the workspace resources.",
Title: "Analyze RagCode Indexing System",
}, func(ctx context.Context, request *mcp.GetPromptRequest) (*mcp.GetPromptResult, error) {
// Idem cu Resources: detectie automata prin ctx, fara logica proprie.
Comment thread
doITmagic marked this conversation as resolved.
Outdated
wctx, err := eng.DetectContext(ctx, "")
if err != nil {
return nil, fmt.Errorf("failed to detect workspace: %w", err)
Comment thread
doITmagic marked this conversation as resolved.
Outdated
}

promptText := fmt.Sprintf(`Please analyze the current indexing status of the RagCode MCP server for the workspace located at: %s

You can inspect the indexing status by reading the resource directly via URI: "ragcode://status/indexing" or using your available tools.
Then, inform me if there are any issues such as stuck processes or parsing errors.`, wctx.Root)

return &mcp.GetPromptResult{
Description: "Prompt to diagnose indexing and execution issues automatically.",
Messages: []*mcp.PromptMessage{
{
Role: mcp.Role("user"),
Content: &mcp.TextContent{
Text: promptText,
},
},
},
}, nil
})
}
51 changes: 51 additions & 0 deletions internal/service/resources/resources.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package resources

Check failure on line 1 in internal/service/resources/resources.go

View workflow job for this annotation

GitHub Actions / Lint

: # github.com/doITmagic/rag-code-mcp/internal/service/resources

import (
"context"
"encoding/json"
"fmt"

"github.com/doITmagic/rag-code-mcp/internal/service/engine"
"github.com/doITmagic/rag-code-mcp/internal/service/tools"
"github.com/modelcontextprotocol/go-sdk/mcp"
)

// Register registers all MCP resources provided by this package on the given mcp.Server.
func Register(mcpServer *mcp.Server, eng *engine.Engine) {
mcpServer.AddResource(&mcp.Resource{
URI: "ragcode://status/indexing",
Name: "Indexing Status",
Description: "Returns the current indexing status and progress for the workspace.",
MIMEType: "application/json",
}, func(ctx context.Context, request *mcp.ReadResourceRequest) (*mcp.ReadResourceResult, error) {
// Folosim exact acelasi mechanism de detectie ca toate tool-urile existente.
// Middleware-ul din run.go injecteaza X-Workspace-Root din header in ctx,
Comment thread
doITmagic marked this conversation as resolved.
Outdated
// iar DetectContext il preia automat din Tier 2 (transport.GetWorkspaceHint).
wctx, err := eng.DetectContext(ctx, "")
if err != nil {
return nil, fmt.Errorf("failed to detect workspace: %w", err)
}

// BuildIndexingProgress citeste din progressStore (sync.Mutex + deep-copy),
// thread-safe fata de indexer-ul care scrie simultan.
Comment thread
doITmagic marked this conversation as resolved.
Outdated
status := tools.BuildIndexingProgress(eng, wctx.ID, wctx.Root)

Check failure on line 31 in internal/service/resources/resources.go

View workflow job for this annotation

GitHub Actions / build

undefined: tools.BuildIndexingProgress

Check failure on line 31 in internal/service/resources/resources.go

View workflow job for this annotation

GitHub Actions / Test

undefined: tools.BuildIndexingProgress

Check failure on line 31 in internal/service/resources/resources.go

View workflow job for this annotation

GitHub Actions / Lint

undefined: tools.BuildIndexingProgress) (typecheck)

Check failure on line 31 in internal/service/resources/resources.go

View workflow job for this annotation

GitHub Actions / Lint

undefined: tools.BuildIndexingProgress (typecheck)
if status == nil {
return nil, fmt.Errorf("index status not found for workspace %s", wctx.Root)
}

blob, err := json.MarshalIndent(status, "", " ")
if err != nil {
return nil, fmt.Errorf("failed to marshal index status: %w", err)
}

return &mcp.ReadResourceResult{
Contents: []*mcp.ResourceContents{
{
URI: request.Params.URI,
MIMEType: "application/json",
Text: string(blob),
},
},
}, nil
})
}
Loading