Skip to main content
Glama
hichana

Goal Story MCP Server

by hichana

goalstory_read_one_goal

Retrieve specific goal details from the Goal Story MCP Server to enable focused discussion and personalized story creation for better goal achievement.

Instructions

Retrieve detailed information about a specific goal to support focused discussion and story creation.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesUnique identifier of the goal to retrieve.

Implementation Reference

  • The handler function registered for the 'goalstory_read_one_goal' tool. It constructs the API URL using the provided goal ID, performs a GET request via the doRequest helper, and formats the response as a text content block containing the JSON-stringified goal data.
    server.tool( READ_ONE_GOAL_TOOL.name, READ_ONE_GOAL_TOOL.description, READ_ONE_GOAL_TOOL.inputSchema.shape, async (args) => { const url = `${GOALSTORY_API_BASE_URL}/goals/${args.id}`; const result = await doRequest(url, "GET"); return { content: [ { type: "text", text: `Goal data:\n${JSON.stringify(result, null, 2)}`, }, ], isError: false, }; }, );
  • src/index.ts:350-367 (registration)
    The server.tool call that registers the 'goalstory_read_one_goal' tool with the MCP server, referencing the tool definition from tools.ts and providing an inline handler implementation.
    server.tool( READ_ONE_GOAL_TOOL.name, READ_ONE_GOAL_TOOL.description, READ_ONE_GOAL_TOOL.inputSchema.shape, async (args) => { const url = `${GOALSTORY_API_BASE_URL}/goals/${args.id}`; const result = await doRequest(url, "GET"); return { content: [ { type: "text", text: `Goal data:\n${JSON.stringify(result, null, 2)}`, }, ], isError: false, }; }, );
  • The tool definition object including name, description, and Zod input schema for validating the 'id' parameter.
    export const READ_ONE_GOAL_TOOL = { name: "goalstory_read_one_goal", description: "Retrieve detailed information about a specific goal to support focused discussion and story creation.", inputSchema: z.object({ id: z.string().describe("Unique identifier of the goal to retrieve."), }), };
  • TypeScript interface defining the input shape for the tool, matching the Zod schema.
    export interface GoalstoryReadOneGoalInput { id: string; }
  • The doRequest helper function used by the tool handler to make authenticated HTTP requests to the GoalStory API backend.
    async function doRequest<T = any>( url: string, method: string, body?: unknown, ): Promise<T> { console.error("Making request to:", url); console.error("Method:", method); console.error("Body:", body ? JSON.stringify(body) : "none"); try { const response = await axios({ url, method, headers: { "Content-Type": "application/json", Authorization: `Bearer ${GOALSTORY_API_TOKEN}`, }, data: body, timeout: 10000, // 10 second timeout validateStatus: function (status) { return status >= 200 && status < 500; // Accept all status codes less than 500 }, }); console.error("Response received:", response.status); return response.data as T; } catch (err) { console.error("Request failed with error:", err); if (axios.isAxiosError(err)) { if (err.code === "ECONNABORTED") { throw new Error( `Request timed out after 10 seconds. URL: ${url}, Method: ${method}`, ); } if (err.response) { // The request was made and the server responded with a status code // that falls out of the range of 2xx throw new Error( `HTTP Error ${ err.response.status }. URL: ${url}, Method: ${method}, Body: ${JSON.stringify( body, )}. Error text: ${JSON.stringify(err.response.data)}`, ); } else if (err.request) { // The request was made but no response was received throw new Error( `No response received from server. URL: ${url}, Method: ${method}`, ); } else { // Something happened in setting up the request that triggered an Error throw new Error(`Request setup failed: ${err.message}`); } } else { // Something else happened throw new Error( `Unexpected error: ${err instanceof Error ? err.message : String(err)}`, ); } } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hichana/goalstory-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server