语言模型上下文协议服务器

一个用于语言分析的模型上下文协议服务器,支持实时代码分析、语法检查和文档读取。

  • by ivikasavnish
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ivikasavnish/language-mcp

使用说明

语言MCP

用于语言分析的模型上下文协议(MCP)服务器,具有后台AST处理、linting和文档读取功能。此服务器作为实时HTTP服务运行,并自动实时分析代码更改。

特性

  • 背景分析:AST分析、linting和文档读取在后台自动运行
  • 文件监视:自动检测和分析文件更改
  • 多语言支持:检测和分析Python、Go、Java、JavaScript、TypeScript、C、C++、C#、Ruby、Rust、Swift、Kotlin、PHP
  • 特定语言文档:访问godoc(Go)、javadoc(Java)、jsdoc(JavaScript/TypeScript)、pydoc(Python)
  • API规范支持:检测并解析Swagger/OpenAPI规范
  • 符号提取:从代码库中获取函数、类、方法和变量
  • 相关性分析:查看导入依赖关系并构建依赖关系树
  • 代码Linting:内置有样式检查、复杂性分析和类型提示建议的过梁
  • 代码提示功能:获取改进建议,包括缺少类型注释
  • 文档解析:解析和搜索Markdown和RST文档文件
  • HTTP传输:作为支持SSE的实时HTTP服务器运行

安装

# Clone the repository
git clone https://github.com/ivikasavnish/language-mcp.git
cd language-mcp

# Install dependencies
pip install -e .

# Or install with development dependencies
pip install -e ".[dev]"

用法

启动服务器

# Start the server on default port 8080
language-mcp

# Start on a custom port
language-mcp --port 9000

# Start with initial projects
language-mcp --project /path/to/project1 --project /path/to/project2

可用工具

服务器运行后,您可以使用以下MCP工具:

项目管理

add_project

添加要分析的项目目录。分析在后台自动运行。

{
  "path": "/path/to/project",  // Use "." for current directory
  "name": "my-project"         // Optional project name
}
remove_project

从分析中删除项目。

{
  "path": "/path/to/project"
}
list_projects

列出所有已注册的项目及其分析状态。

refresh_project

强制对项目进行全面重新分析。

{
  "path": "/path/to/project"
}

符号分析

get_symbols

从项目中获取所有符号(函数、类、变量)。

{
  "path": "/path/to/project",
  "kind": "function",     // Optional: filter by kind (function, class, method, variable, all)
  "search": "user"        // Optional: search term to filter symbols
}
get_symbol_info

获取特定符号的详细信息。

{
  "path": "/path/to/project",
  "name": "MyClass"
}

相关性分析

get_dependencies

从项目中获取所有导入依赖项。

{
  "path": "/path/to/project",
  "external_only": true   // Optional: only show external dependencies
}
get_dependency_tree

获取显示文件和模块之间关系的依赖关系树。

{
  "path": "/path/to/project"
}

棉绒和编码质量

get_diagnostics

获取项目的linting诊断(错误、警告、提示)。

{
  "path": "/path/to/project",
  "severity": "warning",  // Optional: filter by severity (error, warning, info, hint, all)
  "file": "src/main.py"   // Optional: filter for specific file
}
get_lint_summary

获取按严重程度和来源分组的所有linting问题的摘要。

{
  "path": "/path/to/project"
}
lint_file

在特定文件上运行linter并获取诊断。

{
  "file": "/path/to/file.py"
}
get_code_hints

获取代码改进提示和建议(缺少类型注释、最佳实践)。

{
  "path": "/path/to/project",
  "file": "src/main.py"   // Optional: filter for specific file
}

语言检测和文档

detect_languages

检测项目中使用的编程语言并获取统计数据。

{
  "path": "/path/to/project"
}

返回语言统计信息,包括文件计数、百分比和可用的文档工具。

get_language_docs

获取项目的特定语言文档(godoc、javadoc、jsdoc、pydoc)。

