genjo-mcp-server 1.0.11 → 1.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: genjo-ai-news
3
+ description: Expert AI News Agent for Asian markets. Use this skill when the user asks for AI news in specific languages (Japanese, Chinese, Korean, etc.), needs fact-checking, seeks simple explanations of complex AI topics, or wants to find investment opportunities related to AI news.
4
+ ---
5
+
6
+ # Genjo AI News Specialist
7
+
8
+ You are an expert AI News Agent capable of retrieving, analyzing, and explaining the latest AI trends for Asian audiences. Your strength lies in **multilingual support** and **deep analysis** (fact-checking, simplification, and investment insights).
9
+
10
+ ## 🗣️ Language & Localization Strategy
11
+
12
+ **CRITICAL**: Always respect the user's preferred language or the context of the conversation.
13
+ - **Available Languages**: `ja` (Japanese), `en` (English), `zh` (Simplified Chinese), `ko` (Korean), `hi` (Hindi).
14
+ - **Default Behavior**: If not specified, infer the language from the user's query. Use `lang="ja"` for Japanese queries.
15
+ - **Cross-Language Retrieval**: You can search in English (`lang="en"`) for broader coverage and explain the results in the user's language.
16
+
17
+ ## 🚀 Core Workflows
18
+
19
+ ### 1. Daily News Briefing (The "What's New" Flow)
20
+ Use this when the user asks: *"What happened today?", "Latest AI news in Japan"*
21
+
22
+ 1. **Fetch**: Call `get_latest_news(lang="...")`.
23
+ 2. **Filter**: Select 3-5 most significant items.
24
+ 3. **Present**: List them with titles and 1-sentence summaries.
25
+ 4. **Offer Deep Dive**: Ask the user, *"Would you like a simple explanation, fact-check, or investment analysis for any of these?"*
26
+
27
+ ### 2. Deep Dive & Learning (The "Tell Me More" Flow)
28
+ Use this when the user picks a specific topic or ID: *"Tell me more about the NVIDIA news", "Explain ID 123"*
29
+
30
+ 1. **Fetch Detail**: Call `get_news_detail(id=..., lang=...)` to get the full context.
31
+ 2. **Analyze (Parallel)**:
32
+ - If the topic is complex: Call `get_simple_explanation(id=..., lang=...)`.
33
+ - If the claims seem bold/dubious: Call `get_fact_check(id=..., lang=...)`.
34
+ - If the user is an investor: Call `get_related_stocks(id=..., lang=...)`.
35
+ 3. **Synthesize**: Combine the raw news with the analysis.
36
+ - *Example*: "Here is the summary... To explain it simply... Our fact-check indicates this is mostly true, but note that..."
37
+
38
+ ### 3. Investment Research (The "Market Impact" Flow)
39
+ Use this when the user asks: *"Which stocks will go up?", "Impact on Asian markets"*
40
+
41
+ 1. **Identify**: Call `get_related_stocks(id=..., lang=...)` for the target news.
42
+ 2. **Evaluate**: Look at the `relevance_score` and `impact` fields.
43
+ - **Score > 80**: Highlight as a "Direct Impact".
44
+ - **Score 50-80**: Mention as "Potential Correlation".
45
+ - **Score < 50**: Ignore or mention as "Weak Link".
46
+ 3. **Disclaimer**: Always add a disclaimer that this is AI-generated analysis, not financial advice.
47
+
48
+ ## 🧠 Decision Logic & Behaviors
49
+
50
+ ### Handling Fact-Check Results
51
+ - **Verdict: TRUE/LIKELY TRUE**: Present the news confidently. Cite the sources provided in the response.
52
+ - **Verdict: FALSE/MISLEADING**: ⚠️ **WARN THE USER**. Explicitly state: "Our fact-check suggests this information may be inaccurate."
53
+ - **Verdict: UNVERIFIED**: Advise caution. Say: "This information could not be independently verified. Please check official sources."
54
+
55
+ ### Handling Missing Content
56
+ - If `get_news_detail` returns 404: "I couldn't find details for that specific news item. It might be too old."
57
+ - If a specific analysis (e.g., `get_simple_explanation`) is unavailable: Generate your own explanation based on the `get_news_detail` content.
58
+
59
+ ## 💡 Example User Queries (Triggers)
60
+
61
+ - "今日のAIニュースを教えて" (Fetch `ja` news)
62
+ - "中国のAI規制について詳しく知りたい" (Fetch `zh` news or search related topics)
63
+ - "This news about OpenAI sounds fake. Can you check?" (Trigger `get_fact_check`)
64
+ - "サムスン電子の株価に影響するニュースはある?" (Search past news & check related stocks)
65
+ - "5歳児でもわかるように解説して" (Trigger `get_simple_explanation`)
package/index.js CHANGED
@@ -30559,6 +30559,81 @@ server.tool(
30559
30559
  }
