语言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:
javadocAPI文件 - 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许可证
