Skip to main content
Glama

Calligraphy MCP - 书法知识问答与教学服务

一个专注于中国书法知识问答、指导与教学的 MCP(Model Context Protocol)服务。

功能特点

  • 书法知识问答:回答书法学习、创作、历史、审美等各方面的问题

  • 学习计划制定:根据用户水平和目标,提供个性化的学习计划

  • 名家信息查询:查询历代书法名家的生平、代表作品、风格特点

  • 技法指导:提供执笔、运笔、笔画写法、书体特点等详细技法讲解

  • 美学探讨:探讨书法美学与哲学,包括审美标准、艺术鉴赏等

  • 常见问题解答:解决书法学习过程中的各种困惑

Related MCP server: China Festival MCP Server

可配置参数

参数名

类型

可选值

默认值

说明

level

string

beginner, intermediate, advanced

beginner

用户书法水平等级

  • beginner(初学者):0-3个月,正在学习基础笔画和简单汉字结构

  • intermediate(进阶者):3-12个月,已掌握基本笔画,正在深入临帖和学习结构

  • advanced(高级者):1年以上,已具备扎实基础,正在追求艺术表达和风格形成

安装与使用

方式一:全局安装(推荐)

npm install -g calligraphy-mcp

方式二:本地安装

git clone https://github.com/your-repo/calligraphy-mcp.git
cd calligraphy-mcp
npm install
npm run build

在 Claude Desktop 中配置

编辑 claude_desktop_config.json

{
  "mcpServers": {
    "calligraphy": {
      "command": "node",
      "args": ["/path/to/calligraphy-mcp/dist/index.js"],
      "env": {
        "CALLIGRAPHY_DEFAULT_LEVEL": "intermediate"
      }
    }
  }
}

如果使用全局安装:

{
  "mcpServers": {
    "calligraphy": {
      "command": "calligraphy-mcp",
      "args": [],
      "env": {
        "CALLIGRAPHY_DEFAULT_LEVEL": "intermediate"
      }
    }
  }
}

在 Trae IDE 中配置

在 MCP 设置中添加:

{
  "calligraphy": {
    "command": "node",
    "args": ["d:\\phpstudy_81\\WWW\\self\\shufa-mcp\\dist\\index.js"],
    "env": {
        "CALLIGRAPHY_DEFAULT_LEVEL": "intermediate"
    }
  }
}

工具说明

1. query_calligraphy - 书法知识问答

{
  "question": "什么是永字八法?",
  "level": "beginner"
}

2. get_learning_plan - 获取学习计划

{
  "current_level": "beginner",
  "goal": "系统学习楷书",
  "daily_minutes": 30
}

3. get_master_info - 查询名家信息

{
  "master_name": "王羲之"
}

4. get_technique_guide - 获取技法指导

{
  "technique_type": "grip",
  "level": "beginner"
}

5. get_aesthetic_insight - 探讨书法美学

{
  "topic": "书法与人生",
  "level": "advanced"
}

6. get_common_questions - 常见问题解答

{
  "category": "beginner"
}

知识库内容

本项目包含以下知识库文档:

文档

内容

beginner-guide.md

书法初学者入门指南

calligraphy-history.md

中国书法历史与书体演变

calligraphy-techniques.md

书法笔法技法详解

calligraphy-masters.md

历代书法名家与传世名作

calligraphy-creation.md

书法创作与章法

calligraphy-aesthetics.md

书法审美与哲学

learning-plan.md

书法学习计划与练习方法

common-questions.md

书法常见问题与答疑

开发

# 开发模式(监听文件变化)
npm run dev

# 构建
npm run build

# 运行
npm start

项目结构

calligraphy-mcp/
├── src/
│   └── index.ts          # MCP 服务入口
├── knowledge/            # 书法知识库
│   ├── 01-beginner-guide.md
│   ├── 02-calligraphy-history.md
│   ├── 03-calligraphy-techniques.md
│   ├── 04-calligraphy-masters.md
│   ├── 05-calligraphy-creation.md
│   ├── 06-calligraphy-aesthetics.md
│   ├── 07-learning-plan.md
│   └── 08-common-questions.md
├── dist/                 # 编译输出
├── package.json
├── tsconfig.json
└── README.md

许可证

MIT

Available Tools

6 tools
get_aesthetic_insightC