30560
30560
  }
30561
30561
  );
30562
+ server.tool(
30563
+ "get_selling_stocks",
30564
+ "Fetch selling stocks analysis (risk/short-selling candidates) for a news item.",
30565
+ {
30566
+ id: external_exports3.number().describe("News Item ID"),
30567
+ lang: external_exports3.enum(["ja", "en", "zh", "ko", "hi"]).optional().describe("Language code (default: ja)")
30568
+ },
30569
+ async ({ id, lang = "ja" }) => {
30570
+ try {
30571
+ const endpoint = API_KEY ? `/api/v1/news/${id}/selling-stocks` : `/api/news/${id}/selling-stocks`;
30572
+ const data = await fetchFromApi(`${endpoint}?lang=${lang}`);
30573
+ return {
30574
+ content: [
30575
+ {
30576
+ type: "text",
30577
+ text: data.reportMarkdown || "No selling stocks analysis available."
30578
+ }
30579
+ ]
30580
+ };
30581
+ } catch (error48) {
30582
+ return {
30583
+ content: [
30584
+ {
30585
+ type: "text",
30586
+ text: `Error fetching selling stocks: ${error48.message}`
30587
+ }
30588
+ ],
30589
+ isError: true
30590
+ };
30591
+ }
30592
+ }
30593
+ );
30594
+ server.prompt(
30595
+ "analyze-ai-news",
30596
+ {
30597
+ lang: external_exports3.enum(["ja", "en"]).optional().describe("Language for the analysis (default: ja)")
30598
+ },
30599
+ ({ lang = "ja" }) => ({
30600
+ messages: [
30601
+ {
30602
+ role: "user",
30603
+ content: {
30604
+ type: "text",
30605
+ text: lang === "ja" ? "\u6700\u8FD1\u306EAI\u30CB\u30E5\u30FC\u30B9\u306E\u30C8\u30EC\u30F3\u30C9\u3092\u5206\u6790\u3057\u3001\u7279\u306B\u6CE8\u76EE\u3059\u3079\u304D\u6280\u8853\u7684\u306A\u9032\u5C55\u3068\u5E02\u5834\u3078\u306E\u5F71\u97FF\u3092\u307E\u3068\u3081\u3066\u304F\u3060\u3055\u3044\u3002" : "Analyze recent AI news trends, focusing on key technical advancements and market impacts."
30606
+ }
30607
+ }
30608
+ ]
30609
+ })
30610
+ );
30611
+ server.prompt(
30612
+ "fact-check-news",
30613
+ {
30614
+ topic: external_exports3.string().describe("The news topic to fact check"),
30615
+ lang: external_exports3.enum(["ja", "en"]).optional().describe("Language for the report (default: ja)")
30616
+ },
30617
+ ({ topic, lang = "ja" }) => ({
30618
+ messages: [
30619
+ {
30620
+ role: "user",
30621
+ content: {
30622
+ type: "text",
30623
+ text: lang === "ja" ? `\u4EE5\u4E0B\u306E\u30C8\u30D4\u30C3\u30AF\u306B\u95A2\u3059\u308B\u30CB\u30E5\u30FC\u30B9\u306E\u30D5\u30A1\u30AF\u30C8\u30C1\u30A7\u30C3\u30AF\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044\u3002
30624
+
30625
+ \u30C8\u30D4\u30C3\u30AF: ${topic}
30626
+
30627
+ \u4FE1\u983C\u3067\u304D\u308B\u60C5\u5831\u6E90\u306B\u57FA\u3065\u304D\u3001\u4E8B\u5B9F\u95A2\u4FC2\u306E\u78BA\u8A8D\u3068\u3001\u8A87\u5F35\u3084\u8AA4\u89E3\u304C\u542B\u307E\u308C\u3066\u3044\u306A\u3044\u304B\u691C\u8A3C\u3057\u3066\u304F\u3060\u3055\u3044\u3002` : `Please conduct a fact check on the following news topic.
30628
+
30629
+ Topic: ${topic}
30630
+
30631
+ Verify the facts based on reliable sources and check for any exaggerations or misunderstandings.`
30632
+ }
30633
+ }
30634
+ ]
30635
+ })
30636
+ );
30562
30637
  async function install() {
30563
30638
  console.log("\x1B[36m%s\x1B[0m", "\u{1F916} Genjo MCP Server Installer");
30564
30639
  console.log("--------------------------------");
@@ -30665,6 +30740,14 @@ description: Expert AI News Agent for Asian markets. Use this skill when the use
30665
30740
  fs.mkdirSync(claudeSkillDir, { recursive: true });
30666
30741
  fs.writeFileSync(path.join(claudeSkillDir, "SKILL.md"), content);
30667
30742
  console.log(`\u2705 Installed Claude Skill to .claude/skills/${skillFolderName}/SKILL.md`);
30743
+ const userSkillDir = path.join(process.cwd(), skillFolderName);
30744
+ if (!fs.existsSync(userSkillDir)) {
30745
+ fs.mkdirSync(userSkillDir, { recursive: true });
30746
+ }
30747
+ fs.writeFileSync(path.join(userSkillDir, "SKILL.md"), content);
30748
+ console.log(`
30749
+ \u{1F4C1} Created skill folder: ./${skillFolderName}/`);
30750
+ console.log(` (You can zip this folder and upload it to Claude Desktop App Settings > Developer > Skills)`);
30668
30751
  const oldRuleFile = path.join(process.cwd(), ".cursor", "rules", "genjo-ai-news.mdc");
30669
30752
  if (fs.existsSync(oldRuleFile)) {
30670
30753
  fs.unlinkSync(oldRuleFile);
@@ -30680,8 +30763,10 @@ description: Expert AI News Agent for Asian markets. Use this skill when the use
30680
30763
  console.log("\n--------------------------------");
30681
30764
  console.log("\u{1F389} Setup complete!");
30682
30765
  console.log("1. Restart Claude Desktop / Cursor to apply MCP settings.");
30683
- console.log("2. Use 'Genjo' tools in your chat!");
30684
- console.log("3. Cursor Skill is now available in .cursor/rules/genjo-ai-news.mdc");
30766
+ console.log("2. Use 'Genjo' tools and prompts in your chat!");
30767
+ console.log("3. [Optional] To enable Agent Skills in Claude App:");
30768
+ console.log(" - Zip the 'genjo-ai-news' folder created in this directory");
30769
+ console.log(" - Go to Settings > Developer > Skills and upload the zip file");
30685
30770
  }
30686
30771
  async function main() {
30687
30772
  const args = process.argv.slice(2);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "genjo-mcp-server",
3
- "version": "1.0.11",
3
+ "version": "1.0.14",
4
4
  "description": "MCP Server for Genjo AI News System - Asian Market Intelligence",
5
5
  "type": "module",
6
6
  "main": "index.js",