Skip to content

mcp

Package github.com/emergent-company/emergent.memory/apps/server/pkg/sdk/mcp

The mcp client is a JSON-RPC 2.0 client for the Model Context Protocol (MCP) endpoint. It allows calling Emergent's built-in MCP server to invoke tools, list resources, and retrieve prompts.

Context behavior

MCP.SetContext(projectID string) — unlike other context-scoped clients, MCP only takes projectID (not orgID). When you call client.SetContext(orgID, projectID), the MCP client is updated with projectID only.

Methods

func (c *Client) CallMethod(ctx context.Context, method string, params interface{}) (json.RawMessage, error)
func (c *Client) Initialize(ctx context.Context) error
func (c *Client) ListTools(ctx context.Context) (json.RawMessage, error)
func (c *Client) CallTool(ctx context.Context, name string, arguments interface{}) (json.RawMessage, error)
func (c *Client) ListResources(ctx context.Context) (json.RawMessage, error)
func (c *Client) ReadResource(ctx context.Context, uri string) (json.RawMessage, error)
func (c *Client) ListPrompts(ctx context.Context) (json.RawMessage, error)
func (c *Client) GetPrompt(ctx context.Context, name string, arguments interface{}) (json.RawMessage, error)

Key Types

type JSONRPCRequest struct {
    JSONRPC string      `json:"jsonrpc"`
    ID      int         `json:"id"`
    Method  string      `json:"method"`
    Params  interface{} `json:"params,omitempty"`
}

type JSONRPCResponse struct {
    JSONRPC string          `json:"jsonrpc"`
    ID      int             `json:"id"`
    Result  json.RawMessage `json:"result,omitempty"`
    Error   *JSONRPCError   `json:"error,omitempty"`
}

type JSONRPCError struct {
    Code    int    `json:"code"`
    Message string `json:"message"`
}

Example

// Set project context
client.MCP.SetContext("proj_xyz789")

// Initialize MCP session
if err := client.MCP.Initialize(ctx); err != nil {
    return err
}

// List available tools
tools, err := client.MCP.ListTools(ctx)

// Call a tool
result, err := client.MCP.CallTool(ctx, "search_graph", map[string]any{
    "query": "machine learning",
    "limit": 10,
})