探讨书法美学与哲学,包括审美标准、艺术鉴赏、书法文化价值等深度内容。

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNo用户书法水平beginner
topicNo探讨的主题,如:书法美学概论、点画之美、章法之美、书法与人生等书法美学概论

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility for behavioral disclosure. It states the content domain but does not disclose return format, response length, whether it retrieves static content or generates insight, or any other behavioral trait the agent would need to set expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one focused sentence that names the domain and gives illustrative subtopics without wasting words. The core purpose is front-loaded, making it easy for an agent to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema and no annotations, so the description must compensate, but it does not explain what the agent will receive in return or how to distinguish this from query_calligraphy. For a tool with two optional parameters and no output schema, the definition leaves notable gaps in usage and output expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's examples ('审美标准、艺术鉴赏、书法文化价值') loosely align with the `topic` parameter examples, but it adds no meaning beyond what the schema already documents for `level` or `topic`.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('探讨' / explore) and a clear resource: calligraphy aesthetics and philosophy, with explicit examples of content areas. It is distinguishable from siblings like get_technique_guide (technique) and get_master_info (biographical info), though overlap with query_calligraphy is not fully ruled out.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for deep aesthetic/philosophical topics, but it never states when to choose this tool over alternatives or provides any exclusions. No sibling is referenced, so the agent must infer applicability solely from the topic list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_common_questionsA

获取书法学习中常见问题的解答,帮助用户解决学习过程中的困惑。

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo问题分类:all=全部, beginner=入门, practice=练习, advanced=进阶, theory=理论, mindset=心态all

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. The verb '获取' implies a read-only retrieval operation, and the resource indicates the kind of content returned. However, it does not describe return format, category filtering behavior, or any potential side effects — though for a simple FAQ retrieval tool, the implied read-only nature is likely sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that states the action and the purpose. It is front-loaded with the core function ('获取书法学习中常见问题的解答') and contains no redundant or filler content. Every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple: one optional parameter, fully documented, with no output schema. The description sufficiently explains what the tool returns (answers to common questions) and the intended benefit. It lacks explicit return structure or usage guidance, but those are either covered by the schema or minor for this level of complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully documents the single optional 'category' parameter with its enum values and Chinese descriptions, providing 100% schema coverage. The description itself does not add parameter-specific information beyond what the schema already provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb '获取' (get/fetch) and a clear resource: '书法学习中常见问题的解答' (answers to common calligraphy learning questions). It clearly conveys what the tool does, and the resource is distinct enough from sibling tools like get_technique_guide or get_master_info. However, it does not explicitly differentiate itself from siblings or mention what it is not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when learners have questions or confusion during their calligraphy study ('帮助用户解决学习过程中的困惑'). It does not explicitly state when to prefer this tool over siblings such as query_calligraphy or get_learning_plan, nor does it provide exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_learning_planA

为用户制定个性化的书法学习计划。根据用户当前水平和目标,提供阶段性的学习建议。

ParametersJSON Schema
NameRequiredDescriptionDefault
goalNo用户的学习目标系统学习书法,提高书写水平
current_levelNo用户当前书法水平beginner
daily_minutesNo每天可用于练习的时间(分钟)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It conveys the core behavior: generating a personalized, stage-based calligraphy learning plan. However, it does not disclose whether the plan is persisted, what exact output format to expect, or any limitations of the generation, leaving some operational behavior unexplained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, focused sentences with no filler. The first sentence states the main action and object, and the second clarifies inputs and what the user receives. It is appropriately sized and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with three optional, well-documented parameters and no output schema, the description covers the purpose, input basis, and the high-level output (stage-by-stage suggestions). It could be more explicit about the plan's structure or content, but the essentials are present for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters fully. The description adds no new parameter semantics; it mentions goal and current_level but omits daily_minutes. It therefore meets the baseline but provides no extra value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb, 制定 (formulate/create), and names the resource, 个性化的书法学习计划 (personalized calligraphy learning plan), while also stating the basis (current level, goal) and output (stage-by-stage suggestions). This clearly distinguishes it from sibling info-retrieval tools such as get_technique_guide or get_master_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance about when to use this tool versus alternatives, nor does it mention any exclusions or routing conditions. It implies use when a user needs a learning plan, but it does not help an agent choose between this and related tools like get_technique_guide or get_aesthetic_insight.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_master_infoA

查询历代书法名家的信息,包括生平、代表作品、风格特点等。