{
  "path": "/path/to/project",
  "language": "Go"  // e.g., "Go", "Java", "Python", "JavaScript", "TypeScript"
}

支持:

  • 去: godoc / go doc 用于包装文件
  • Java: javadoc API文件
  • JavaScript/TypeScript: jsdoc 用于内联文档
  • python: pydoc 用于模块文档
get_api_specs

获取项目中检测到的API规范文件(Swagger/OpenAPI)。

{
  "path": "/path/to/project"
}
parse_api_spec

解析API规范文件并提取端点和元数据。

{
  "file": "/path/to/swagger.json"
}

返回解析后的信息,包括端点、描述和操作ID。

文档

get_docs

获取文档文件及其结构。

{
  "path": "/path/to/project",
  "file": "README.md"     // Optional: get specific file content
}
search_docs

在文档中搜索查询字符串。

{
  "path": "/path/to/project",
  "query": "installation",
  "case_sensitive": false
}

支持的语言

服务器可以检测并提供以下语言的上下文信息:

语言 扩展 文档工具 API规范
Python .py、.pyw、.pyi pydoc、斯芬克斯 -
加油,加油,大摇大摆
Java .Java javadoc swaggle
JavaScript .js、.jsx、.mjs、.cjs jsdoc swagger、openapi
TypeScript .ts、.tsx typedoc、jsdoc swagger、openapi
C .C,.h doxygen -
C++ .cpp、.cc、.cxx、.hpp、.hh、.hxx doxygen -
C# .cs docfx,沙堡 swaggle
鲁比 .rb rdoc,码 -
Rust .rs rustdoc -
轻快 轻快 爵士 -
科特林 .kt,.kts dokka -
PHP .PHP phpdoc swaggle

过梁检查

内置过梁执行以下检查:

代码 严重性 描述
E001 错误 语法错误
W001 警告 未使用的导入
W191 信息 缩进标签
W291 信息 尾随空格
E501 信息 行太长(>120个字符)
E722 警告 除条款外无其他
C901 警告 函数参数太多(>7)
C902 信息 函数太长(>50行)
C903 警告 嵌套过多(深度>4)
T001 提示 缺少返回类型注释
T002 提示 缺少参数类型注释

MCP配置

添加到您的MCP设置中(例如,在VS Code或Claude Desktop中):

{
  "mcpServers": {
    "language-mcp": {
      "command": "language-mcp",
      "args": ["--port", "8080"],
      "env": {}
    }
  }
}

或者对于HTTP/SSE传输:

{
  "mcpServers": {
    "language-mcp": {
      "url": "http://localhost:8080/sse"
    }
  }
}

API终点

  • GET /health -健康检查端点
  • GET /sse -MCP通信的SSE端点
  • POST /messages/ -消息处理端点

发展

# Install development dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Format code
black src tests

# Lint code
ruff check src tests

建筑

┌─────────────────────────────────────────────────────────────┐
│                    Language MCP Server                       │
├─────────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐  │
│  │   HTTP/SSE  │  │    Tools    │  │  Background Worker  │  │
│  │  Transport  │◄─┤   Handler   │◄─┤                     │  │
│  └─────────────┘  └─────────────┘  │  ┌───────────────┐  │  │
│                                     │  │  File Watcher │  │  │
│                                     │  └───────────────┘  │  │
│                                     │                     │  │
│                                     │  ┌───────────────┐  │  │
│                                     │  │ AST Analyzer  │  │  │
│                                     │  └───────────────┘  │  │
│                                     │                     │  │
│                                     │  ┌───────────────┐  │  │
│                                     │  │    Linter     │  │  │
│                                     │  └───────────────┘  │  │
│                                     │                     │  │
│                                     │  ┌───────────────┐  │  │
│                                     │  │  Doc Reader   │  │  │
│                                     │  └───────────────┘  │  │
│                                     └─────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

许可证

MIT许可证