ParametersJSON Schema
NameRequiredDescriptionDefault
master_nameYes书法家姓名,如:王羲之、颜真卿、欧阳询等

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral disclosure burden. It clearly indicates a read-only lookup and defines the scope of returned information, but does not describe output format, error behavior, or any other operational characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one concise sentence that immediately states the action and the key content categories. Every word is informative, with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a single fully documented parameter and no output schema, the description provides adequate context: resource scope, content types, and read-only intent. The main gap is the lack of explicit usage guidance relative to siblings, but this is minor given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully documents the only parameter, master_name, including example values. The description adds no additional parameter detail, but because schema coverage is 100%, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: '查询历代书法名家的信息' (query historical calligraphy masters' info) and enumerates the content covered (生平、代表作品、风格特点). This clearly distinguishes it from sibling tools focused on techniques, aesthetics, questions, and learning plans.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose is obvious enough that an agent can infer when to use it, and sibling names suggest alternatives. However, there is no explicit guidance about when to prefer this tool over siblings or any exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_technique_guideA

获取书法技法指导,包括执笔、运笔、笔画写法、书体特点等详细技法讲解。

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNo用户书法水平beginner
technique_typeNo技法类型:all=全部, grip=执笔方法, brushwork=运笔技法, strokes=基本笔画, styles=书体特点all

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral disclosure burden. It does communicate that the tool returns explanatory technique guidance covering several calligraphy topics, which is useful. However, it does not describe the response structure, whether the output is tailored by the level parameter, or any limitations, leaving the agent with incomplete expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that leads with the main action and resource, then lists the relevant content categories. It contains no filler, no redundant restatement of schema details, and every clause contributes to the agent's understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter retrieval tool, the description plus schema covers input selection adequately. But since there is no output schema and no stated return format, the description leaves the agent guessing about whether the result is a single text block, structured sections, or a list of techniques. This keeps it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents both parameters with enum values, defaults, and Chinese descriptions, so schema coverage is 100%. The description mostly restates the technique_type enum categories without adding further semantic nuance, so it provides no meaningful value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action (获取/obtain) and a concrete resource (书法技法指导), then expands that resource into recognizable categories: 执笔, 运笔, 笔画写法, 书体特点. This content profile clearly differentiates the tool from siblings like get_master_info and get_aesthetic_insight, so an agent can tell what domain it covers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance about when to use this tool versus alternatives such as query_calligraphy or get_learning_plan, and it mentions no exclusion conditions. An agent can infer the intended use from the name and content list, but the routing decision is left implicit rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_calligraphyA

查询书法知识,回答书法相关问题。适用于书法学习、创作、历史、审美等各方面的知识问答。

ParametersJSON Schema
NameRequiredDescriptionDefault
levelNo用户书法水平等级:beginner=初学者, intermediate=进阶者, advanced=高级者beginner
questionYes用户关于书法的问题

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral disclosure burden. It clearly conveys that this is a knowledge-query tool that answers questions, and the verb '查询' implies a read-only operation. It does not disclose output format, knowledge source limitations, or how the level parameter changes behavior, so it is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that efficiently conveys the core action, resource, and representative domains. There is no filler or redundant restatement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple question-answering tool, the basic invocation requirements are covered by the schema and description. However, there is no output schema, no explanation of how the level parameter affects the answer, and no guidance on when to use specialized sibling tools, leaving some ambiguity for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters have meaningful descriptions, including the level enum values. The tool description adds no parameter-specific details beyond the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('查询'/'回答') with a clear resource ('书法知识') and enumerates relevant domains (learning, creation, history, aesthetics). It clearly establishes this as a general calligraphy Q&A tool, though it does not explicitly contrast it with the specialized sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states that the tool applies to various calligraphy knowledge areas, providing general contextual guidance. However, it does not mention the sibling tools or give explicit criteria for when to choose this tool versus a more specialized alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv1.0.0
    • First observedget_aesthetic_insight
    • First observedget_common_questions
    • First observedget_learning_plan
    • First observedget_master_info
    • First observedget_technique_guide
    • First observedquery_calligraphy

TDQS

A3.6/5.0

Scored across 6 tools

Disambiguation3/5

The specialized tools like get_master_info, get_technique_guide, and get_aesthetic_insight are clearly distinct. However, query_calligraphy is a broad catch-all that overlaps with all of them, especially get_common_questions, making tool selection somewhat ambiguous.

Naming Consistency4/5

Five of six tools follow a consistent get_* pattern with clear noun descriptors. query_calligraphy deviates from this pattern but is still readable and understandable in context.

Tool Count5/5

Six tools is a well-scoped size for a calligraphy knowledge and learning assistant. Each specialized tool covers a meaningful aspect of the domain without unnecessary redundancy.

Completeness5/5

The tool surface covers masters, techniques, aesthetics, common questions, general queries, and personalized learning plans. For a knowledge-oriented MCP server, this provides comprehensive coverage with no obvious dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables traditional Chinese fortune-telling through BaZi (Four Pillars) analysis, including solar/lunar date conversion, Five Element balance calculations, Ten Gods deduction, and destiny interpretation for metaphysics applications.
    13 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides Chinese holiday information, lunar calendar conversion, traditional festivals, 24 solar terms, and BaZi (Eight Characters) calculations for AI assistants to accurately handle Chinese calendar queries and date conversions.
    3
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides Chinese traditional calendar functions including BaZi calculation, solar-lunar calendar conversion, Huangli almanac queries, daily fortune readings, 24 solar terms, and Wu Xing (Five Elements) analysis.
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables traditional Chinese metaphysics tools like Bazi, Ziwei, and Qimen via MCP, integrating AI analysis for divination and fortune-telling.
    558
    -